| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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_strategy; | 5 library dart2js.resolution_strategy; |
| 6 | 6 |
| 7 import '../common.dart'; | 7 import '../common.dart'; |
| 8 import '../common_elements.dart'; | 8 import '../common_elements.dart'; |
| 9 import '../common/backend_api.dart'; | 9 import '../common/backend_api.dart'; |
| 10 import '../common/names.dart'; | 10 import '../common/names.dart'; |
| 11 import '../common/resolution.dart'; | 11 import '../common/resolution.dart'; |
| 12 import '../common/tasks.dart'; | 12 import '../common/tasks.dart'; |
| 13 import '../common/work.dart'; | 13 import '../common/work.dart'; |
| 14 import '../compiler.dart'; | 14 import '../compiler.dart'; |
| 15 import '../constants/values.dart'; | 15 import '../constants/values.dart'; |
| 16 import '../elements/elements.dart'; | 16 import '../elements/elements.dart'; |
| 17 import '../elements/entities.dart'; | 17 import '../elements/entities.dart'; |
| 18 import '../elements/modelx.dart'; | 18 import '../elements/modelx.dart'; |
| 19 import '../elements/resolution_types.dart'; | 19 import '../elements/resolution_types.dart'; |
| 20 import '../elements/types.dart'; |
| 20 import '../environment.dart'; | 21 import '../environment.dart'; |
| 21 import '../enqueue.dart'; | 22 import '../enqueue.dart'; |
| 22 import '../frontend_strategy.dart'; | 23 import '../frontend_strategy.dart'; |
| 23 import '../js_backend/backend.dart'; | 24 import '../js_backend/backend.dart'; |
| 24 import '../js_backend/backend_usage.dart'; | 25 import '../js_backend/backend_usage.dart'; |
| 25 import '../js_backend/custom_elements_analysis.dart'; | 26 import '../js_backend/custom_elements_analysis.dart'; |
| 26 import '../js_backend/interceptor_data.dart'; | 27 import '../js_backend/interceptor_data.dart'; |
| 27 import '../js_backend/mirrors_analysis.dart'; | 28 import '../js_backend/mirrors_analysis.dart'; |
| 28 import '../js_backend/mirrors_data.dart'; | 29 import '../js_backend/mirrors_data.dart'; |
| 29 import '../js_backend/native_data.dart'; | 30 import '../js_backend/native_data.dart'; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 42 /// [FrontendStrategy] that loads '.dart' files and creates a resolved element | 43 /// [FrontendStrategy] that loads '.dart' files and creates a resolved element |
| 43 /// model using the resolver. | 44 /// model using the resolver. |
| 44 class ResolutionFrontEndStrategy implements FrontEndStrategy { | 45 class ResolutionFrontEndStrategy implements FrontEndStrategy { |
| 45 final Compiler _compiler; | 46 final Compiler _compiler; |
| 46 final ElementEnvironment elementEnvironment; | 47 final ElementEnvironment elementEnvironment; |
| 47 AnnotationProcessor _annotationProcessor; | 48 AnnotationProcessor _annotationProcessor; |
| 48 | 49 |
| 49 ResolutionFrontEndStrategy(this._compiler) | 50 ResolutionFrontEndStrategy(this._compiler) |
| 50 : elementEnvironment = new _CompilerElementEnvironment(_compiler); | 51 : elementEnvironment = new _CompilerElementEnvironment(_compiler); |
| 51 | 52 |
| 53 DartTypes get dartTypes => _compiler.types; |
| 54 |
| 52 LibraryLoaderTask createLibraryLoader( | 55 LibraryLoaderTask createLibraryLoader( |
| 53 ResolvedUriTranslator uriTranslator, | 56 ResolvedUriTranslator uriTranslator, |
| 54 ScriptLoader scriptLoader, | 57 ScriptLoader scriptLoader, |
| 55 ElementScanner scriptScanner, | 58 ElementScanner scriptScanner, |
| 56 LibraryDeserializer deserializer, | 59 LibraryDeserializer deserializer, |
| 57 PatchResolverFunction patchResolverFunc, | 60 PatchResolverFunction patchResolverFunc, |
| 58 PatchParserTask patchParser, | 61 PatchParserTask patchParser, |
| 59 Environment environment, | 62 Environment environment, |
| 60 DiagnosticReporter reporter, | 63 DiagnosticReporter reporter, |
| 61 Measurer measurer) { | 64 Measurer measurer) { |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 } | 253 } |
| 251 | 254 |
| 252 @override | 255 @override |
| 253 ResolutionInterfaceType createInterfaceType( | 256 ResolutionInterfaceType createInterfaceType( |
| 254 ClassElement cls, List<ResolutionDartType> typeArguments) { | 257 ClassElement cls, List<ResolutionDartType> typeArguments) { |
| 255 cls.ensureResolved(_resolution); | 258 cls.ensureResolved(_resolution); |
| 256 return cls.thisType.createInstantiation(typeArguments); | 259 return cls.thisType.createInstantiation(typeArguments); |
| 257 } | 260 } |
| 258 | 261 |
| 259 @override | 262 @override |
| 260 bool isSubtype(ResolutionDartType a, ResolutionDartType b) { | |
| 261 return _compiler.types.isSubtype(a, b); | |
| 262 } | |
| 263 | |
| 264 @override | |
| 265 MemberElement lookupClassMember(ClassElement cls, String name, | 263 MemberElement lookupClassMember(ClassElement cls, String name, |
| 266 {bool setter: false, bool required: false}) { | 264 {bool setter: false, bool required: false}) { |
| 267 cls.ensureResolved(_resolution); | 265 cls.ensureResolved(_resolution); |
| 268 Element member = cls.implementation.lookupLocalMember(name); | 266 Element member = cls.implementation.lookupLocalMember(name); |
| 269 if (member != null && member.isAbstractField) { | 267 if (member != null && member.isAbstractField) { |
| 270 AbstractFieldElement abstractField = member; | 268 AbstractFieldElement abstractField = member; |
| 271 if (setter) { | 269 if (setter) { |
| 272 member = abstractField.setter; | 270 member = abstractField.setter; |
| 273 } else { | 271 } else { |
| 274 member = abstractField.getter; | 272 member = abstractField.getter; |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 662 @override | 660 @override |
| 663 WorkItem createWorkItem(MemberElement element) { | 661 WorkItem createWorkItem(MemberElement element) { |
| 664 assert(invariant(element, element.isDeclaration)); | 662 assert(invariant(element, element.isDeclaration)); |
| 665 if (element.isMalformed) return null; | 663 if (element.isMalformed) return null; |
| 666 | 664 |
| 667 assert(invariant(element, element is AnalyzableElement, | 665 assert(invariant(element, element is AnalyzableElement, |
| 668 message: 'Element $element is not analyzable.')); | 666 message: 'Element $element is not analyzable.')); |
| 669 return _resolution.createWorkItem(element); | 667 return _resolution.createWorkItem(element); |
| 670 } | 668 } |
| 671 } | 669 } |
| OLD | NEW |