| 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>[];
 | 
| -}
 | 
| 
 |