[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Wrong stack line numbering on error()
- From: Thadeu de Paula <arkt8@...>
- Date: Sun, 20 Aug 2023 20:57:18 +0000
As I said, I can manage to repeat the variable each line.
A thing that we can live, yes.
A thing that is expected, no.
I can comprehend the statements, but being not one function call, but distinct ones, the correct line where a call tooks place should be considered or the trace has no meaning. Not less not more. We need to put things as they are, not liveable undocumented workarounds.
Btw, I found interesting to share this with the official Lua group as something that is --not documented--, that changed somewhere in past and on critical systems may pose some concern.
By now I found a better way to workaround this, that is error reporting using debug.getinfo(2).currentline.
_________________
Thadeu de Paula
https://codeberg.org/waxlab
https://codeberg.org/arkt8
------- Original Message -------
Em domingo, 20 de agosto de 2023 às 14:38, Francisco Olarte <folarte@peoplecall.com> escreveu:
> Hi Thadeu
>
> On Sun, 20 Aug 2023 at 15:27, Thadeu de Paula arkt8@proton.me wrote:
>
> ...
>
> > I'm testing it against Lua from versions 5.1 to 5.4 but the call stack is inconsistent in newer versions while Lua 5.1 is showing the expected stack.
>
>
> I think you are expecting too much....
>
> > check(list) -- line 18
> > :check('a')
> > :check('b')
> > :check('c') -- line 21
>
>
> This is a multiline statement, given my experience with
> compilers/interpreters I would expect any line between 18 and 21,
> normally 18 or 21 ( this has happened to me, particularly with
> compilation errors, in several language which allow multiline
> statements ).
>
> > It is expected that the call to ":check('c')" throws an error. This call is on line 21.
>
>
> Lua compiles, I do not know if it tracks every line number, but I
> suspect it just tracks a line number per statement, as it does not
> seem to be specified it is free to track the last or the first or
> anything in between. You could thighten the language specification,
> but when this kind of things are a problem you normally just do
>
> do
> local x = check(list)
> x = x:check(a)
> x = x:check(b)
> x = x:check(c)
> end
>
> To get an accurate trace. Using not too defined functionality ( the
> traceback contents ) coupled with multiline statements is generally
> asking for trouble in any language.
>
> Francisco Olarte.