From f43022eec0351406ecdafdf26eeebb488d5a1773 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Fri, 17 Jul 2009 20:32:33 +0000 Subject: users/14240: assignment before a function definition is an error --- Src/parse.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'Src/parse.c') diff --git a/Src/parse.c b/Src/parse.c index 89ef68688..105312f6e 100644 --- a/Src/parse.c +++ b/Src/parse.c @@ -1546,7 +1546,7 @@ static int par_simple(int *complex, int nr) { int oecused = ecused, isnull = 1, r, argc = 0, p, isfunc = 0, sr = 0; - int c = *complex, nrediradd; + int c = *complex, nrediradd, assignments = 0; r = ecused; for (;;) { @@ -1586,6 +1586,7 @@ par_simple(int *complex, int nr) ecstr(name); ecstr(str); isnull = 0; + assignments = 1; } else if (tok == ENVARRAY) { int oldcmdpos = incmdpos, n, type2; @@ -1606,6 +1607,7 @@ par_simple(int *complex, int nr) YYERROR(oecused); incmdpos = oldcmdpos; isnull = 0; + assignments = 1; } else break; zshlex(); @@ -1667,8 +1669,12 @@ par_simple(int *complex, int nr) zlong oldlineno = lineno; int onp, so, oecssub = ecssub; + /* Error if too many function definitions at once */ if (!isset(MULTIFUNCDEF) && argc > 1) YYERROR(oecused); + /* Error if preceding assignments */ + if (assignments) + YYERROR(oecused); *complex = c; lineno = 0; -- cgit 1.4.1