Chromium Code Reviews| Index: runtime/vm/parser.cc |
| diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc |
| index 179d96d8fc0743e37cf0aedf8081b1bfcfea0b93..d83d7746e84bfa174597e4c47dcea5eddf872f42 100644 |
| --- a/runtime/vm/parser.cc |
| +++ b/runtime/vm/parser.cc |
| @@ -6912,9 +6912,10 @@ AstNode* Parser::ParseCascades(AstNode* expr) { |
| intptr_t cascade_pos = TokenPos(); |
| LocalVariable* cascade_receiver_var = |
| CreateTempConstVariable(cascade_pos, "casc"); |
| + SequenceNode* cascade = new SequenceNode(cascade_pos, NULL); |
|
Ivan Posva
2013/01/04 17:31:56
Can you please explain why this is not a hack? You
Kevin Millikin (Google)
2013/01/07 09:14:14
I think it is a hack. I'll add a comment here, at
|
| StoreLocalNode* save_cascade = |
| new StoreLocalNode(cascade_pos, cascade_receiver_var, expr); |
| - current_block_->statements->Add(save_cascade); |
| + cascade->Add(save_cascade); |
| while (CurrentToken() == Token::kCASCADE) { |
| cascade_pos = TokenPos(); |
| LoadLocalNode* load_cascade_receiver = |
| @@ -6952,10 +6953,10 @@ AstNode* Parser::ParseCascades(AstNode* expr) { |
| } |
| expr = assign_expr; |
| } |
| - current_block_->statements->Add(expr); |
| + cascade->Add(expr); |
| } |
| // Result of the cascade is the receiver. |
| - return new LoadLocalNode(cascade_pos, cascade_receiver_var); |
| + return new LoadLocalNode(cascade_pos, cascade_receiver_var, cascade); |
| } |