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 library dart2js.resolution; | 5 library dart2js.resolution; |
6 | 6 |
7 import 'dart:collection' show Queue; | 7 import 'dart:collection' show Queue; |
8 | 8 |
9 import '../common.dart'; | 9 import '../common.dart'; |
10 import '../common/names.dart' show Identifiers; | 10 import '../common/names.dart' show Identifiers; |
11 import '../common/resolution.dart' | 11 import '../common/resolution.dart' |
12 show ParsingContext, Resolution, ResolutionImpact, Target; | 12 show ParsingContext, Resolution, ResolutionImpact, Target; |
13 import '../common/tasks.dart' show CompilerTask, Measurer; | 13 import '../common/tasks.dart' show CompilerTask, Measurer; |
14 import '../compile_time_constants.dart' show ConstantCompiler; | 14 import '../compile_time_constants.dart' show ConstantCompiler; |
15 import '../constants/expressions.dart' | 15 import '../constants/expressions.dart' |
16 show | 16 show |
17 ConstantExpression, | 17 ConstantExpression, |
18 ConstantExpressionKind, | 18 ConstantExpressionKind, |
19 ConstructedConstantExpression, | 19 ConstructedConstantExpression, |
20 ErroneousConstantExpression; | 20 ErroneousConstantExpression; |
21 import '../constants/values.dart' show ConstantValue; | 21 import '../constants/values.dart' show ConstantValue; |
22 import '../core_types.dart' show CoreClasses, CoreTypes; | 22 import '../core_types.dart' show CoreClasses, CoreTypes, CommonElements; |
23 import '../dart_types.dart'; | 23 import '../dart_types.dart'; |
24 import '../elements/elements.dart'; | 24 import '../elements/elements.dart'; |
25 import '../elements/modelx.dart' | 25 import '../elements/modelx.dart' |
26 show | 26 show |
27 BaseClassElementX, | 27 BaseClassElementX, |
28 BaseFunctionElementX, | 28 BaseFunctionElementX, |
29 ConstructorElementX, | 29 ConstructorElementX, |
30 FieldElementX, | 30 FieldElementX, |
31 FunctionElementX, | 31 FunctionElementX, |
32 GetterElementX, | 32 GetterElementX, |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 ResolverTask( | 69 ResolverTask( |
70 this.resolution, this.constantCompiler, this.world, Measurer measurer) | 70 this.resolution, this.constantCompiler, this.world, Measurer measurer) |
71 : super(measurer); | 71 : super(measurer); |
72 | 72 |
73 String get name => 'Resolver'; | 73 String get name => 'Resolver'; |
74 | 74 |
75 DiagnosticReporter get reporter => resolution.reporter; | 75 DiagnosticReporter get reporter => resolution.reporter; |
76 Target get target => resolution.target; | 76 Target get target => resolution.target; |
77 CoreTypes get coreTypes => resolution.coreTypes; | 77 CoreTypes get coreTypes => resolution.coreTypes; |
78 CoreClasses get coreClasses => resolution.coreClasses; | 78 CoreClasses get coreClasses => resolution.coreClasses; |
| 79 CommonElements get commonElements => resolution.commonElements; |
79 ParsingContext get parsingContext => resolution.parsingContext; | 80 ParsingContext get parsingContext => resolution.parsingContext; |
80 CompilerOptions get options => resolution.options; | 81 CompilerOptions get options => resolution.options; |
81 ResolutionEnqueuer get enqueuer => resolution.enqueuer; | 82 ResolutionEnqueuer get enqueuer => resolution.enqueuer; |
82 | 83 |
83 ResolutionImpact resolve(Element element) { | 84 ResolutionImpact resolve(Element element) { |
84 return measure(() { | 85 return measure(() { |
85 if (Elements.isMalformed(element)) { | 86 if (Elements.isMalformed(element)) { |
86 // TODO(johnniwinther): Add a predicate for this. | 87 // TODO(johnniwinther): Add a predicate for this. |
87 assert(invariant(element, element is! ErroneousElement, | 88 assert(invariant(element, element is! ErroneousElement, |
88 message: "Element $element expected to have parse errors.")); | 89 message: "Element $element expected to have parse errors.")); |
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
627 () => measure(() { | 628 () => measure(() { |
628 assert(element.resolutionState == STATE_NOT_STARTED); | 629 assert(element.resolutionState == STATE_NOT_STARTED); |
629 element.resolutionState = STATE_STARTED; | 630 element.resolutionState = STATE_STARTED; |
630 Node tree = element.parseNode(parsingContext); | 631 Node tree = element.parseNode(parsingContext); |
631 loadSupertypes(element, tree); | 632 loadSupertypes(element, tree); |
632 | 633 |
633 ClassResolverVisitor visitor = | 634 ClassResolverVisitor visitor = |
634 new ClassResolverVisitor(resolution, element, registry); | 635 new ClassResolverVisitor(resolution, element, registry); |
635 visitor.visit(tree); | 636 visitor.visit(tree); |
636 element.resolutionState = STATE_DONE; | 637 element.resolutionState = STATE_DONE; |
637 resolution.onClassResolved(element); | |
638 pendingClassesToBePostProcessed.add(element); | 638 pendingClassesToBePostProcessed.add(element); |
639 })); | 639 })); |
640 if (element.isPatched) { | 640 if (element.isPatched) { |
641 // Ensure handling patch after origin. | 641 // Ensure handling patch after origin. |
642 element.patch.ensureResolved(resolution); | 642 element.patch.ensureResolved(resolution); |
643 } | 643 } |
644 } else { | 644 } else { |
645 // Handle patch classes: | 645 // Handle patch classes: |
646 element.resolutionState = STATE_STARTED; | 646 element.resolutionState = STATE_STARTED; |
647 // Ensure handling origin before patch. | 647 // Ensure handling origin before patch. |
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1122 TreeElements get treeElements { | 1122 TreeElements get treeElements { |
1123 assert(invariant(this, _treeElements != null, | 1123 assert(invariant(this, _treeElements != null, |
1124 message: "TreeElements have not been computed for $this.")); | 1124 message: "TreeElements have not been computed for $this.")); |
1125 return _treeElements; | 1125 return _treeElements; |
1126 } | 1126 } |
1127 | 1127 |
1128 void reuseElement() { | 1128 void reuseElement() { |
1129 _treeElements = null; | 1129 _treeElements = null; |
1130 } | 1130 } |
1131 } | 1131 } |
OLD | NEW |