diff --git a/dlls/jscript/lex.c b/dlls/jscript/lex.c index bfa3568ae39..88fed074300 100644 --- a/dlls/jscript/lex.c +++ b/dlls/jscript/lex.c @@ -526,7 +526,7 @@ int parser_lex(void *lval, parser_ctx_t *ctx) do { skip_spaces(ctx); if(ctx->ptr == ctx->end) - return 0; + return tEOF; }while(skip_comment(ctx) || skip_html_comment(ctx)); if(isalphaW(*ctx->ptr)) { diff --git a/dlls/jscript/parser.y b/dlls/jscript/parser.y index 47fcc34e527..df7a0704557 100644 --- a/dlls/jscript/parser.y +++ b/dlls/jscript/parser.y @@ -180,6 +180,7 @@ static source_elements_t *source_elements_add_statement(source_elements_t*,state %token tAssignOper tEqOper tShiftOper tRelOper %token tNumericLiteral %token tStringLiteral +%token tEOF %type SourceElements %type FunctionBody @@ -253,7 +254,7 @@ static source_elements_t *source_elements_add_statement(source_elements_t*,state /* ECMA-262 3rd Edition 14 */ Program - : SourceElements HtmlComment + : SourceElements HtmlComment tEOF { program_parsed(ctx, $1); } HtmlComment diff --git a/dlls/jscript/tests/api.js b/dlls/jscript/tests/api.js index 4b9f16035d1..6c62276bb3b 100644 --- a/dlls/jscript/tests/api.js +++ b/dlls/jscript/tests/api.js @@ -1985,6 +1985,7 @@ testSyntaxError("for(i=0;i<10", "E_SEMICOLON"); testSyntaxError("while(", "E_SYNTAX_ERROR"); testSyntaxError("if(", "E_SYNTAX_ERROR"); testSyntaxError("'unterminated", "E_UNTERMINATED_STR"); +testSyntaxError("*", "E_SYNTAX_ERROR"); // ReferenceError tests testException(function() {test = function() {}}, "E_ILLEGAL_ASSIGN");