Index: pkg/analyzer/lib/src/fasta/element_store.dart |
diff --git a/pkg/analyzer/lib/src/fasta/element_store.dart b/pkg/analyzer/lib/src/fasta/element_store.dart |
deleted file mode 100644 |
index 1f268a372308a810c208d713953e49f874cffc20..0000000000000000000000000000000000000000 |
--- a/pkg/analyzer/lib/src/fasta/element_store.dart |
+++ /dev/null |
@@ -1,326 +0,0 @@ |
-// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-library fasta.analyzer.element_store; |
- |
-import 'package:analyzer/src/kernel/loader.dart' show ReferenceLevelLoader; |
- |
-import 'package:kernel/ast.dart'; |
- |
-import 'package:analyzer/analyzer.dart' show ParameterKind; |
- |
-import 'package:analyzer/analyzer.dart' as analyzer; |
- |
-import 'package:analyzer/dart/element/element.dart'; |
- |
-import 'package:analyzer/dart/element/type.dart' as analyzer; |
- |
-import 'package:front_end/src/fasta/problems.dart' show unhandled, unsupported; |
- |
-import 'package:front_end/src/fasta/kernel/kernel_builder.dart'; |
- |
-import 'package:front_end/src/fasta/dill/dill_member_builder.dart'; |
- |
-import 'mock_element.dart'; |
- |
-import 'mock_type.dart'; |
- |
-abstract class ElementStore implements ReferenceLevelLoader { |
- Element operator [](Builder builder); |
- |
- factory ElementStore( |
- LibraryBuilder coreLibrary, Map<Uri, LibraryBuilder> builders) = |
- ElementStoreImplementation; |
-} |
- |
-// ClassElement, |
-// ClassMemberElement, |
-// CompilationUnitElement, |
-// ConstructorElement, |
-// Element, |
-// FieldElement, |
-// FieldFormalParameterElement, |
-// FunctionElement, |
-// FunctionTypedElement, |
-// LibraryElement, |
-// LocalElement, |
-// LocalVariableElement, |
-// MethodElement, |
-// ParameterElement, |
-// PrefixElement, |
-// PropertyAccessorElement, |
-// TopLevelVariableElement, |
-// TypeParameterElement, |
-// VariableElement; |
-class ElementStoreImplementation implements ElementStore { |
- final LibraryBuilder coreLibrary; |
- |
- final Map<Builder, Element> elements; |
- |
- ElementStoreImplementation.internal(this.coreLibrary, this.elements); |
- |
- Element operator [](Builder builder) { |
- // Avoid storing local elements in the element store to reduce memory |
- // usage. So they both implement [Element] and [Builder]. |
- return builder is Element ? builder : elements[builder]; |
- } |
- |
- factory ElementStoreImplementation( |
- LibraryBuilder coreLibrary, Map<Uri, LibraryBuilder> libraries) { |
- Map<Builder, Element> elements = <Builder, Element>{}; |
- libraries.forEach((Uri uri, LibraryBuilder library) { |
- KernelCompilationUnitElement unit = |
- new KernelCompilationUnitElement(library); |
- KernelLibraryElement element = new KernelLibraryElement(unit); |
- elements[library] = element; |
- unit.library = element; |
- library.forEach((String name, Builder builder) { |
- do { |
- if (builder is ClassBuilder) { |
- elements[builder] = new KernelClassElement(builder); |
- } else if (builder is KernelFunctionTypeAliasBuilder) { |
- elements[builder] = new KernelFunctionTypeAliasElement(builder); |
- } else if (builder is DillMemberBuilder) { |
- Member member = builder.member; |
- if (member is Field) {} else if (member is Procedure) { |
- buildDillFunctionElement(builder, unit, elements); |
- } else { |
- unhandled("'$name' (${member.runtimeType})", "element store", |
- builder.charOffset, uri); |
- } |
- } else if (builder is KernelProcedureBuilder) { |
- buildKernelFunctionElement(builder, unit, elements); |
- } else if (builder is BuiltinTypeBuilder) { |
- // TODO(ahe): Set up elements for dynamic and void. |
- } else { |
- unhandled("'$name' (${builder.runtimeType})", "element store", |
- builder.charOffset, uri); |
- } |
- builder = builder.next; |
- } while (builder != null); |
- }); |
- }); |
- return new ElementStoreImplementation.internal(coreLibrary, elements); |
- } |
- |
- bool get ignoreRedirectingFactories => false; |
- |
- Constructor getCoreClassConstructorReference(String className, |
- {String constructorName, String library}) { |
- assert(library == null); |
- return coreLibrary |
- .getConstructor(className, constructorName: constructorName) |
- .target; |
- } |
- |
- Library getLibraryReference(LibraryElement element) { |
- return unsupported("getLibraryReference", -1, null); |
- } |
- |
- Class getClassReference(covariant KernelClassElement cls) => cls.builder.cls; |
- |
- Member getMemberReference(Element element) { |
- if (element is KernelFunctionElement) { |
- return element.procedure; |
- } else { |
- return unhandled( |
- "${element.runtimeType}", "getMemberReference", -1, null); |
- } |
- } |
- |
- Class getRootClassReference() => |
- unsupported("getRootClassReference", -1, null); |
- |
- Constructor getRootClassConstructorReference() { |
- return unsupported("getRootClassConstructorReference", -1, null); |
- } |
- |
- Class getCoreClassReference(String className) { |
- return unsupported("getCoreClassReference", -1, null); |
- } |
- |
- TypeParameter tryGetClassTypeParameter(TypeParameterElement element) { |
- return unsupported("tryGetClassTypeParameter", -1, null); |
- } |
- |
- Class getSharedMixinApplicationClass( |
- Library library, Class supertype, Class mixin) { |
- return unsupported("getSharedMixinApplicationClass", -1, null); |
- } |
- |
- bool get strongMode => false; |
- |
- static void buildDillFunctionElement(DillMemberBuilder builder, |
- KernelCompilationUnitElement unit, Map<Builder, Element> elements) { |
- Procedure procedure = builder.member; |
- List<VariableDeclaration> positionalParameters = |
- procedure.function.positionalParameters; |
- List<VariableDeclaration> namedParameters = |
- procedure.function.namedParameters; |
- int requiredParameterCount = procedure.function.requiredParameterCount; |
- List<KernelParameterElement> parameters = new List<KernelParameterElement>( |
- positionalParameters.length + namedParameters.length); |
- int i = 0; |
- for (VariableDeclaration parameter in positionalParameters) { |
- parameters[i] = buildFormalParameter(parameter, |
- isOptional: i >= requiredParameterCount); |
- i++; |
- } |
- for (VariableDeclaration parameter in namedParameters) { |
- parameters[i++] = buildFormalParameter(parameter, isNamed: true); |
- } |
- elements[builder] = new KernelFunctionElement(procedure, unit, parameters); |
- } |
- |
- static void buildKernelFunctionElement(KernelProcedureBuilder builder, |
- KernelCompilationUnitElement unit, Map<Builder, Element> elements) { |
- assert(builder.procedure != null); |
- List<KernelParameterElement> parameters; |
- int i = 0; |
- if (builder.formals != null) { |
- parameters = new List<KernelParameterElement>(builder.formals.length); |
- for (KernelFormalParameterBuilder parameter in builder.formals) { |
- assert(parameter.declaration != null); |
- elements[parameter] = parameters[i++] = buildFormalParameter( |
- parameter.declaration, |
- isOptional: parameter.isOptional, |
- isNamed: parameter.isNamed); |
- } |
- } else { |
- parameters = new List<KernelParameterElement>(0); |
- } |
- elements[builder] = |
- new KernelFunctionElement(builder.procedure, unit, parameters); |
- } |
- |
- static KernelParameterElement buildFormalParameter( |
- VariableDeclaration parameter, |
- {bool isOptional: true, |
- bool isNamed: false}) { |
- ParameterKind kind = isOptional |
- ? (isNamed ? ParameterKind.NAMED : ParameterKind.POSITIONAL) |
- : ParameterKind.REQUIRED; |
- return new KernelParameterElement(parameter, kind); |
- } |
-} |
- |
-class KernelLibraryElement extends MockLibraryElement { |
- final KernelCompilationUnitElement definingCompilationUnit; |
- |
- KernelLibraryElement(this.definingCompilationUnit); |
- |
- FunctionElement get loadLibraryFunction => null; |
-} |
- |
-class KernelCompilationUnitElement extends MockCompilationUnitElement { |
- final LibraryBuilder builder; |
- |
- KernelLibraryElement library; |
- |
- KernelCompilationUnitElement(this.builder); |
- |
- KernelLibraryElement get enclosingElement => library; |
- |
- String get uri => "${builder.uri}"; |
-} |
- |
-class KernelFunctionElement extends MockFunctionElement { |
- final Procedure procedure; |
- |
- final KernelCompilationUnitElement enclosingElement; |
- |
- final List<KernelParameterElement> parameters; |
- |
- KernelFunctionElement(this.procedure, this.enclosingElement, this.parameters); |
- |
- KernelLibraryElement get library => enclosingElement.library; |
-} |
- |
-class KernelParameterElement extends MockParameterElement { |
- final VariableDeclaration declaration; |
- |
- final ParameterKind parameterKind; |
- |
- KernelParameterElement(this.declaration, this.parameterKind); |
-} |
- |
-/// Both an [Element] and [Builder] to using memory to store local elements in |
-/// [ElementStore]. |
-class AnalyzerLocalVariableElemment extends MockElement |
- implements LocalVariableElement { |
- final analyzer.VariableDeclaration variable; |
- |
- AnalyzerLocalVariableElemment(this.variable) |
- : super(ElementKind.LOCAL_VARIABLE); |
- |
- String get name => variable.name.name; |
- |
- bool get isFinal => false; // TODO(ahe): implement this. |
- |
- bool get isConst => false; // TODO(ahe): implement this. |
- |
- analyzer.VariableDeclaration get target => variable; |
- |
- get type => null; |
- |
- get constantValue => unsupported("constantValue", charOffset, fileUri); |
- |
- computeConstantValue() => |
- unsupported("computeConstantValue", charOffset, fileUri); |
-} |
- |
-/// Both an [Element] and [Builder] to using memory to store local elements in |
-/// [ElementStore]. |
-class AnalyzerParameterElement extends MockParameterElement { |
- final analyzer.FormalParameter parameter; |
- |
- AnalyzerParameterElement(this.parameter); |
- |
- String get name => parameter.identifier.name; |
- |
- bool get isFinal => false; // TODO(ahe): implement this. |
- |
- bool get isConst => false; // TODO(ahe): implement this. |
- |
- analyzer.FormalParameter get target => parameter; |
-} |
- |
-class KernelClassElement extends MockClassElement { |
- final KernelClassBuilder builder; |
- |
- KernelInterfaceType rawType; |
- |
- KernelClassElement(this.builder) { |
- rawType = new KernelInterfaceType(this); |
- } |
-} |
- |
-class KernelFunctionTypeAliasElement extends MockFunctionTypeAliasElement { |
- final KernelFunctionTypeAliasBuilder builder; |
- |
- KernelFunctionTypeAliasElement(this.builder); |
- |
- @override |
- analyzer.DartType get returnType { |
- return unsupported("returnType", charOffset, fileUri); |
- } |
- |
- @override |
- analyzer.FunctionType get type { |
- return unsupported("type", charOffset, fileUri); |
- } |
- |
- @override |
- List<TypeParameterElement> get typeParameters { |
- return unsupported("typeParameters", charOffset, fileUri); |
- } |
-} |
- |
-class KernelInterfaceType extends MockInterfaceType { |
- final KernelClassElement element; |
- |
- KernelInterfaceType(this.element); |
- |
- List<analyzer.DartType> get typeArguments => const <analyzer.DartType>[]; |
-} |