From 4870550c8a4d1a87bd3bf692de72bfd0012c7c31 Mon Sep 17 00:00:00 2001 From: Ruben Ayrapetyan Date: Tue, 30 Jun 2015 14:33:48 +0300 Subject: [PATCH] Fix false-positive unexpected EOF in preparse_scope. JerryScript-DCO-1.0-Signed-off-by: Ruben Ayrapetyan r.ayrapetyan@samsung.com --- jerry-core/parser/js/parser.cpp | 13 +++++++++++++ tests/jerry/var-decl.js | 3 +++ 2 files changed, 16 insertions(+) diff --git a/jerry-core/parser/js/parser.cpp b/jerry-core/parser/js/parser.cpp index ff9767d8d..e721453f3 100644 --- a/jerry-core/parser/js/parser.cpp +++ b/jerry-core/parser/js/parser.cpp @@ -2879,6 +2879,12 @@ preparse_scope (bool is_global) size_t nesting_level = 0; while (nesting_level > 0 || !token_is (end_tt)) { + /* + * FIXME: + * Remove preparse_scope; move variable declaration search to main pass of parser. + * When byte-code and scope storages would be introduced, move variable declarations + * from byte-code to scope descriptor. + */ if (token_is (TOK_NAME)) { if (lit_literal_equal_type_cstr (lit_get_literal_by_cp (token_data_as_lit_cp ()), "arguments")) @@ -2933,6 +2939,13 @@ preparse_scope (bool is_global) { break; } + else if (token_is (TOK_CLOSE_BRACE)) + { + /* the '}' would be handled during next iteration, reducing nesting level counter */ + is_in_var_declaration_list = false; + + break; + } skip_token (); } diff --git a/tests/jerry/var-decl.js b/tests/jerry/var-decl.js index 7722f5745..03ddeaf9a 100644 --- a/tests/jerry/var-decl.js +++ b/tests/jerry/var-decl.js @@ -18,6 +18,7 @@ assert (z === undefined); assert (i === undefined); assert (j === undefined); assert (q === undefined); +assert (v === undefined); eval ('var n'); eval ('var m = 1'); @@ -46,3 +47,5 @@ for (var i, j = function () {var p;}; i === undefined; i = null) for (var q in {}) { } + +{ var v = 1 }