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