| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/parser.h" | 5 #include "vm/parser.h" |
| 6 #include "vm/flags.h" | 6 #include "vm/flags.h" |
| 7 | 7 |
| 8 #ifndef DART_PRECOMPILED_RUNTIME | 8 #ifndef DART_PRECOMPILED_RUNTIME |
| 9 | 9 |
| 10 #include "lib/invocation_mirror.h" | 10 #include "lib/invocation_mirror.h" |
| (...skipping 11454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11465 expr = LiteralIfStaticConst(Z, expr); | 11465 expr = LiteralIfStaticConst(Z, expr); |
| 11466 } | 11466 } |
| 11467 return expr; | 11467 return expr; |
| 11468 } | 11468 } |
| 11469 // Assignment expressions. | 11469 // Assignment expressions. |
| 11470 if (!IsLegalAssignableSyntax(expr, TokenPos())) { | 11470 if (!IsLegalAssignableSyntax(expr, TokenPos())) { |
| 11471 ReportError(expr_pos, "expression is not assignable"); | 11471 ReportError(expr_pos, "expression is not assignable"); |
| 11472 } | 11472 } |
| 11473 const Token::Kind assignment_op = CurrentToken(); | 11473 const Token::Kind assignment_op = CurrentToken(); |
| 11474 const TokenPosition assignment_pos = TokenPos(); | 11474 const TokenPosition assignment_pos = TokenPos(); |
| 11475 ConsumeToken(); | 11475 if (require_compiletime_const) { |
| 11476 const TokenPosition right_expr_pos = TokenPos(); | 11476 ReportError(assignment_pos, |
| 11477 if (require_compiletime_const && (assignment_op != Token::kASSIGN)) { | |
| 11478 ReportError(right_expr_pos, | |
| 11479 "expression is not a valid compile-time constant"); | 11477 "expression is not a valid compile-time constant"); |
| 11480 } | 11478 } |
| 11479 ConsumeToken(); |
| 11481 AstNode* right_expr = ParseExpr(require_compiletime_const, consume_cascades); | 11480 AstNode* right_expr = ParseExpr(require_compiletime_const, consume_cascades); |
| 11482 if (assignment_op != Token::kASSIGN) { | 11481 if (assignment_op != Token::kASSIGN) { |
| 11483 // Compound assignment: store inputs with side effects into temp. locals. | 11482 // Compound assignment: store inputs with side effects into temp. locals. |
| 11484 LetNode* let_expr = PrepareCompoundAssignmentNodes(&expr); | 11483 LetNode* let_expr = PrepareCompoundAssignmentNodes(&expr); |
| 11485 AstNode* assigned_value = | 11484 AstNode* assigned_value = |
| 11486 ExpandAssignableOp(assignment_pos, assignment_op, expr, right_expr); | 11485 ExpandAssignableOp(assignment_pos, assignment_op, expr, right_expr); |
| 11487 AstNode* assign_expr = | 11486 AstNode* assign_expr = |
| 11488 CreateAssignmentNode(expr, assigned_value, expr_ident, expr_pos, true); | 11487 CreateAssignmentNode(expr, assigned_value, expr_ident, expr_pos, true); |
| 11489 ASSERT(assign_expr != NULL); | 11488 ASSERT(assign_expr != NULL); |
| 11490 let_expr->AddNode(assign_expr); | 11489 let_expr->AddNode(assign_expr); |
| (...skipping 3672 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15163 const ArgumentListNode& function_args, | 15162 const ArgumentListNode& function_args, |
| 15164 const LocalVariable* temp_for_last_arg, | 15163 const LocalVariable* temp_for_last_arg, |
| 15165 bool is_super_invocation) { | 15164 bool is_super_invocation) { |
| 15166 UNREACHABLE(); | 15165 UNREACHABLE(); |
| 15167 return NULL; | 15166 return NULL; |
| 15168 } | 15167 } |
| 15169 | 15168 |
| 15170 } // namespace dart | 15169 } // namespace dart |
| 15171 | 15170 |
| 15172 #endif // DART_PRECOMPILED_RUNTIME | 15171 #endif // DART_PRECOMPILED_RUNTIME |
| OLD | NEW |