Bug 585, assignment to multiple l-values.

Disambiguate multiple-values from function invocation. Will merge
to release branch after testing.
This commit is contained in:
James Turner 2013-07-23 09:44:53 +01:00
parent 3cb2241b1d
commit c7a5d15e7a

View File

@ -550,7 +550,10 @@ static void genAssign(struct Parser* p, struct Token* t)
if(parListLen(lv) || (lv->type == TOK_VAR && parListLen(RIGHT(lv)))) {
if(lv->type == TOK_VAR) { lv = RIGHT(lv); var = 1; }
len = parListLen(lv);
if(rv->type == TOK_LPAR) {
// http://code.google.com/p/flightgear-bugs/issues/detail?id=585
// TOK_LPAR can mean multi-value assignment or function call,
// disambigaute by checking the rule of the token
if(rv->type == TOK_LPAR && rv->rule != PREC_SUFFIX) {
if(len != parListLen(rv))
naParseError(p, "bad assignment count", rv->line);
genCommaList(p, LEFT(rv));