| Index: src/parser.cc
|
| diff --git a/src/parser.cc b/src/parser.cc
|
| index 3f635c70df275ea837606aa81354f6daea36a882..048216ca7a323a69185a66f252b837a34fe8a6c0 100644
|
| --- a/src/parser.cc
|
| +++ b/src/parser.cc
|
| @@ -2990,7 +2990,7 @@ Statement* Parser::ParseSwitchStatement(ZoneList<const AstRawString*>* labels,
|
| // }
|
|
|
| Block* switch_block =
|
| - factory()->NewBlock(NULL, 2, true, RelocInfo::kNoPosition);
|
| + factory()->NewBlock(NULL, 2, false, RelocInfo::kNoPosition);
|
| int switch_pos = peek_position();
|
|
|
| Expect(Token::SWITCH, CHECK_OK);
|
| @@ -3007,8 +3007,17 @@ Statement* Parser::ParseSwitchStatement(ZoneList<const AstRawString*>* labels,
|
| factory()->NewExpressionStatement(tag_assign, RelocInfo::kNoPosition);
|
| switch_block->AddStatement(tag_statement, zone());
|
|
|
| + // make statement: undefined;
|
| + // This is needed so the tag isn't returned as the value, in case the switch
|
| + // statements don't have a value.
|
| + switch_block->AddStatement(
|
| + factory()->NewExpressionStatement(
|
| + factory()->NewUndefinedLiteral(RelocInfo::kNoPosition),
|
| + RelocInfo::kNoPosition),
|
| + zone());
|
| +
|
| Block* cases_block =
|
| - factory()->NewBlock(NULL, 1, true, RelocInfo::kNoPosition);
|
| + factory()->NewBlock(NULL, 1, false, RelocInfo::kNoPosition);
|
| Scope* cases_scope = NewScope(scope_, BLOCK_SCOPE);
|
|
|
| SwitchStatement* switch_statement =
|
|
|