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") {