mirror of https://github.com/rusefi/lua.git
bug: error message for `%a' gave wrong line number
This commit is contained in:
parent
654b16e83a
commit
a3d03ff6b6
6
bugs
6
bugs
|
@ -264,3 +264,9 @@ Fri Feb 2 14:06:40 EDT 2001
|
||||||
Tue Feb 6 11:57:13 EDT 2001
|
Tue Feb 6 11:57:13 EDT 2001
|
||||||
>> ESC (which starts precompiled code) in C is \33, not \27
|
>> ESC (which starts precompiled code) in C is \33, not \27
|
||||||
(by Edgar Toernig and lhf; since 4.0b)
|
(by Edgar Toernig and lhf; since 4.0b)
|
||||||
|
|
||||||
|
** lparser.c
|
||||||
|
Tue Jul 10 16:59:18 EST 2001
|
||||||
|
>> error message for `%a' gave wrong line number
|
||||||
|
(by Leonardo Constantino; since 4.0)
|
||||||
|
|
||||||
|
|
21
lparser.c
21
lparser.c
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
** $Id: lparser.c,v 1.150 2001/06/20 21:07:57 roberto Exp roberto $
|
** $Id: lparser.c,v 1.151 2001/06/28 14:57:17 roberto Exp roberto $
|
||||||
** LL(1) Parser and code generator for Lua
|
** LL(1) Parser and code generator for Lua
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
@ -121,11 +121,8 @@ static void check_match (LexState *ls, int what, int who, int where) {
|
||||||
|
|
||||||
|
|
||||||
static TString *str_checkname (LexState *ls) {
|
static TString *str_checkname (LexState *ls) {
|
||||||
TString *ts;
|
|
||||||
check_condition(ls, (ls->t.token == TK_NAME), l_s("<name> expected"));
|
check_condition(ls, (ls->t.token == TK_NAME), l_s("<name> expected"));
|
||||||
ts = ls->t.seminfo.ts;
|
return ls->t.seminfo.ts;
|
||||||
next(ls);
|
|
||||||
return ts;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -141,7 +138,10 @@ static void codestring (LexState *ls, expdesc *e, TString *s) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define checkname(ls,e) codestring(ls,e,str_checkname(ls))
|
static void checkname(LexState *ls, expdesc *e) {
|
||||||
|
codestring(ls, e, str_checkname(ls));
|
||||||
|
next(ls);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int luaI_registerlocalvar (LexState *ls, TString *varname) {
|
static int luaI_registerlocalvar (LexState *ls, TString *varname) {
|
||||||
|
@ -641,11 +641,13 @@ static void primaryexp (LexState *ls, expdesc *v) {
|
||||||
}
|
}
|
||||||
case TK_NAME: {
|
case TK_NAME: {
|
||||||
singlevar(ls, str_checkname(ls), v);
|
singlevar(ls, str_checkname(ls), v);
|
||||||
|
next(ls);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
case l_c('%'): {
|
case l_c('%'): {
|
||||||
next(ls); /* skip `%' */
|
next(ls); /* skip `%' */
|
||||||
codeupvalue(ls, v, str_checkname(ls));
|
codeupvalue(ls, v, str_checkname(ls));
|
||||||
|
next(ls);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
|
@ -960,6 +962,7 @@ static void forlist (LexState *ls, TString *indexname) {
|
||||||
TString *valname;
|
TString *valname;
|
||||||
check(ls, l_c(','));
|
check(ls, l_c(','));
|
||||||
valname = str_checkname(ls);
|
valname = str_checkname(ls);
|
||||||
|
next(ls); /* skip var name */
|
||||||
check(ls, TK_IN);
|
check(ls, TK_IN);
|
||||||
exp1(ls); /* table */
|
exp1(ls); /* table */
|
||||||
new_localvarstr(ls, l_s("(table)"), 0);
|
new_localvarstr(ls, l_s("(table)"), 0);
|
||||||
|
@ -979,6 +982,7 @@ static void forstat (LexState *ls, int line) {
|
||||||
enterbreak(fs, &bl);
|
enterbreak(fs, &bl);
|
||||||
next(ls); /* skip `for' */
|
next(ls); /* skip `for' */
|
||||||
varname = str_checkname(ls); /* first variable name */
|
varname = str_checkname(ls); /* first variable name */
|
||||||
|
next(ls); /* skip var name */
|
||||||
switch (ls->t.token) {
|
switch (ls->t.token) {
|
||||||
case l_c('='): fornum(ls, varname); break;
|
case l_c('='): fornum(ls, varname); break;
|
||||||
case l_c(','): forlist(ls, varname); break;
|
case l_c(','): forlist(ls, varname); break;
|
||||||
|
@ -1030,6 +1034,7 @@ static void localstat (LexState *ls) {
|
||||||
do {
|
do {
|
||||||
next(ls); /* skip LOCAL or `,' */
|
next(ls); /* skip LOCAL or `,' */
|
||||||
new_localvar(ls, str_checkname(ls), nvars++);
|
new_localvar(ls, str_checkname(ls), nvars++);
|
||||||
|
next(ls); /* skip var name */
|
||||||
} while (ls->t.token == l_c(','));
|
} while (ls->t.token == l_c(','));
|
||||||
if (optional(ls, l_c('=')))
|
if (optional(ls, l_c('=')))
|
||||||
nexps = explist1(ls, &e);
|
nexps = explist1(ls, &e);
|
||||||
|
@ -1046,6 +1051,7 @@ static int funcname (LexState *ls, expdesc *v) {
|
||||||
/* funcname -> NAME {field} [`:' NAME] */
|
/* funcname -> NAME {field} [`:' NAME] */
|
||||||
int needself = 0;
|
int needself = 0;
|
||||||
singlevar(ls, str_checkname(ls), v);
|
singlevar(ls, str_checkname(ls), v);
|
||||||
|
next(ls); /* skip var name */
|
||||||
while (ls->t.token == l_c('.')) {
|
while (ls->t.token == l_c('.')) {
|
||||||
luaY_field(ls, v);
|
luaY_field(ls, v);
|
||||||
}
|
}
|
||||||
|
@ -1188,10 +1194,11 @@ static void parlist (LexState *ls) {
|
||||||
if (ls->t.token != l_c(')')) { /* is `parlist' not empty? */
|
if (ls->t.token != l_c(')')) { /* is `parlist' not empty? */
|
||||||
do {
|
do {
|
||||||
switch (ls->t.token) {
|
switch (ls->t.token) {
|
||||||
case TK_DOTS: next(ls); dots = 1; break;
|
case TK_DOTS: dots = 1; break;
|
||||||
case TK_NAME: new_localvar(ls, str_checkname(ls), nparams++); break;
|
case TK_NAME: new_localvar(ls, str_checkname(ls), nparams++); break;
|
||||||
default: luaK_error(ls, l_s("<name> or `...' expected"));
|
default: luaK_error(ls, l_s("<name> or `...' expected"));
|
||||||
}
|
}
|
||||||
|
next(ls);
|
||||||
} while (!dots && optional(ls, l_c(',')));
|
} while (!dots && optional(ls, l_c(',')));
|
||||||
}
|
}
|
||||||
code_params(ls, nparams, dots);
|
code_params(ls, nparams, dots);
|
||||||
|
|
Loading…
Reference in New Issue