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 part of resolution; | 5 part of resolution; |
6 | 6 |
7 abstract class TreeElements { | 7 abstract class TreeElements { |
8 Element operator[](Node node); | 8 Element operator[](Node node); |
9 Selector getSelector(Send send); | 9 Selector getSelector(Send send); |
10 DartType getType(Node node); | 10 DartType getType(Node node); |
(...skipping 1103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1114 } else if (element.isClass()) { | 1114 } else if (element.isClass()) { |
1115 ClassElement cls = element; | 1115 ClassElement cls = element; |
1116 cls.ensureResolved(compiler); | 1116 cls.ensureResolved(compiler); |
1117 Link<DartType> arguments = | 1117 Link<DartType> arguments = |
1118 resolveTypeArguments(node, cls.typeVariables, scope, | 1118 resolveTypeArguments(node, cls.typeVariables, scope, |
1119 onFailure, whenResolved); | 1119 onFailure, whenResolved); |
1120 if (cls.typeVariables.isEmpty && arguments.isEmpty) { | 1120 if (cls.typeVariables.isEmpty && arguments.isEmpty) { |
1121 // Use the canonical type if it has no type parameters. | 1121 // Use the canonical type if it has no type parameters. |
1122 type = cls.computeType(compiler); | 1122 type = cls.computeType(compiler); |
1123 } else { | 1123 } else { |
1124 type = new InterfaceType(cls, arguments); | 1124 type = new InterfaceType(cls.declaration, arguments); |
1125 } | 1125 } |
1126 } else if (element.isTypedef()) { | 1126 } else if (element.isTypedef()) { |
1127 TypedefElement typdef = element; | 1127 TypedefElement typdef = element; |
1128 // TODO(ahe): Should be [ensureResolved]. | 1128 // TODO(ahe): Should be [ensureResolved]. |
1129 compiler.resolveTypedef(typdef); | 1129 compiler.resolveTypedef(typdef); |
1130 typdef.computeType(compiler); | 1130 typdef.computeType(compiler); |
1131 Link<DartType> arguments = resolveTypeArguments( | 1131 Link<DartType> arguments = resolveTypeArguments( |
1132 node, typdef.typeVariables, | 1132 node, typdef.typeVariables, |
1133 scope, onFailure, whenResolved); | 1133 scope, onFailure, whenResolved); |
1134 if (typdef.typeVariables.isEmpty && arguments.isEmpty) { | 1134 if (typdef.typeVariables.isEmpty && arguments.isEmpty) { |
(...skipping 1984 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3119 return e; | 3119 return e; |
3120 } | 3120 } |
3121 | 3121 |
3122 /// Assumed to be called by [resolveRedirectingFactory]. | 3122 /// Assumed to be called by [resolveRedirectingFactory]. |
3123 Element visitReturn(Return node) { | 3123 Element visitReturn(Return node) { |
3124 Node expression = node.expression; | 3124 Node expression = node.expression; |
3125 return finishConstructorReference(visit(expression), | 3125 return finishConstructorReference(visit(expression), |
3126 expression, expression); | 3126 expression, expression); |
3127 } | 3127 } |
3128 } | 3128 } |
OLD | NEW |