| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 fasta.analyzer.element_store; | 5 library fasta.analyzer.element_store; |
| 6 | 6 |
| 7 import 'package:analyzer/src/kernel/loader.dart' show ReferenceLevelLoader; | 7 import 'package:analyzer/src/kernel/loader.dart' show ReferenceLevelLoader; |
| 8 | 8 |
| 9 import 'package:kernel/ast.dart'; | 9 import 'package:kernel/ast.dart'; |
| 10 | 10 |
| 11 import 'package:analyzer/analyzer.dart' show ParameterKind; | 11 import 'package:analyzer/analyzer.dart' show ParameterKind; |
| 12 | 12 |
| 13 import 'package:analyzer/analyzer.dart' as analyzer; | 13 import 'package:analyzer/analyzer.dart' as analyzer; |
| 14 | 14 |
| 15 import 'package:analyzer/dart/element/element.dart'; | 15 import 'package:analyzer/dart/element/element.dart'; |
| 16 | 16 |
| 17 import 'package:analyzer/dart/element/type.dart' as analyzer; | 17 import 'package:analyzer/dart/element/type.dart' as analyzer; |
| 18 | 18 |
| 19 import 'package:front_end/src/fasta/deprecated_problems.dart' | 19 import 'package:front_end/src/fasta/problems.dart' show unhandled, unsupported; |
| 20 show deprecated_internalProblem; | |
| 21 | 20 |
| 22 import 'package:front_end/src/fasta/kernel/kernel_builder.dart'; | 21 import 'package:front_end/src/fasta/kernel/kernel_builder.dart'; |
| 23 | 22 |
| 24 import 'package:front_end/src/fasta/dill/dill_member_builder.dart'; | 23 import 'package:front_end/src/fasta/dill/dill_member_builder.dart'; |
| 25 | 24 |
| 26 import 'mock_element.dart'; | 25 import 'mock_element.dart'; |
| 27 | 26 |
| 28 import 'mock_type.dart'; | 27 import 'mock_type.dart'; |
| 29 | 28 |
| 30 abstract class ElementStore implements ReferenceLevelLoader { | 29 abstract class ElementStore implements ReferenceLevelLoader { |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 do { | 79 do { |
| 81 if (builder is ClassBuilder) { | 80 if (builder is ClassBuilder) { |
| 82 elements[builder] = new KernelClassElement(builder); | 81 elements[builder] = new KernelClassElement(builder); |
| 83 } else if (builder is KernelFunctionTypeAliasBuilder) { | 82 } else if (builder is KernelFunctionTypeAliasBuilder) { |
| 84 elements[builder] = new KernelFunctionTypeAliasElement(builder); | 83 elements[builder] = new KernelFunctionTypeAliasElement(builder); |
| 85 } else if (builder is DillMemberBuilder) { | 84 } else if (builder is DillMemberBuilder) { |
| 86 Member member = builder.member; | 85 Member member = builder.member; |
| 87 if (member is Field) {} else if (member is Procedure) { | 86 if (member is Field) {} else if (member is Procedure) { |
| 88 buildDillFunctionElement(builder, unit, elements); | 87 buildDillFunctionElement(builder, unit, elements); |
| 89 } else { | 88 } else { |
| 90 deprecated_internalProblem( | 89 unhandled("'$name' (${member.runtimeType})", "element store", |
| 91 "Unhandled $name ${member.runtimeType} in $uri"); | 90 builder.charOffset, uri); |
| 92 } | 91 } |
| 93 } else if (builder is KernelProcedureBuilder) { | 92 } else if (builder is KernelProcedureBuilder) { |
| 94 buildKernelFunctionElement(builder, unit, elements); | 93 buildKernelFunctionElement(builder, unit, elements); |
| 95 } else if (builder is BuiltinTypeBuilder) { | 94 } else if (builder is BuiltinTypeBuilder) { |
| 96 // TODO(ahe): Set up elements for dynamic and void. | 95 // TODO(ahe): Set up elements for dynamic and void. |
| 97 } else { | 96 } else { |
| 98 deprecated_internalProblem( | 97 unhandled("'$name' (${builder.runtimeType})", "element store", |
| 99 "Unhandled $name ${builder.runtimeType} in $uri"); | 98 builder.charOffset, uri); |
| 100 } | 99 } |
| 101 builder = builder.next; | 100 builder = builder.next; |
| 102 } while (builder != null); | 101 } while (builder != null); |
| 103 }); | 102 }); |
| 104 }); | 103 }); |
| 105 return new ElementStoreImplementation.internal(coreLibrary, elements); | 104 return new ElementStoreImplementation.internal(coreLibrary, elements); |
| 106 } | 105 } |
| 107 | 106 |
| 108 bool get ignoreRedirectingFactories => false; | 107 bool get ignoreRedirectingFactories => false; |
| 109 | 108 |
| 110 Constructor getCoreClassConstructorReference(String className, | 109 Constructor getCoreClassConstructorReference(String className, |
| 111 {String constructorName, String library}) { | 110 {String constructorName, String library}) { |
| 112 assert(library == null); | 111 assert(library == null); |
| 113 return coreLibrary | 112 return coreLibrary |
| 114 .getConstructor(className, constructorName: constructorName) | 113 .getConstructor(className, constructorName: constructorName) |
| 115 .target; | 114 .target; |
| 116 } | 115 } |
| 117 | 116 |
| 118 Library getLibraryReference(LibraryElement element) { | 117 Library getLibraryReference(LibraryElement element) { |
| 119 return deprecated_internalProblem("not supported."); | 118 return unsupported("getLibraryReference", -1, null); |
| 120 } | 119 } |
| 121 | 120 |
| 122 Class getClassReference(covariant KernelClassElement cls) => cls.builder.cls; | 121 Class getClassReference(covariant KernelClassElement cls) => cls.builder.cls; |
| 123 | 122 |
| 124 Member getMemberReference(Element element) { | 123 Member getMemberReference(Element element) { |
| 125 if (element is KernelFunctionElement) { | 124 if (element is KernelFunctionElement) { |
| 126 return element.procedure; | 125 return element.procedure; |
| 127 } else { | 126 } else { |
| 128 return deprecated_internalProblem( | 127 return unhandled( |
| 129 "getMemberReference(${element.runtimeType})"); | 128 "${element.runtimeType}", "getMemberReference", -1, null); |
| 130 } | 129 } |
| 131 } | 130 } |
| 132 | 131 |
| 133 Class getRootClassReference() => deprecated_internalProblem("not supported."); | 132 Class getRootClassReference() => |
| 133 unsupported("getRootClassReference", -1, null); |
| 134 | 134 |
| 135 Constructor getRootClassConstructorReference() { | 135 Constructor getRootClassConstructorReference() { |
| 136 return deprecated_internalProblem("not supported."); | 136 return unsupported("getRootClassConstructorReference", -1, null); |
| 137 } | 137 } |
| 138 | 138 |
| 139 Class getCoreClassReference(String className) { | 139 Class getCoreClassReference(String className) { |
| 140 return deprecated_internalProblem("not supported."); | 140 return unsupported("getCoreClassReference", -1, null); |
| 141 } | 141 } |
| 142 | 142 |
| 143 TypeParameter tryGetClassTypeParameter(TypeParameterElement element) { | 143 TypeParameter tryGetClassTypeParameter(TypeParameterElement element) { |
| 144 return deprecated_internalProblem("not supported."); | 144 return unsupported("tryGetClassTypeParameter", -1, null); |
| 145 } | 145 } |
| 146 | 146 |
| 147 Class getSharedMixinApplicationClass( | 147 Class getSharedMixinApplicationClass( |
| 148 Library library, Class supertype, Class mixin) { | 148 Library library, Class supertype, Class mixin) { |
| 149 return deprecated_internalProblem("not supported."); | 149 return unsupported("getSharedMixinApplicationClass", -1, null); |
| 150 } | 150 } |
| 151 | 151 |
| 152 bool get strongMode => false; | 152 bool get strongMode => false; |
| 153 | 153 |
| 154 static void buildDillFunctionElement(DillMemberBuilder builder, | 154 static void buildDillFunctionElement(DillMemberBuilder builder, |
| 155 KernelCompilationUnitElement unit, Map<Builder, Element> elements) { | 155 KernelCompilationUnitElement unit, Map<Builder, Element> elements) { |
| 156 Procedure procedure = builder.member; | 156 Procedure procedure = builder.member; |
| 157 List<VariableDeclaration> positionalParameters = | 157 List<VariableDeclaration> positionalParameters = |
| 158 procedure.function.positionalParameters; | 158 procedure.function.positionalParameters; |
| 159 List<VariableDeclaration> namedParameters = | 159 List<VariableDeclaration> namedParameters = |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 String get name => variable.name.name; | 257 String get name => variable.name.name; |
| 258 | 258 |
| 259 bool get isFinal => false; // TODO(ahe): implement this. | 259 bool get isFinal => false; // TODO(ahe): implement this. |
| 260 | 260 |
| 261 bool get isConst => false; // TODO(ahe): implement this. | 261 bool get isConst => false; // TODO(ahe): implement this. |
| 262 | 262 |
| 263 analyzer.VariableDeclaration get target => variable; | 263 analyzer.VariableDeclaration get target => variable; |
| 264 | 264 |
| 265 get type => null; | 265 get type => null; |
| 266 | 266 |
| 267 get constantValue => deprecated_internalProblem("not supported."); | 267 get constantValue => unsupported("constantValue", charOffset, fileUri); |
| 268 | 268 |
| 269 computeConstantValue() => deprecated_internalProblem("not supported."); | 269 computeConstantValue() => |
| 270 unsupported("computeConstantValue", charOffset, fileUri); |
| 270 } | 271 } |
| 271 | 272 |
| 272 /// Both an [Element] and [Builder] to using memory to store local elements in | 273 /// Both an [Element] and [Builder] to using memory to store local elements in |
| 273 /// [ElementStore]. | 274 /// [ElementStore]. |
| 274 class AnalyzerParameterElement extends MockParameterElement { | 275 class AnalyzerParameterElement extends MockParameterElement { |
| 275 final analyzer.FormalParameter parameter; | 276 final analyzer.FormalParameter parameter; |
| 276 | 277 |
| 277 AnalyzerParameterElement(this.parameter); | 278 AnalyzerParameterElement(this.parameter); |
| 278 | 279 |
| 279 String get name => parameter.identifier.name; | 280 String get name => parameter.identifier.name; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 295 } | 296 } |
| 296 } | 297 } |
| 297 | 298 |
| 298 class KernelFunctionTypeAliasElement extends MockFunctionTypeAliasElement { | 299 class KernelFunctionTypeAliasElement extends MockFunctionTypeAliasElement { |
| 299 final KernelFunctionTypeAliasBuilder builder; | 300 final KernelFunctionTypeAliasBuilder builder; |
| 300 | 301 |
| 301 KernelFunctionTypeAliasElement(this.builder); | 302 KernelFunctionTypeAliasElement(this.builder); |
| 302 | 303 |
| 303 @override | 304 @override |
| 304 analyzer.DartType get returnType { | 305 analyzer.DartType get returnType { |
| 305 return deprecated_internalProblem("not supported."); | 306 return unsupported("returnType", charOffset, fileUri); |
| 306 } | 307 } |
| 307 | 308 |
| 308 @override | 309 @override |
| 309 analyzer.FunctionType get type { | 310 analyzer.FunctionType get type { |
| 310 return deprecated_internalProblem("not supported."); | 311 return unsupported("type", charOffset, fileUri); |
| 311 } | 312 } |
| 312 | 313 |
| 313 @override | 314 @override |
| 314 List<TypeParameterElement> get typeParameters { | 315 List<TypeParameterElement> get typeParameters { |
| 315 return deprecated_internalProblem("not supported."); | 316 return unsupported("typeParameters", charOffset, fileUri); |
| 316 } | 317 } |
| 317 } | 318 } |
| 318 | 319 |
| 319 class KernelInterfaceType extends MockInterfaceType { | 320 class KernelInterfaceType extends MockInterfaceType { |
| 320 final KernelClassElement element; | 321 final KernelClassElement element; |
| 321 | 322 |
| 322 KernelInterfaceType(this.element); | 323 KernelInterfaceType(this.element); |
| 323 | 324 |
| 324 List<analyzer.DartType> get typeArguments => const <analyzer.DartType>[]; | 325 List<analyzer.DartType> get typeArguments => const <analyzer.DartType>[]; |
| 325 } | 326 } |
| OLD | NEW |