OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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/kernel.h" | 5 #include "vm/kernel.h" |
6 | 6 |
7 #if !defined(DART_PRECOMPILED_RUNTIME) | 7 #if !defined(DART_PRECOMPILED_RUNTIME) |
8 namespace dart { | 8 namespace dart { |
9 | 9 |
10 namespace kernel { | 10 namespace kernel { |
(...skipping 15 matching lines...) Expand all Loading... |
26 delete children_[i]; | 26 delete children_[i]; |
27 } | 27 } |
28 } | 28 } |
29 | 29 |
30 | 30 |
31 CanonicalName* CanonicalName::NewRoot() { | 31 CanonicalName* CanonicalName::NewRoot() { |
32 return new CanonicalName(); | 32 return new CanonicalName(); |
33 } | 33 } |
34 | 34 |
35 | 35 |
36 void CanonicalName::BindTo(LinkedNode* new_target) { | |
37 ASSERT(new_target != NULL); | |
38 if (definition_ == new_target) return; | |
39 ASSERT(definition_ == NULL); | |
40 ASSERT(new_target->canonical_name_ == NULL); | |
41 definition_ = new_target; | |
42 new_target->canonical_name_ = this; | |
43 } | |
44 | |
45 | |
46 void CanonicalName::Unbind() { | |
47 if (definition_ == NULL) return; | |
48 ASSERT(definition_->canonical_name_ == this); | |
49 definition_->canonical_name_ = NULL; | |
50 definition_ = NULL; | |
51 } | |
52 | |
53 | |
54 CanonicalName* CanonicalName::AddChild(String* name) { | 36 CanonicalName* CanonicalName::AddChild(String* name) { |
55 CanonicalName* child = new CanonicalName(); | 37 CanonicalName* child = new CanonicalName(); |
56 child->parent_ = this; | 38 child->parent_ = this; |
57 child->name_ = name; | 39 child->name_ = name; |
58 children_.Add(child); | 40 children_.Add(child); |
59 return child; | 41 return child; |
60 } | 42 } |
61 | 43 |
62 | 44 |
63 Library* CanonicalName::AsLibrary() { | 45 bool CanonicalName::IsAdministrative() { |
64 return Library::Cast(definition()); | 46 // Administrative names start with '@'. |
| 47 return (name()->size() > 0) && (name()->buffer()[0] == '@'); |
65 } | 48 } |
66 | 49 |
67 | 50 |
68 Class* CanonicalName::AsClass() { | 51 bool CanonicalName::IsPrivate() { |
69 return Class::Cast(definition()); | 52 // Private names start with '_'. |
| 53 return (name()->size() > 0) && (name()->buffer()[0] == '_'); |
70 } | 54 } |
71 | 55 |
72 | 56 |
73 Member* CanonicalName::AsMember() { | 57 bool CanonicalName::IsRoot() { |
74 return Member::Cast(definition()); | 58 // The root is the only canonical name with no parent. |
| 59 return parent() == NULL; |
75 } | 60 } |
76 | 61 |
77 | 62 |
78 Field* CanonicalName::AsField() { | 63 bool CanonicalName::IsLibrary() { |
79 return Field::Cast(definition()); | 64 // Libraries are the only canonical names with the root as their parent. |
| 65 return !IsRoot() && parent()->IsRoot(); |
80 } | 66 } |
81 | 67 |
82 | 68 |
83 Constructor* CanonicalName::AsConstructor() { | 69 bool CanonicalName::IsClass() { |
84 return Constructor::Cast(definition()); | 70 // Classes have the library as their parent and are not an administrative |
| 71 // name starting with @. |
| 72 return !IsAdministrative() && !IsRoot() && parent()->IsLibrary(); |
85 } | 73 } |
86 | 74 |
87 | 75 |
88 Procedure* CanonicalName::AsProcedure() { | 76 bool CanonicalName::IsMember() { |
89 return Procedure::Cast(definition()); | 77 return IsConstructor() || IsField() || IsProcedure(); |
90 } | 78 } |
91 | 79 |
92 | 80 |
| 81 // Note the two occurrences of the parameter 'literal'. |
| 82 #define COMPARE_NAME(canonical_name, literal) \ |
| 83 memcmp((canonical_name)->name()->buffer(), (literal), strlen(literal)) == 0 |
| 84 |
| 85 bool CanonicalName::IsField() { |
| 86 // Fields with private names have the import URI of the library where they are |
| 87 // visible as the parent and the string "@fields" as the parent's parent. |
| 88 // Fields with non-private names have the string "@fields' as the parent. |
| 89 if (IsRoot()) { |
| 90 return false; |
| 91 } |
| 92 CanonicalName* kind = this->parent(); |
| 93 if (IsPrivate()) { |
| 94 kind = kind->parent(); |
| 95 } |
| 96 return COMPARE_NAME(kind, "@fields"); |
| 97 } |
| 98 |
| 99 |
| 100 bool CanonicalName::IsConstructor() { |
| 101 // Constructors with private names have the import URI of the library where |
| 102 // they are visible as the parent and the string "@constructors" as the |
| 103 // parent's parent. Constructors with non-private names have the string |
| 104 // "@constructors" as the parent. |
| 105 if (IsRoot()) { |
| 106 return false; |
| 107 } |
| 108 CanonicalName* kind = this->parent(); |
| 109 if (IsPrivate()) { |
| 110 kind = kind->parent(); |
| 111 } |
| 112 return COMPARE_NAME(kind, "@constructors"); |
| 113 } |
| 114 |
| 115 |
| 116 bool CanonicalName::IsProcedure() { |
| 117 return IsMethod() || IsGetter() || IsSetter() || IsFactory(); |
| 118 } |
| 119 |
| 120 |
| 121 bool CanonicalName::IsMethod() { |
| 122 // Methods with private names have the import URI of the library where they |
| 123 // are visible as the parent and the string "@methods" as the parent's parent. |
| 124 // Methods with non-private names have the string "@methods" as the parent. |
| 125 if (IsRoot()) { |
| 126 return false; |
| 127 } |
| 128 CanonicalName* kind = this->parent(); |
| 129 if (IsPrivate()) { |
| 130 kind = kind->parent(); |
| 131 } |
| 132 return COMPARE_NAME(kind, "@methods"); |
| 133 } |
| 134 |
| 135 |
| 136 bool CanonicalName::IsGetter() { |
| 137 // Getters with private names have the import URI of the library where they |
| 138 // are visible as the parent and the string "@getters" as the parent's parent. |
| 139 // Getters with non-private names have the string "@getters" as the parent. |
| 140 if (IsRoot()) { |
| 141 return false; |
| 142 } |
| 143 CanonicalName* kind = this->parent(); |
| 144 if (IsPrivate()) { |
| 145 kind = kind->parent(); |
| 146 } |
| 147 return COMPARE_NAME(kind, "@getters"); |
| 148 } |
| 149 |
| 150 |
| 151 bool CanonicalName::IsSetter() { |
| 152 // Setters with private names have the import URI of the library where they |
| 153 // are visible as the parent and the string "@setters" as the parent's parent. |
| 154 // Setters with non-private names have the string "@setters" as the parent. |
| 155 if (IsRoot()) { |
| 156 return false; |
| 157 } |
| 158 CanonicalName* kind = this->parent(); |
| 159 if (IsPrivate()) { |
| 160 kind = kind->parent(); |
| 161 } |
| 162 return COMPARE_NAME(kind, "@setters"); |
| 163 } |
| 164 |
| 165 |
| 166 bool CanonicalName::IsFactory() { |
| 167 // Factories with private names have the import URI of the library where they |
| 168 // are visible as the parent and the string "@factories" as the parent's |
| 169 // parent. Factories with non-private names have the string "@factories" as |
| 170 // the parent. |
| 171 if (IsRoot()) { |
| 172 return false; |
| 173 } |
| 174 CanonicalName* kind = this->parent(); |
| 175 if (IsPrivate()) { |
| 176 kind = kind->parent(); |
| 177 } |
| 178 return COMPARE_NAME(kind, "@factories"); |
| 179 } |
| 180 |
| 181 #undef COMPARE_NAME |
| 182 |
| 183 |
| 184 CanonicalName* CanonicalName::EnclosingName() { |
| 185 ASSERT(IsField() || IsConstructor() || IsProcedure()); |
| 186 CanonicalName* enclosing = parent()->parent(); |
| 187 if (IsPrivate()) { |
| 188 enclosing = enclosing->parent(); |
| 189 } |
| 190 ASSERT(enclosing->IsLibrary() || enclosing->IsClass()); |
| 191 return enclosing; |
| 192 } |
| 193 |
| 194 |
93 Node::~Node() {} | 195 Node::~Node() {} |
94 | 196 |
95 | 197 |
96 TreeNode::~TreeNode() {} | 198 TreeNode::~TreeNode() {} |
97 | 199 |
98 | 200 |
99 void TreeNode::AcceptVisitor(Visitor* visitor) { | 201 void TreeNode::AcceptVisitor(Visitor* visitor) { |
100 AcceptTreeVisitor(visitor); | 202 AcceptTreeVisitor(visitor); |
101 } | 203 } |
102 | 204 |
(...skipping 25 matching lines...) Expand all Loading... |
128 | 230 |
129 | 231 |
130 NormalClass::~NormalClass() {} | 232 NormalClass::~NormalClass() {} |
131 | 233 |
132 | 234 |
133 void NormalClass::AcceptClassVisitor(ClassVisitor* visitor) { | 235 void NormalClass::AcceptClassVisitor(ClassVisitor* visitor) { |
134 visitor->VisitNormalClass(this); | 236 visitor->VisitNormalClass(this); |
135 } | 237 } |
136 | 238 |
137 | 239 |
138 void NormalClass::AcceptReferenceVisitor(ClassReferenceVisitor* visitor) { | |
139 visitor->VisitNormalClassReference(this); | |
140 } | |
141 | |
142 | |
143 void NormalClass::VisitChildren(Visitor* visitor) { | 240 void NormalClass::VisitChildren(Visitor* visitor) { |
144 VisitList(&type_parameters(), visitor); | 241 VisitList(&type_parameters(), visitor); |
145 if (super_class() != NULL) visitor->VisitInterfaceType(super_class()); | 242 if (super_class() != NULL) visitor->VisitInterfaceType(super_class()); |
146 VisitList(&implemented_classes(), visitor); | 243 VisitList(&implemented_classes(), visitor); |
147 VisitList(&constructors(), visitor); | 244 VisitList(&constructors(), visitor); |
148 VisitList(&procedures(), visitor); | 245 VisitList(&procedures(), visitor); |
149 VisitList(&fields(), visitor); | 246 VisitList(&fields(), visitor); |
150 } | 247 } |
151 | 248 |
152 | 249 |
153 MixinClass::~MixinClass() {} | 250 MixinClass::~MixinClass() {} |
154 | 251 |
155 | 252 |
156 void MixinClass::AcceptClassVisitor(ClassVisitor* visitor) { | 253 void MixinClass::AcceptClassVisitor(ClassVisitor* visitor) { |
157 visitor->VisitMixinClass(this); | 254 visitor->VisitMixinClass(this); |
158 } | 255 } |
159 | 256 |
160 | 257 |
161 void MixinClass::AcceptReferenceVisitor(ClassReferenceVisitor* visitor) { | |
162 visitor->VisitMixinClassReference(this); | |
163 } | |
164 | |
165 | |
166 void MixinClass::VisitChildren(Visitor* visitor) { | 258 void MixinClass::VisitChildren(Visitor* visitor) { |
167 VisitList(&type_parameters(), visitor); | 259 VisitList(&type_parameters(), visitor); |
168 visitor->VisitInterfaceType(first()); | 260 visitor->VisitInterfaceType(first()); |
169 visitor->VisitInterfaceType(second()); | 261 visitor->VisitInterfaceType(second()); |
170 VisitList(&implemented_classes(), visitor); | 262 VisitList(&implemented_classes(), visitor); |
171 VisitList(&constructors(), visitor); | 263 VisitList(&constructors(), visitor); |
172 } | 264 } |
173 | 265 |
174 | 266 |
175 Member::~Member() {} | 267 Member::~Member() {} |
176 | 268 |
177 | 269 |
178 void Member::AcceptTreeVisitor(TreeVisitor* visitor) { | 270 void Member::AcceptTreeVisitor(TreeVisitor* visitor) { |
179 AcceptMemberVisitor(visitor); | 271 AcceptMemberVisitor(visitor); |
180 } | 272 } |
181 | 273 |
182 | 274 |
183 Field::~Field() {} | 275 Field::~Field() {} |
184 | 276 |
185 | 277 |
186 void Field::AcceptMemberVisitor(MemberVisitor* visitor) { | 278 void Field::AcceptMemberVisitor(MemberVisitor* visitor) { |
187 visitor->VisitField(this); | 279 visitor->VisitField(this); |
188 } | 280 } |
189 | 281 |
190 | 282 |
191 void Field::AcceptReferenceVisitor(MemberReferenceVisitor* visitor) { | |
192 visitor->VisitFieldReference(this); | |
193 } | |
194 | |
195 | |
196 void Field::VisitChildren(Visitor* visitor) { | 283 void Field::VisitChildren(Visitor* visitor) { |
197 type()->AcceptDartTypeVisitor(visitor); | 284 type()->AcceptDartTypeVisitor(visitor); |
198 visitor->VisitName(name()); | 285 visitor->VisitName(name()); |
199 if (initializer() != NULL) initializer()->AcceptExpressionVisitor(visitor); | 286 if (initializer() != NULL) initializer()->AcceptExpressionVisitor(visitor); |
200 } | 287 } |
201 | 288 |
202 | 289 |
203 Constructor::~Constructor() {} | 290 Constructor::~Constructor() {} |
204 | 291 |
205 | 292 |
206 void Constructor::AcceptMemberVisitor(MemberVisitor* visitor) { | 293 void Constructor::AcceptMemberVisitor(MemberVisitor* visitor) { |
207 visitor->VisitConstructor(this); | 294 visitor->VisitConstructor(this); |
208 } | 295 } |
209 | 296 |
210 | 297 |
211 void Constructor::AcceptReferenceVisitor(MemberReferenceVisitor* visitor) { | |
212 visitor->VisitConstructorReference(this); | |
213 } | |
214 | |
215 | |
216 void Constructor::VisitChildren(Visitor* visitor) { | 298 void Constructor::VisitChildren(Visitor* visitor) { |
217 visitor->VisitName(name()); | 299 visitor->VisitName(name()); |
218 visitor->VisitFunctionNode(function()); | 300 visitor->VisitFunctionNode(function()); |
219 VisitList(&initializers(), visitor); | 301 VisitList(&initializers(), visitor); |
220 } | 302 } |
221 | 303 |
222 | 304 |
223 Procedure::~Procedure() {} | 305 Procedure::~Procedure() {} |
224 | 306 |
225 | 307 |
226 void Procedure::AcceptMemberVisitor(MemberVisitor* visitor) { | 308 void Procedure::AcceptMemberVisitor(MemberVisitor* visitor) { |
227 visitor->VisitProcedure(this); | 309 visitor->VisitProcedure(this); |
228 } | 310 } |
229 | 311 |
230 | 312 |
231 void Procedure::AcceptReferenceVisitor(MemberReferenceVisitor* visitor) { | |
232 visitor->VisitProcedureReference(this); | |
233 } | |
234 | |
235 | |
236 void Procedure::VisitChildren(Visitor* visitor) { | 313 void Procedure::VisitChildren(Visitor* visitor) { |
237 visitor->VisitName(name()); | 314 visitor->VisitName(name()); |
238 if (function() != NULL) visitor->VisitFunctionNode(function()); | 315 if (function() != NULL) visitor->VisitFunctionNode(function()); |
239 } | 316 } |
240 | 317 |
241 | 318 |
242 Initializer::~Initializer() {} | 319 Initializer::~Initializer() {} |
243 | 320 |
244 | 321 |
245 void Initializer::AcceptTreeVisitor(TreeVisitor* visitor) { | 322 void Initializer::AcceptTreeVisitor(TreeVisitor* visitor) { |
(...skipping 14 matching lines...) Expand all Loading... |
260 | 337 |
261 FieldInitializer::~FieldInitializer() {} | 338 FieldInitializer::~FieldInitializer() {} |
262 | 339 |
263 | 340 |
264 void FieldInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) { | 341 void FieldInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) { |
265 visitor->VisitFieldInitializer(this); | 342 visitor->VisitFieldInitializer(this); |
266 } | 343 } |
267 | 344 |
268 | 345 |
269 void FieldInitializer::VisitChildren(Visitor* visitor) { | 346 void FieldInitializer::VisitChildren(Visitor* visitor) { |
270 visitor->VisitFieldReference(field()); | |
271 value()->AcceptExpressionVisitor(visitor); | 347 value()->AcceptExpressionVisitor(visitor); |
272 } | 348 } |
273 | 349 |
274 | 350 |
275 SuperInitializer::~SuperInitializer() {} | 351 SuperInitializer::~SuperInitializer() {} |
276 | 352 |
277 | 353 |
278 void SuperInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) { | 354 void SuperInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) { |
279 visitor->VisitSuperInitializer(this); | 355 visitor->VisitSuperInitializer(this); |
280 } | 356 } |
281 | 357 |
282 | 358 |
283 void SuperInitializer::VisitChildren(Visitor* visitor) { | 359 void SuperInitializer::VisitChildren(Visitor* visitor) { |
284 visitor->VisitConstructorReference(target()); | |
285 visitor->VisitArguments(arguments()); | 360 visitor->VisitArguments(arguments()); |
286 } | 361 } |
287 | 362 |
288 | 363 |
289 RedirectingInitializer::~RedirectingInitializer() {} | 364 RedirectingInitializer::~RedirectingInitializer() {} |
290 | 365 |
291 | 366 |
292 void RedirectingInitializer::AcceptInitializerVisitor( | 367 void RedirectingInitializer::AcceptInitializerVisitor( |
293 InitializerVisitor* visitor) { | 368 InitializerVisitor* visitor) { |
294 visitor->VisitRedirectingInitializer(this); | 369 visitor->VisitRedirectingInitializer(this); |
295 } | 370 } |
296 | 371 |
297 | 372 |
298 void RedirectingInitializer::VisitChildren(Visitor* visitor) { | 373 void RedirectingInitializer::VisitChildren(Visitor* visitor) { |
299 visitor->VisitConstructorReference(target()); | |
300 visitor->VisitArguments(arguments()); | 374 visitor->VisitArguments(arguments()); |
301 } | 375 } |
302 | 376 |
303 | 377 |
304 LocalInitializer::~LocalInitializer() {} | 378 LocalInitializer::~LocalInitializer() {} |
305 | 379 |
306 | 380 |
307 void LocalInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) { | 381 void LocalInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) { |
308 visitor->VisitLocalInitializer(this); | 382 visitor->VisitLocalInitializer(this); |
309 } | 383 } |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 DirectPropertyGet::~DirectPropertyGet() {} | 480 DirectPropertyGet::~DirectPropertyGet() {} |
407 | 481 |
408 | 482 |
409 void DirectPropertyGet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { | 483 void DirectPropertyGet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { |
410 visitor->VisitDirectPropertyGet(this); | 484 visitor->VisitDirectPropertyGet(this); |
411 } | 485 } |
412 | 486 |
413 | 487 |
414 void DirectPropertyGet::VisitChildren(Visitor* visitor) { | 488 void DirectPropertyGet::VisitChildren(Visitor* visitor) { |
415 receiver()->AcceptExpressionVisitor(visitor); | 489 receiver()->AcceptExpressionVisitor(visitor); |
416 target()->AcceptReferenceVisitor(visitor); | |
417 } | 490 } |
418 | 491 |
419 | 492 |
420 DirectPropertySet::~DirectPropertySet() {} | 493 DirectPropertySet::~DirectPropertySet() {} |
421 | 494 |
422 | 495 |
423 void DirectPropertySet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { | 496 void DirectPropertySet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { |
424 visitor->VisitDirectPropertySet(this); | 497 visitor->VisitDirectPropertySet(this); |
425 } | 498 } |
426 | 499 |
427 | 500 |
428 void DirectPropertySet::VisitChildren(Visitor* visitor) { | 501 void DirectPropertySet::VisitChildren(Visitor* visitor) { |
429 receiver()->AcceptExpressionVisitor(visitor); | 502 receiver()->AcceptExpressionVisitor(visitor); |
430 target()->AcceptReferenceVisitor(visitor); | |
431 value()->AcceptExpressionVisitor(visitor); | 503 value()->AcceptExpressionVisitor(visitor); |
432 } | 504 } |
433 | 505 |
434 | 506 |
435 StaticGet::~StaticGet() {} | 507 StaticGet::~StaticGet() {} |
436 | 508 |
437 | 509 |
438 void StaticGet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { | 510 void StaticGet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { |
439 visitor->VisitStaticGet(this); | 511 visitor->VisitStaticGet(this); |
440 } | 512 } |
441 | 513 |
442 | 514 |
443 void StaticGet::VisitChildren(Visitor* visitor) { | 515 void StaticGet::VisitChildren(Visitor* visitor) {} |
444 target()->AcceptReferenceVisitor(visitor); | |
445 } | |
446 | 516 |
447 | 517 |
448 StaticSet::~StaticSet() {} | 518 StaticSet::~StaticSet() {} |
449 | 519 |
450 | 520 |
451 void StaticSet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { | 521 void StaticSet::AcceptExpressionVisitor(ExpressionVisitor* visitor) { |
452 visitor->VisitStaticSet(this); | 522 visitor->VisitStaticSet(this); |
453 } | 523 } |
454 | 524 |
455 | 525 |
456 void StaticSet::VisitChildren(Visitor* visitor) { | 526 void StaticSet::VisitChildren(Visitor* visitor) { |
457 target()->AcceptReferenceVisitor(visitor); | |
458 expression()->AcceptExpressionVisitor(visitor); | 527 expression()->AcceptExpressionVisitor(visitor); |
459 } | 528 } |
460 | 529 |
461 | 530 |
462 Arguments::~Arguments() {} | 531 Arguments::~Arguments() {} |
463 | 532 |
464 | 533 |
465 void Arguments::AcceptTreeVisitor(TreeVisitor* visitor) { | 534 void Arguments::AcceptTreeVisitor(TreeVisitor* visitor) { |
466 visitor->VisitArguments(this); | 535 visitor->VisitArguments(this); |
467 } | 536 } |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
506 | 575 |
507 | 576 |
508 void DirectMethodInvocation::AcceptExpressionVisitor( | 577 void DirectMethodInvocation::AcceptExpressionVisitor( |
509 ExpressionVisitor* visitor) { | 578 ExpressionVisitor* visitor) { |
510 visitor->VisitDirectMethodInvocation(this); | 579 visitor->VisitDirectMethodInvocation(this); |
511 } | 580 } |
512 | 581 |
513 | 582 |
514 void DirectMethodInvocation::VisitChildren(Visitor* visitor) { | 583 void DirectMethodInvocation::VisitChildren(Visitor* visitor) { |
515 receiver()->AcceptExpressionVisitor(visitor); | 584 receiver()->AcceptExpressionVisitor(visitor); |
516 visitor->VisitProcedureReference(target()); | |
517 visitor->VisitArguments(arguments()); | 585 visitor->VisitArguments(arguments()); |
518 } | 586 } |
519 | 587 |
520 | 588 |
521 StaticInvocation::~StaticInvocation() {} | 589 StaticInvocation::~StaticInvocation() {} |
522 | 590 |
523 | 591 |
524 void StaticInvocation::AcceptExpressionVisitor(ExpressionVisitor* visitor) { | 592 void StaticInvocation::AcceptExpressionVisitor(ExpressionVisitor* visitor) { |
525 visitor->VisitStaticInvocation(this); | 593 visitor->VisitStaticInvocation(this); |
526 } | 594 } |
527 | 595 |
528 | 596 |
529 void StaticInvocation::VisitChildren(Visitor* visitor) { | 597 void StaticInvocation::VisitChildren(Visitor* visitor) { |
530 visitor->VisitProcedureReference(procedure()); | |
531 visitor->VisitArguments(arguments()); | 598 visitor->VisitArguments(arguments()); |
532 } | 599 } |
533 | 600 |
534 | 601 |
535 ConstructorInvocation::~ConstructorInvocation() {} | 602 ConstructorInvocation::~ConstructorInvocation() {} |
536 | 603 |
537 | 604 |
538 void ConstructorInvocation::AcceptExpressionVisitor( | 605 void ConstructorInvocation::AcceptExpressionVisitor( |
539 ExpressionVisitor* visitor) { | 606 ExpressionVisitor* visitor) { |
540 visitor->VisitConstructorInvocation(this); | 607 visitor->VisitConstructorInvocation(this); |
541 } | 608 } |
542 | 609 |
543 | 610 |
544 void ConstructorInvocation::VisitChildren(Visitor* visitor) { | 611 void ConstructorInvocation::VisitChildren(Visitor* visitor) { |
545 visitor->VisitConstructorReference(target()); | |
546 visitor->VisitArguments(arguments()); | 612 visitor->VisitArguments(arguments()); |
547 } | 613 } |
548 | 614 |
549 | 615 |
550 Not::~Not() {} | 616 Not::~Not() {} |
551 | 617 |
552 | 618 |
553 void Not::AcceptExpressionVisitor(ExpressionVisitor* visitor) { | 619 void Not::AcceptExpressionVisitor(ExpressionVisitor* visitor) { |
554 visitor->VisitNot(this); | 620 visitor->VisitNot(this); |
555 } | 621 } |
(...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1187 | 1253 |
1188 InterfaceType::~InterfaceType() {} | 1254 InterfaceType::~InterfaceType() {} |
1189 | 1255 |
1190 | 1256 |
1191 void InterfaceType::AcceptDartTypeVisitor(DartTypeVisitor* visitor) { | 1257 void InterfaceType::AcceptDartTypeVisitor(DartTypeVisitor* visitor) { |
1192 visitor->VisitInterfaceType(this); | 1258 visitor->VisitInterfaceType(this); |
1193 } | 1259 } |
1194 | 1260 |
1195 | 1261 |
1196 void InterfaceType::VisitChildren(Visitor* visitor) { | 1262 void InterfaceType::VisitChildren(Visitor* visitor) { |
1197 klass()->AcceptReferenceVisitor(visitor); | |
1198 VisitList(&type_arguments(), visitor); | 1263 VisitList(&type_arguments(), visitor); |
1199 } | 1264 } |
1200 | 1265 |
1201 | 1266 |
1202 FunctionType::~FunctionType() {} | 1267 FunctionType::~FunctionType() {} |
1203 | 1268 |
1204 | 1269 |
1205 void FunctionType::AcceptDartTypeVisitor(DartTypeVisitor* visitor) { | 1270 void FunctionType::AcceptDartTypeVisitor(DartTypeVisitor* visitor) { |
1206 visitor->VisitFunctionType(this); | 1271 visitor->VisitFunctionType(this); |
1207 } | 1272 } |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1251 } | 1316 } |
1252 | 1317 |
1253 | 1318 |
1254 void Program::AcceptTreeVisitor(TreeVisitor* visitor) { | 1319 void Program::AcceptTreeVisitor(TreeVisitor* visitor) { |
1255 visitor->VisitProgram(this); | 1320 visitor->VisitProgram(this); |
1256 } | 1321 } |
1257 | 1322 |
1258 | 1323 |
1259 void Program::VisitChildren(Visitor* visitor) { | 1324 void Program::VisitChildren(Visitor* visitor) { |
1260 VisitList(&libraries(), visitor); | 1325 VisitList(&libraries(), visitor); |
1261 visitor->VisitProcedureReference(main_method()); | |
1262 } | 1326 } |
1263 | 1327 |
1264 | 1328 |
1265 } // namespace kernel | 1329 } // namespace kernel |
1266 | 1330 |
1267 } // namespace dart | 1331 } // namespace dart |
1268 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 1332 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
OLD | NEW |