]> git.mxchange.org Git - simgear.git/commitdiff
Bug 585, assignment to multiple l-values.
authorJames Turner <zakalawe@mac.com>
Tue, 23 Jul 2013 08:44:53 +0000 (09:44 +0100)
committerJames Turner <zakalawe@mac.com>
Tue, 23 Jul 2013 08:45:22 +0000 (09:45 +0100)
Disambiguate multiple-values from function invocation. Will merge
to release branch after testing.

simgear/nasal/codegen.c

index d8b701b6940a19904a458421da08f714a92caf16..fa2ddc22495fdb9be1a98d45ad83710b455e0aa7 100644 (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));