From 3ec6948bae44bc54273c897e96c0f6045641da91 Mon Sep 17 00:00:00 2001 From: Ruben Ayrapetyan Date: Wed, 3 Jun 2015 16:38:56 +0300 Subject: [PATCH] Fix parsing of 'default' switch-case label in 'parse_switch_statement'. JerryScript-DCO-1.0-Signed-off-by: Ruben Ayrapetyan r.ayrapetyan@samsung.com --- jerry-core/parser/js/parser.cpp | 9 ++------- tests/jerry/switch_case.js | 11 +++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/jerry-core/parser/js/parser.cpp b/jerry-core/parser/js/parser.cpp index 788fb9573c..13493a4d24 100644 --- a/jerry-core/parser/js/parser.cpp +++ b/jerry-core/parser/js/parser.cpp @@ -2091,7 +2091,8 @@ parse_switch_statement (void) { token_after_newlines_must_be (TOK_COLON); skip_newlines (); - if (is_keyword (KW_CASE) || is_keyword (KW_DEFAULT)) + rewrite_default_clause (); + if (is_keyword (KW_CASE)) { continue; } @@ -2104,12 +2105,6 @@ parse_switch_statement (void) skip_token (); pop_nesting (NESTING_SWITCH); - // Finally, dump 'finally' jump - if (was_default) - { - rewrite_default_clause (); - } - dumper_set_break_target (); rewrite_breaks (); finish_dumping_case_clauses (); diff --git a/tests/jerry/switch_case.js b/tests/jerry/switch_case.js index 35b0f92976..a74197ea55 100644 --- a/tests/jerry/switch_case.js +++ b/tests/jerry/switch_case.js @@ -48,6 +48,17 @@ switch (a) { assert (0); } +executed_case = ''; +switch (a) { + default: + executed_case = 'default'; + break; + case 2: + executed_case = 'case 2'; + break; +} +assert (executed_case === 'default'); + var counter = 0; switch ("var") {