diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | Src/parse.c | 4 | ||||
-rw-r--r-- | Test/A01grammar.ztst | 7 |
3 files changed, 17 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog index 6a8c06afc..fb30a1b91 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-07-06 Peter Stephenson <p.w.stephenson@ntlworld.com> + + * 27092: Src/parse.c, Test/A01grammar.ztst: "if" didn't check + for missing clauses so a missing then-clause wasn't spotted + as an error. + 2009-07-05 Peter Stephenson <p.w.stephenson@ntlworld.com> * Brendan Cully: 27088: Completion/Unix/Command/_hg, @@ -11904,5 +11910,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.4727 $ +* $Revision: 1.4728 $ ***************************************************** diff --git a/Src/parse.c b/Src/parse.c index f0a66ea12..89ef68688 100644 --- a/Src/parse.c +++ b/Src/parse.c @@ -1199,6 +1199,10 @@ par_if(int *complex) type = (xtok == IF ? WC_IF_IF : WC_IF_ELIF); par_save_list(complex); incmdpos = 1; + if (tok == ENDINPUT) { + cmdpop(); + YYERRORV(oecused); + } while (tok == SEPER) zshlex(); xtok = FI; diff --git a/Test/A01grammar.ztst b/Test/A01grammar.ztst index 8f4ed2c19..e976c8356 100644 --- a/Test/A01grammar.ztst +++ b/Test/A01grammar.ztst @@ -378,10 +378,15 @@ >true-2 >false - if true; print true + if { true } print true + if { false } print false 0:Short form of `if' >true + eval "if" +1:Short form of `if' can't be too short +?(eval):1: parse error near `if' + for name ( word1 word2 word3 ) print $name 0:Form of `for' with parentheses. >word1 |