| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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/assert.h" | 5 #include "vm/assert.h" |
| 6 #include "vm/ast.h" | 6 #include "vm/ast.h" |
| 7 #include "vm/scopes.h" | 7 #include "vm/scopes.h" |
| 8 #include "vm/unit_test.h" | 8 #include "vm/unit_test.h" |
| 9 | 9 |
| 10 namespace dart { | 10 namespace dart { |
| 11 | 11 |
| 12 static const intptr_t kPos = 1; // Dummy token index in non-existing source. | 12 static const intptr_t kPos = 1; // Dummy token index in non-existing source. |
| 13 | 13 |
| 14 | 14 |
| 15 TEST_CASE(LocalScope) { | 15 TEST_CASE(LocalScope) { |
| 16 // Allocate a couple of local variables first. | 16 // Allocate a couple of local variables first. |
| 17 const Type& var_type = Type::ZoneHandle(Type::VarType()); | 17 const Type& dynamic_type = Type::ZoneHandle(Type::DynamicType()); |
| 18 const String& a = String::ZoneHandle(String::New("a")); | 18 const String& a = String::ZoneHandle(String::New("a")); |
| 19 LocalVariable* var_a = new LocalVariable(kPos, a, var_type); | 19 LocalVariable* var_a = new LocalVariable(kPos, a, dynamic_type); |
| 20 LocalVariable* inner_var_a = new LocalVariable(kPos, a, var_type); | 20 LocalVariable* inner_var_a = new LocalVariable(kPos, a, dynamic_type); |
| 21 const String& b = String::ZoneHandle(String::New("b")); | 21 const String& b = String::ZoneHandle(String::New("b")); |
| 22 LocalVariable* var_b = new LocalVariable(kPos, b, var_type); | 22 LocalVariable* var_b = new LocalVariable(kPos, b, dynamic_type); |
| 23 const String& c = String::ZoneHandle(String::New("c")); | 23 const String& c = String::ZoneHandle(String::New("c")); |
| 24 LocalVariable* var_c = new LocalVariable(kPos, c, var_type); | 24 LocalVariable* var_c = new LocalVariable(kPos, c, dynamic_type); |
| 25 const String& L = String::ZoneHandle(String::New("L")); | 25 const String& L = String::ZoneHandle(String::New("L")); |
| 26 SourceLabel* label_L = new SourceLabel(kPos, L, SourceLabel::kFor); | 26 SourceLabel* label_L = new SourceLabel(kPos, L, SourceLabel::kFor); |
| 27 | 27 |
| 28 LocalScope* outer_scope = new LocalScope(NULL, 0, 0); | 28 LocalScope* outer_scope = new LocalScope(NULL, 0, 0); |
| 29 LocalScope* inner_scope1 = new LocalScope(outer_scope, 0, 0); | 29 LocalScope* inner_scope1 = new LocalScope(outer_scope, 0, 0); |
| 30 LocalScope* inner_scope2 = new LocalScope(outer_scope, 0, 0); | 30 LocalScope* inner_scope2 = new LocalScope(outer_scope, 0, 0); |
| 31 | 31 |
| 32 EXPECT(outer_scope->parent() == NULL); | 32 EXPECT(outer_scope->parent() == NULL); |
| 33 EXPECT_EQ(outer_scope, inner_scope1->parent()); | 33 EXPECT_EQ(outer_scope, inner_scope1->parent()); |
| 34 EXPECT_EQ(outer_scope, inner_scope2->parent()); | 34 EXPECT_EQ(outer_scope, inner_scope2->parent()); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 (inner_scope1->VariableAt(1) == var_b)); | 104 (inner_scope1->VariableAt(1) == var_b)); |
| 105 EXPECT((inner_scope2->VariableAt(0) == var_a) || | 105 EXPECT((inner_scope2->VariableAt(0) == var_a) || |
| 106 (inner_scope2->VariableAt(1) == var_a) || | 106 (inner_scope2->VariableAt(1) == var_a) || |
| 107 (inner_scope2->VariableAt(2) == var_a)); | 107 (inner_scope2->VariableAt(2) == var_a)); |
| 108 EXPECT((inner_scope2->VariableAt(0) == var_c) || | 108 EXPECT((inner_scope2->VariableAt(0) == var_c) || |
| 109 (inner_scope2->VariableAt(1) == var_c) || | 109 (inner_scope2->VariableAt(1) == var_c) || |
| 110 (inner_scope2->VariableAt(2) == var_c)); | 110 (inner_scope2->VariableAt(2) == var_c)); |
| 111 } | 111 } |
| 112 | 112 |
| 113 } // namespace dart | 113 } // namespace dart |
| OLD | NEW |