Skip to content

Commit 3ec6948

Browse files
Fix parsing of 'default' switch-case label in 'parse_switch_statement'.
JerryScript-DCO-1.0-Signed-off-by: Ruben Ayrapetyan [email protected]
1 parent 4547b0f commit 3ec6948

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

jerry-core/parser/js/parser.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2091,7 +2091,8 @@ parse_switch_statement (void)
20912091
{
20922092
token_after_newlines_must_be (TOK_COLON);
20932093
skip_newlines ();
2094-
if (is_keyword (KW_CASE) || is_keyword (KW_DEFAULT))
2094+
rewrite_default_clause ();
2095+
if (is_keyword (KW_CASE))
20952096
{
20962097
continue;
20972098
}
@@ -2104,12 +2105,6 @@ parse_switch_statement (void)
21042105
skip_token ();
21052106
pop_nesting (NESTING_SWITCH);
21062107

2107-
// Finally, dump 'finally' jump
2108-
if (was_default)
2109-
{
2110-
rewrite_default_clause ();
2111-
}
2112-
21132108
dumper_set_break_target ();
21142109
rewrite_breaks ();
21152110
finish_dumping_case_clauses ();

tests/jerry/switch_case.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,17 @@ switch (a) {
4848
assert (0);
4949
}
5050

51+
executed_case = '';
52+
switch (a) {
53+
default:
54+
executed_case = 'default';
55+
break;
56+
case 2:
57+
executed_case = 'case 2';
58+
break;
59+
}
60+
assert (executed_case === 'default');
61+
5162
var counter = 0;
5263

5364
switch ("var") {

0 commit comments

Comments
 (0)