Module: wine Branch: master Commit: 20b2d057d239a4f2eb8f6b0374d1183c322aaeff URL: http://source.winehq.org/git/wine.git/?a=commit;h=20b2d057d239a4f2eb8f6b0374...
Author: Jacek Caban jacek@codeweavers.com Date: Tue Sep 18 12:25:14 2012 +0200
vbscript: Fixed parsing if statements with empty body.
---
dlls/vbscript/parser.y | 6 +++--- dlls/vbscript/tests/lang.vbs | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/dlls/vbscript/parser.y b/dlls/vbscript/parser.y index baac315..d5a9934 100644 --- a/dlls/vbscript/parser.y +++ b/dlls/vbscript/parser.y @@ -228,7 +228,7 @@ Step_opt | tSTEP Expression { $$ = $2; }
IfStatement - : tIF Expression tTHEN tNL StatementsNl ElseIfs_opt Else_opt tEND tIF + : tIF Expression tTHEN tNL StatementsNl_opt ElseIfs_opt Else_opt tEND tIF { $$ = new_if_statement(ctx, $2, $5, $6, $7); CHECK_ERROR; } | tIF Expression tTHEN Statement { $$ = new_if_statement(ctx, $2, $4, NULL, NULL); CHECK_ERROR; } | tIF Expression tTHEN Statement tELSE Statement EndIf_opt @@ -247,12 +247,12 @@ ElseIfs | ElseIf ElseIfs { $1->next = $2; $$ = $1; }
ElseIf - : tELSEIF Expression tTHEN tNL StatementsNl + : tELSEIF Expression tTHEN tNL StatementsNl_opt { $$ = new_elseif_decl(ctx, $2, $5); }
Else_opt : /* empty */ { $$ = NULL; } - | tELSE tNL StatementsNl { $$ = $3; } + | tELSE tNL StatementsNl_opt { $$ = $3; }
CaseClausules : /* empty */ { $$ = NULL; } diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs index 90d5304..fd93df6 100644 --- a/dlls/vbscript/tests/lang.vbs +++ b/dlls/vbscript/tests/lang.vbs @@ -290,6 +290,22 @@ while not (x and y) wend call ok((x and y), "x or y is false after while")
+if false then +' empty body +end if + +if false then + x = false +elseif true then +' empty body +end if + +if false then + x = false +else +' empty body +end if + while false wend