From cfdebfbc5361ee9779f39e076afef7c7474fb3de Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Tue, 21 Dec 1999 15:31:28 -0200 Subject: debug information for parameters use line 0 for them (as they are always visible). --- lparser.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) (limited to 'lparser.c') diff --git a/lparser.c b/lparser.c index aa50a87b..84c717ff 100644 --- a/lparser.c +++ b/lparser.c @@ -1,5 +1,5 @@ /* -** $Id: lparser.c,v 1.46 1999/12/07 11:36:16 roberto Exp roberto $ +** $Id: lparser.c,v 1.47 1999/12/14 18:42:57 roberto Exp roberto $ ** LL(1) Parser and code generator for Lua ** See Copyright Notice in lua.h */ @@ -333,23 +333,21 @@ static void store_localvar (LexState *ls, TaggedString *name, int n) { FuncState *fs = ls->fs; checklimit(ls, fs->nlocalvar+n+1, MAXLOCALS, "local variables"); fs->localvar[fs->nlocalvar+n] = name; - luaI_registerlocalvar(ls, name, ls->linenumber); } -static void add_localvar (LexState *ls, TaggedString *name) { - store_localvar(ls, name, 0); - ls->fs->nlocalvar++; +static void adjustlocalvars (LexState *ls, int nvars, int line) { + FuncState *fs = ls->fs; + int i; + fs->nlocalvar += nvars; + for (i=fs->nlocalvar-nvars; inlocalvar; i++) + luaI_registerlocalvar(ls, fs->localvar[i], line); } -static void correctvarlines (LexState *ls, int nvars) { - FuncState *fs = ls->fs; - if (fs->nvars != -1) { /* debug information? */ - for (; nvars; nvars--) { /* correct line information */ - fs->f->locvars[fs->nvars-nvars].line = fs->lastsetline; - } - } +static void add_localvar (LexState *ls, TaggedString *name) { + store_localvar(ls, name, 0); + adjustlocalvars(ls, 1, 0); } @@ -454,7 +452,7 @@ static void adjust_mult_assign (LexState *ls, int nvars, listdesc *d) { static void code_args (LexState *ls, int nparams, int dots) { FuncState *fs = ls->fs; - fs->nlocalvar += nparams; /* `self' may already be there */ + adjustlocalvars(ls, nparams, 0); checklimit(ls, fs->nlocalvar, MAXPARAMS, "parameters"); nparams = fs->nlocalvar; if (!dots) { @@ -760,8 +758,7 @@ static void localstat (LexState *ls) { next(ls); nvars = localnamelist(ls); decinit(ls, &d); - fs->nlocalvar += nvars; - correctvarlines(ls, nvars); /* vars will be alive only after decinit */ + adjustlocalvars(ls, nvars, fs->lastsetline); adjust_mult_assign(ls, nvars, &d); } -- cgit v1.2.3-55-g6feb