From 4f58104981a7c5f0234c7fa2e7470a28e5d0e85b Mon Sep 17 00:00:00 2001 From: Andrey Shitov Date: Mon, 13 Jul 2015 20:58:16 +0300 Subject: [PATCH] Fix checking of semicolons in expression statements. JerryScript-DCO-1.0-Signed-off-by: Andrey Shitov a.shitov@samsung.com --- jerry-core/parser/js/parser.cpp | 16 +++------------- tests/unit/test-api.cpp | 2 +- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/jerry-core/parser/js/parser.cpp b/jerry-core/parser/js/parser.cpp index 91900067e..897c6f323 100644 --- a/jerry-core/parser/js/parser.cpp +++ b/jerry-core/parser/js/parser.cpp @@ -2561,7 +2561,7 @@ insert_semicolon (void) { lexer_save_token (tok); } - else if (!token_is (TOK_SEMICOLON)) + else if (!token_is (TOK_SEMICOLON) && !token_is (TOK_EOF)) { EMIT_ERROR ("Expected either ';' or newline token"); } @@ -2847,23 +2847,13 @@ parse_statement (jsp_label_t *outermost_stmt_label_p) /**< outermost (first) lab tok = temp; operand expr = parse_expression (true, JSP_EVAL_RET_STORE_DUMP); dump_assignment_of_lhs_if_literal (expr); - skip_newlines (); - if (!token_is (TOK_SEMICOLON)) - { - lexer_save_token (tok); - } - return; + insert_semicolon (); } } else { parse_expression (true, JSP_EVAL_RET_STORE_DUMP); - skip_newlines (); - if (!token_is (TOK_SEMICOLON)) - { - lexer_save_token (tok); - } - return; + insert_semicolon (); } } diff --git a/tests/unit/test-api.cpp b/tests/unit/test-api.cpp index 0b1c85814..c299e7d14 100644 --- a/tests/unit/test-api.cpp +++ b/tests/unit/test-api.cpp @@ -31,7 +31,7 @@ const char *test_source = ( "this.foo = f; " "this.bar = function (a) { " "return a + t; " - "} " + "}; " "function A () { " "this.t = 12; " "} "