diff --git a/dlls/jscript/parser.y b/dlls/jscript/parser.y index 57f07445bcb..d4b49089424 100644 --- a/dlls/jscript/parser.y +++ b/dlls/jscript/parser.y @@ -264,8 +264,6 @@ HtmlComment /* ECMA-262 3rd Edition 14 */ SourceElements : /* empty */ { $$ = new_source_elements(ctx); } - | SourceElements FunctionExpression - { $$ = $1; } | SourceElements Statement { $$ = source_elements_add_statement($1, $2); } @@ -297,6 +295,7 @@ Statement : Block { $$ = $1; } | VariableStatement { $$ = $1; } | EmptyStatement { $$ = $1; } + | FunctionExpression { $$ = new_empty_statement(ctx); } /* FIXME: return NULL */ | ExpressionStatement { $$ = $1; } | IfStatement { $$ = $1; } | IterationStatement { $$ = $1; } diff --git a/dlls/jscript/tests/lang.js b/dlls/jscript/tests/lang.js index b6458d426e8..eed0589ecb4 100644 --- a/dlls/jscript/tests/lang.js +++ b/dlls/jscript/tests/lang.js @@ -953,6 +953,12 @@ function do_test() {} function nosemicolon() {} nosemicolon(); function () {} nosemicolon(); +if(false) { + function in_if_false() { return true; } ok(false, "!?"); +} + +ok(in_if_false(), "in_if_false failed"); + ok(typeof(doesnotexist) === "undefined", "typeof(doesnotexist) = " + typeof(doesnotexist)); (function() { newValue = 1; })();