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 closureToClassMapper; | 5 library closureToClassMapper; |
6 | 6 |
7 import 'common/names.dart' show Identifiers; | 7 import 'common/names.dart' show Identifiers; |
8 import 'common/resolution.dart' show ParsingContext, Resolution; | 8 import 'common/resolution.dart' show ParsingContext, Resolution; |
9 import 'common/tasks.dart' show CompilerTask; | 9 import 'common/tasks.dart' show CompilerTask; |
10 import 'common.dart'; | 10 import 'common.dart'; |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 | 143 |
144 /// Use [closureClass] instead. | 144 /// Use [closureClass] instead. |
145 @deprecated | 145 @deprecated |
146 get enclosingElement => super.enclosingElement; | 146 get enclosingElement => super.enclosingElement; |
147 | 147 |
148 ClosureClassElement get closureClass => super.enclosingElement; | 148 ClosureClassElement get closureClass => super.enclosingElement; |
149 | 149 |
150 MemberElement get memberContext => closureClass.methodElement.memberContext; | 150 MemberElement get memberContext => closureClass.methodElement.memberContext; |
151 | 151 |
152 @override | 152 @override |
153 Entity get declaredEntity => local; | 153 Local get declaredEntity => local; |
| 154 |
154 @override | 155 @override |
155 Entity get rootOfScope => closureClass; | 156 Entity get rootOfScope => closureClass; |
156 | 157 |
157 bool get hasNode => false; | 158 bool get hasNode => false; |
158 | 159 |
159 Node get node { | 160 Node get node { |
160 throw new SpannableAssertionFailure( | 161 throw new SpannableAssertionFailure( |
161 local, 'Should not access node of ClosureFieldElement.'); | 162 local, 'Should not access node of ClosureFieldElement.'); |
162 } | 163 } |
163 | 164 |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
285 @override | 286 @override |
286 MemberElement get memberContext => executableContext.memberContext; | 287 MemberElement get memberContext => executableContext.memberContext; |
287 | 288 |
288 String toString() => 'BoxLocal($name)'; | 289 String toString() => 'BoxLocal($name)'; |
289 } | 290 } |
290 | 291 |
291 // TODO(ngeoffray, ahe): These classes continuously cause problems. We need to | 292 // TODO(ngeoffray, ahe): These classes continuously cause problems. We need to |
292 // find a more general solution. | 293 // find a more general solution. |
293 class BoxFieldElement extends ElementX | 294 class BoxFieldElement extends ElementX |
294 implements TypedElement, FieldElement, PrivatelyNamedJSEntity { | 295 implements TypedElement, FieldElement, PrivatelyNamedJSEntity { |
| 296 final LocalVariableElement variableElement; |
295 final BoxLocal box; | 297 final BoxLocal box; |
296 | 298 |
297 BoxFieldElement(String name, this.variableElement, BoxLocal box) | 299 BoxFieldElement(String name, this.variableElement, BoxLocal box) |
298 : this.box = box, | 300 : this.box = box, |
299 super(name, ElementKind.FIELD, box.executableContext); | 301 super(name, ElementKind.FIELD, box.executableContext); |
300 | 302 |
301 ResolutionDartType computeType(Resolution resolution) => type; | 303 ResolutionDartType computeType(Resolution resolution) => type; |
302 | 304 |
303 ResolutionDartType get type => variableElement.type; | 305 ResolutionDartType get type => variableElement.type; |
304 | 306 |
305 @override | 307 @override |
306 Entity get declaredEntity => variableElement; | 308 Local get declaredEntity => variableElement; |
| 309 |
307 @override | 310 @override |
308 Entity get rootOfScope => box; | 311 Entity get rootOfScope => box; |
309 | 312 |
310 final VariableElement variableElement; | |
311 | |
312 accept(ElementVisitor visitor, arg) { | 313 accept(ElementVisitor visitor, arg) { |
313 return visitor.visitBoxFieldElement(this, arg); | 314 return visitor.visitBoxFieldElement(this, arg); |
314 } | 315 } |
315 | 316 |
316 @override | 317 @override |
317 bool get hasNode => false; | 318 bool get hasNode => false; |
318 | 319 |
319 @override | 320 @override |
320 bool get hasResolvedAst => false; | 321 bool get hasResolvedAst => false; |
321 | 322 |
(...skipping 914 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1236 sb.write('#'); | 1237 sb.write('#'); |
1237 sb.write(name); | 1238 sb.write(name); |
1238 sb.write(')'); | 1239 sb.write(')'); |
1239 return sb.toString(); | 1240 return sb.toString(); |
1240 } | 1241 } |
1241 } | 1242 } |
1242 | 1243 |
1243 /// | 1244 /// |
1244 /// Move the below classes to a JS model eventually. | 1245 /// Move the below classes to a JS model eventually. |
1245 /// | 1246 /// |
1246 abstract class JSEntity implements Entity { | 1247 abstract class JSEntity implements MemberEntity { |
1247 Entity get declaredEntity; | 1248 Local get declaredEntity; |
1248 } | 1249 } |
1249 | 1250 |
1250 abstract class PrivatelyNamedJSEntity implements JSEntity { | 1251 abstract class PrivatelyNamedJSEntity implements JSEntity { |
1251 Entity get rootOfScope; | 1252 Entity get rootOfScope; |
1252 } | 1253 } |
OLD | NEW |