OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 elements.modelx; | 5 library elements.modelx; |
6 | 6 |
7 import '../common.dart'; | 7 import '../common.dart'; |
8 import '../common/resolution.dart' show Resolution, ParsingContext; | 8 import '../common/resolution.dart' show Resolution, ParsingContext; |
9 import '../compiler.dart' show Compiler; | 9 import '../compiler.dart' show Compiler; |
10 import '../constants/constant_constructors.dart'; | 10 import '../constants/constant_constructors.dart'; |
(...skipping 2266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2277 bool get hasNode => false; | 2277 bool get hasNode => false; |
2278 | 2278 |
2279 FunctionExpression get node => null; | 2279 FunctionExpression get node => null; |
2280 | 2280 |
2281 @override | 2281 @override |
2282 SetterElement get setter => null; | 2282 SetterElement get setter => null; |
2283 } | 2283 } |
2284 | 2284 |
2285 class ConstructorBodyElementX extends BaseFunctionElementX | 2285 class ConstructorBodyElementX extends BaseFunctionElementX |
2286 implements ConstructorBodyElement { | 2286 implements ConstructorBodyElement { |
2287 ConstructorElementX constructor; | 2287 final ResolvedAst _resolvedAst; |
| 2288 final ConstructorElement constructor; |
2288 | 2289 |
2289 ConstructorBodyElementX(ConstructorElementX constructor) | 2290 ConstructorBodyElementX( |
2290 : this.constructor = constructor, | 2291 ResolvedAst resolvedAst, ConstructorElement constructor) |
| 2292 : this._resolvedAst = resolvedAst, |
| 2293 this.constructor = constructor, |
2291 super(constructor.name, ElementKind.GENERATIVE_CONSTRUCTOR_BODY, | 2294 super(constructor.name, ElementKind.GENERATIVE_CONSTRUCTOR_BODY, |
2292 Modifiers.EMPTY, constructor.enclosingElement) { | 2295 Modifiers.EMPTY, constructor.enclosingElement) { |
2293 functionSignature = constructor.functionSignature; | 2296 functionSignature = constructor.functionSignature; |
2294 } | 2297 } |
2295 | 2298 |
2296 bool get hasNode => constructor.hasNode; | 2299 bool get hasNode => _resolvedAst.kind == ResolvedAstKind.PARSED; |
2297 | 2300 |
2298 FunctionExpression get node => constructor.node; | 2301 FunctionExpression get node => _resolvedAst.node; |
| 2302 |
| 2303 ResolvedAst get resolvedAst { |
| 2304 if (_resolvedAst.kind == ResolvedAstKind.PARSED) { |
| 2305 return new ParsedResolvedAst(declaration, _resolvedAst.node, |
| 2306 _resolvedAst.body, _resolvedAst.elements, _resolvedAst.sourceUri); |
| 2307 } else { |
| 2308 return new SynthesizedResolvedAst(declaration, _resolvedAst.kind); |
| 2309 } |
| 2310 } |
2299 | 2311 |
2300 List<MetadataAnnotation> get metadata => constructor.metadata; | 2312 List<MetadataAnnotation> get metadata => constructor.metadata; |
2301 | 2313 |
2302 bool get isInstanceMember => true; | 2314 bool get isInstanceMember => true; |
2303 | 2315 |
2304 FunctionType computeType(Resolution resolution) { | 2316 FunctionType computeType(Resolution resolution) { |
2305 DiagnosticReporter reporter = resolution.reporter; | 2317 DiagnosticReporter reporter = resolution.reporter; |
2306 reporter.internalError(this, '$this.computeType.'); | 2318 reporter.internalError(this, '$this.computeType.'); |
2307 return null; | 2319 return null; |
2308 } | 2320 } |
2309 | 2321 |
| 2322 int get sourceOffset => constructor.sourceOffset; |
| 2323 |
2310 Token get position => constructor.position; | 2324 Token get position => constructor.position; |
2311 | 2325 |
2312 Element get outermostEnclosingMemberOrTopLevel => constructor; | 2326 Element get outermostEnclosingMemberOrTopLevel => constructor; |
2313 | 2327 |
2314 Element get analyzableElement => constructor.analyzableElement; | 2328 Element get analyzableElement => constructor.analyzableElement; |
2315 | 2329 |
2316 accept(ElementVisitor visitor, arg) { | 2330 accept(ElementVisitor visitor, arg) { |
2317 return visitor.visitConstructorBodyElement(this, arg); | 2331 return visitor.visitConstructorBodyElement(this, arg); |
2318 } | 2332 } |
2319 | 2333 |
(...skipping 948 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3268 body = node.asFunctionExpression().body; | 3282 body = node.asFunctionExpression().body; |
3269 } | 3283 } |
3270 return new ParsedResolvedAst( | 3284 return new ParsedResolvedAst( |
3271 declaration, | 3285 declaration, |
3272 node, | 3286 node, |
3273 body, | 3287 body, |
3274 definingElement.treeElements, | 3288 definingElement.treeElements, |
3275 definingElement.compilationUnit.script.resourceUri); | 3289 definingElement.compilationUnit.script.resourceUri); |
3276 } | 3290 } |
3277 } | 3291 } |
OLD | NEW |