| Index: mojo/public/dart/third_party/analyzer/lib/src/generated/testing/element_factory.dart
|
| diff --git a/mojo/public/dart/third_party/analyzer/lib/src/generated/testing/element_factory.dart b/mojo/public/dart/third_party/analyzer/lib/src/generated/testing/element_factory.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..58d7bae2c7275ad360a8c668abc638df665143a6
|
| --- /dev/null
|
| +++ b/mojo/public/dart/third_party/analyzer/lib/src/generated/testing/element_factory.dart
|
| @@ -0,0 +1,579 @@
|
| +// Copyright (c) 2014, 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 engine.testing.element_factory;
|
| +
|
| +import 'dart:collection';
|
| +
|
| +import 'package:analyzer/src/generated/ast.dart';
|
| +import 'package:analyzer/src/generated/constant.dart';
|
| +import 'package:analyzer/src/generated/element.dart';
|
| +import 'package:analyzer/src/generated/engine.dart';
|
| +import 'package:analyzer/src/generated/java_core.dart';
|
| +import 'package:analyzer/src/generated/resolver.dart';
|
| +import 'package:analyzer/src/generated/scanner.dart';
|
| +import 'package:analyzer/src/generated/source.dart';
|
| +import 'package:analyzer/src/generated/testing/ast_factory.dart';
|
| +import 'package:analyzer/src/generated/utilities_dart.dart';
|
| +import 'package:path/path.dart';
|
| +
|
| +/**
|
| + * The class `ElementFactory` defines utility methods used to create elements for testing
|
| + * purposes. The elements that are created are complete in the sense that as much of the element
|
| + * model as can be created, given the provided information, has been created.
|
| + */
|
| +class ElementFactory {
|
| + /**
|
| + * The element representing the class 'Object'.
|
| + */
|
| + static ClassElementImpl _objectElement;
|
| +
|
| + static ClassElementImpl get object {
|
| + if (_objectElement == null) {
|
| + _objectElement = classElement("Object", null);
|
| + }
|
| + return _objectElement;
|
| + }
|
| +
|
| + static InterfaceType get objectType => object.type;
|
| +
|
| + static ClassElementImpl classElement(
|
| + String typeName, InterfaceType superclassType,
|
| + [List<String> parameterNames]) {
|
| + ClassElementImpl element = new ClassElementImpl(typeName, 0);
|
| + element.supertype = superclassType;
|
| + InterfaceTypeImpl type = new InterfaceTypeImpl(element);
|
| + element.type = type;
|
| + if (parameterNames != null) {
|
| + int count = parameterNames.length;
|
| + if (count > 0) {
|
| + List<TypeParameterElementImpl> typeParameters =
|
| + new List<TypeParameterElementImpl>(count);
|
| + List<TypeParameterTypeImpl> typeParameterTypes =
|
| + new List<TypeParameterTypeImpl>(count);
|
| + for (int i = 0; i < count; i++) {
|
| + TypeParameterElementImpl typeParameter =
|
| + typeParameterElement(parameterNames[i]);
|
| + typeParameters[i] = typeParameter;
|
| + typeParameterTypes[i] = new TypeParameterTypeImpl(typeParameter);
|
| + typeParameter.type = typeParameterTypes[i];
|
| + }
|
| + element.typeParameters = typeParameters;
|
| + type.typeArguments = typeParameterTypes;
|
| + }
|
| + }
|
| + return element;
|
| + }
|
| +
|
| + static ClassElementImpl classElement2(String typeName,
|
| + [List<String> parameterNames]) =>
|
| + classElement(typeName, objectType, parameterNames);
|
| +
|
| + static classTypeAlias(String typeName, InterfaceType superclassType,
|
| + [List<String> parameterNames]) {
|
| + ClassElementImpl element =
|
| + classElement(typeName, superclassType, parameterNames);
|
| + element.mixinApplication = true;
|
| + return element;
|
| + }
|
| +
|
| + static ClassElementImpl classTypeAlias2(String typeName,
|
| + [List<String> parameterNames]) =>
|
| + classTypeAlias(typeName, objectType, parameterNames);
|
| +
|
| + static CompilationUnitElementImpl compilationUnit(String fileName,
|
| + [Source librarySource]) {
|
| + Source source =
|
| + new NonExistingSource(fileName, toUri(fileName), UriKind.FILE_URI);
|
| + CompilationUnitElementImpl unit = new CompilationUnitElementImpl(fileName);
|
| + unit.source = source;
|
| + if (librarySource == null) {
|
| + librarySource = source;
|
| + }
|
| + unit.librarySource = librarySource;
|
| + return unit;
|
| + }
|
| +
|
| + static ConstLocalVariableElementImpl constLocalVariableElement(String name) =>
|
| + new ConstLocalVariableElementImpl(name, 0);
|
| +
|
| + static ConstructorElementImpl constructorElement(
|
| + ClassElement definingClass, String name, bool isConst,
|
| + [List<DartType> argumentTypes]) {
|
| + DartType type = definingClass.type;
|
| + ConstructorElementImpl constructor = name == null
|
| + ? new ConstructorElementImpl("", -1)
|
| + : new ConstructorElementImpl(name, 0);
|
| + constructor.const2 = isConst;
|
| + if (argumentTypes != null) {
|
| + int count = argumentTypes.length;
|
| + List<ParameterElement> parameters = new List<ParameterElement>(count);
|
| + for (int i = 0; i < count; i++) {
|
| + ParameterElementImpl parameter = new ParameterElementImpl("a$i", i);
|
| + parameter.type = argumentTypes[i];
|
| + parameter.parameterKind = ParameterKind.REQUIRED;
|
| + parameters[i] = parameter;
|
| + }
|
| + constructor.parameters = parameters;
|
| + } else {
|
| + constructor.parameters = <ParameterElement>[];
|
| + }
|
| + constructor.returnType = type;
|
| + FunctionTypeImpl constructorType = new FunctionTypeImpl(constructor);
|
| + constructor.type = constructorType;
|
| + return constructor;
|
| + }
|
| +
|
| + static ConstructorElementImpl constructorElement2(
|
| + ClassElement definingClass, String name,
|
| + [List<DartType> argumentTypes]) =>
|
| + constructorElement(definingClass, name, false, argumentTypes);
|
| +
|
| + static ClassElementImpl enumElement(
|
| + TypeProvider typeProvider, String enumName,
|
| + [List<String> constantNames]) {
|
| + //
|
| + // Build the enum.
|
| + //
|
| + ClassElementImpl enumElement = new ClassElementImpl(enumName, -1);
|
| + InterfaceTypeImpl enumType = new InterfaceTypeImpl(enumElement);
|
| + enumElement.type = enumType;
|
| + enumElement.supertype = objectType;
|
| + enumElement.enum2 = true;
|
| + //
|
| + // Populate the fields.
|
| + //
|
| + List<FieldElement> fields = new List<FieldElement>();
|
| + InterfaceType intType = typeProvider.intType;
|
| + InterfaceType stringType = typeProvider.stringType;
|
| + String indexFieldName = "index";
|
| + FieldElementImpl indexField = new FieldElementImpl(indexFieldName, -1);
|
| + indexField.final2 = true;
|
| + indexField.type = intType;
|
| + fields.add(indexField);
|
| + String nameFieldName = "_name";
|
| + FieldElementImpl nameField = new FieldElementImpl(nameFieldName, -1);
|
| + nameField.final2 = true;
|
| + nameField.type = stringType;
|
| + fields.add(nameField);
|
| + FieldElementImpl valuesField = new FieldElementImpl("values", -1);
|
| + valuesField.static = true;
|
| + valuesField.const3 = true;
|
| + valuesField.type = typeProvider.listType.substitute4(<DartType>[enumType]);
|
| + fields.add(valuesField);
|
| + //
|
| + // Build the enum constants.
|
| + //
|
| + if (constantNames != null) {
|
| + int constantCount = constantNames.length;
|
| + for (int i = 0; i < constantCount; i++) {
|
| + String constantName = constantNames[i];
|
| + FieldElementImpl constantElement =
|
| + new ConstFieldElementImpl(constantName, -1);
|
| + constantElement.static = true;
|
| + constantElement.const3 = true;
|
| + constantElement.type = enumType;
|
| + HashMap<String, DartObjectImpl> fieldMap =
|
| + new HashMap<String, DartObjectImpl>();
|
| + fieldMap[indexFieldName] = new DartObjectImpl(intType, new IntState(i));
|
| + fieldMap[nameFieldName] =
|
| + new DartObjectImpl(stringType, new StringState(constantName));
|
| + DartObjectImpl value =
|
| + new DartObjectImpl(enumType, new GenericState(fieldMap));
|
| + constantElement.evaluationResult = new EvaluationResultImpl(value);
|
| + fields.add(constantElement);
|
| + }
|
| + }
|
| + //
|
| + // Finish building the enum.
|
| + //
|
| + enumElement.fields = fields;
|
| + // Client code isn't allowed to invoke the constructor, so we do not model it.
|
| + return enumElement;
|
| + }
|
| +
|
| + static ExportElementImpl exportFor(LibraryElement exportedLibrary,
|
| + [List<NamespaceCombinator> combinators =
|
| + NamespaceCombinator.EMPTY_LIST]) {
|
| + ExportElementImpl spec = new ExportElementImpl(-1);
|
| + spec.exportedLibrary = exportedLibrary;
|
| + spec.combinators = combinators;
|
| + return spec;
|
| + }
|
| +
|
| + static FieldElementImpl fieldElement(
|
| + String name, bool isStatic, bool isFinal, bool isConst, DartType type) {
|
| + FieldElementImpl field = new FieldElementImpl(name, 0);
|
| + field.const3 = isConst;
|
| + field.final2 = isFinal;
|
| + field.static = isStatic;
|
| + field.type = type;
|
| + PropertyAccessorElementImpl getter =
|
| + new PropertyAccessorElementImpl.forVariable(field);
|
| + getter.getter = true;
|
| + getter.synthetic = true;
|
| + getter.variable = field;
|
| + getter.returnType = type;
|
| + field.getter = getter;
|
| + FunctionTypeImpl getterType = new FunctionTypeImpl(getter);
|
| + getter.type = getterType;
|
| + if (!isConst && !isFinal) {
|
| + PropertyAccessorElementImpl setter =
|
| + new PropertyAccessorElementImpl.forVariable(field);
|
| + setter.setter = true;
|
| + setter.synthetic = true;
|
| + setter.variable = field;
|
| + setter.parameters = <ParameterElement>[
|
| + requiredParameter2("_$name", type)
|
| + ];
|
| + setter.returnType = VoidTypeImpl.instance;
|
| + setter.type = new FunctionTypeImpl(setter);
|
| + field.setter = setter;
|
| + }
|
| + return field;
|
| + }
|
| +
|
| + static FieldFormalParameterElementImpl fieldFormalParameter(
|
| + Identifier name) =>
|
| + new FieldFormalParameterElementImpl(name);
|
| +
|
| + static FunctionElementImpl functionElement(String functionName) =>
|
| + functionElement4(functionName, null, null, null, null);
|
| +
|
| + static FunctionElementImpl functionElement2(
|
| + String functionName, ClassElement returnElement) =>
|
| + functionElement3(functionName, returnElement, null, null);
|
| +
|
| + static FunctionElementImpl functionElement3(
|
| + String functionName,
|
| + ClassElement returnElement,
|
| + List<TypeDefiningElement> normalParameters,
|
| + List<TypeDefiningElement> optionalParameters) {
|
| + // We don't create parameter elements because we don't have parameter names
|
| + FunctionElementImpl functionElement =
|
| + new FunctionElementImpl(functionName, 0);
|
| + FunctionTypeImpl functionType = new FunctionTypeImpl(functionElement);
|
| + functionElement.type = functionType;
|
| + // return type
|
| + if (returnElement == null) {
|
| + functionElement.returnType = VoidTypeImpl.instance;
|
| + } else {
|
| + functionElement.returnType = returnElement.type;
|
| + }
|
| + // parameters
|
| + int normalCount = normalParameters == null ? 0 : normalParameters.length;
|
| + int optionalCount =
|
| + optionalParameters == null ? 0 : optionalParameters.length;
|
| + int totalCount = normalCount + optionalCount;
|
| + List<ParameterElement> parameters = new List<ParameterElement>(totalCount);
|
| + for (int i = 0; i < totalCount; i++) {
|
| + ParameterElementImpl parameter = new ParameterElementImpl("a$i", i);
|
| + if (i < normalCount) {
|
| + parameter.type = normalParameters[i].type;
|
| + parameter.parameterKind = ParameterKind.REQUIRED;
|
| + } else {
|
| + parameter.type = optionalParameters[i - normalCount].type;
|
| + parameter.parameterKind = ParameterKind.POSITIONAL;
|
| + }
|
| + parameters[i] = parameter;
|
| + }
|
| + functionElement.parameters = parameters;
|
| + // done
|
| + return functionElement;
|
| + }
|
| +
|
| + static FunctionElementImpl functionElement4(
|
| + String functionName,
|
| + ClassElement returnElement,
|
| + List<ClassElement> normalParameters,
|
| + List<String> names,
|
| + List<ClassElement> namedParameters) {
|
| + FunctionElementImpl functionElement =
|
| + new FunctionElementImpl(functionName, 0);
|
| + FunctionTypeImpl functionType = new FunctionTypeImpl(functionElement);
|
| + functionElement.type = functionType;
|
| + // parameters
|
| + int normalCount = normalParameters == null ? 0 : normalParameters.length;
|
| + int nameCount = names == null ? 0 : names.length;
|
| + int typeCount = namedParameters == null ? 0 : namedParameters.length;
|
| + if (names != null && nameCount != typeCount) {
|
| + throw new IllegalStateException(
|
| + "The passed String[] and ClassElement[] arrays had different lengths.");
|
| + }
|
| + int totalCount = normalCount + nameCount;
|
| + List<ParameterElement> parameters = new List<ParameterElement>(totalCount);
|
| + for (int i = 0; i < totalCount; i++) {
|
| + if (i < normalCount) {
|
| + ParameterElementImpl parameter = new ParameterElementImpl("a$i", i);
|
| + parameter.type = normalParameters[i].type;
|
| + parameter.parameterKind = ParameterKind.REQUIRED;
|
| + parameters[i] = parameter;
|
| + } else {
|
| + ParameterElementImpl parameter =
|
| + new ParameterElementImpl(names[i - normalCount], i);
|
| + parameter.type = namedParameters[i - normalCount].type;
|
| + parameter.parameterKind = ParameterKind.NAMED;
|
| + parameters[i] = parameter;
|
| + }
|
| + }
|
| + functionElement.parameters = parameters;
|
| + // return type
|
| + if (returnElement == null) {
|
| + functionElement.returnType = VoidTypeImpl.instance;
|
| + } else {
|
| + functionElement.returnType = returnElement.type;
|
| + }
|
| + return functionElement;
|
| + }
|
| +
|
| + static FunctionElementImpl functionElement5(
|
| + String functionName, List<ClassElement> normalParameters) =>
|
| + functionElement3(functionName, null, normalParameters, null);
|
| +
|
| + static FunctionElementImpl functionElement6(
|
| + String functionName,
|
| + List<ClassElement> normalParameters,
|
| + List<ClassElement> optionalParameters) =>
|
| + functionElement3(
|
| + functionName, null, normalParameters, optionalParameters);
|
| +
|
| + static FunctionElementImpl functionElement7(
|
| + String functionName,
|
| + List<ClassElement> normalParameters,
|
| + List<String> names,
|
| + List<ClassElement> namedParameters) =>
|
| + functionElement4(
|
| + functionName, null, normalParameters, names, namedParameters);
|
| +
|
| + static FunctionElementImpl functionElementWithParameters(String functionName,
|
| + DartType returnType, List<ParameterElement> parameters) {
|
| + FunctionElementImpl functionElement =
|
| + new FunctionElementImpl(functionName, 0);
|
| + functionElement.returnType =
|
| + returnType == null ? VoidTypeImpl.instance : returnType;
|
| + functionElement.parameters = parameters;
|
| + FunctionTypeImpl functionType = new FunctionTypeImpl(functionElement);
|
| + functionElement.type = functionType;
|
| + return functionElement;
|
| + }
|
| +
|
| + static FunctionTypeAliasElementImpl functionTypeAliasElement(String name) {
|
| + FunctionTypeAliasElementImpl functionTypeAliasElement =
|
| + new FunctionTypeAliasElementImpl(name, -1);
|
| + functionTypeAliasElement.type =
|
| + new FunctionTypeImpl.forTypedef(functionTypeAliasElement);
|
| + return functionTypeAliasElement;
|
| + }
|
| +
|
| + static PropertyAccessorElementImpl getterElement(
|
| + String name, bool isStatic, DartType type) {
|
| + FieldElementImpl field = new FieldElementImpl(name, -1);
|
| + field.static = isStatic;
|
| + field.synthetic = true;
|
| + field.type = type;
|
| + PropertyAccessorElementImpl getter =
|
| + new PropertyAccessorElementImpl.forVariable(field);
|
| + getter.getter = true;
|
| + getter.variable = field;
|
| + getter.returnType = type;
|
| + field.getter = getter;
|
| + FunctionTypeImpl getterType = new FunctionTypeImpl(getter);
|
| + getter.type = getterType;
|
| + return getter;
|
| + }
|
| +
|
| + @deprecated
|
| + static HtmlElementImpl htmlUnit(AnalysisContext context, String fileName) {
|
| + Source source =
|
| + new NonExistingSource(fileName, toUri(fileName), UriKind.FILE_URI);
|
| + HtmlElementImpl unit = new HtmlElementImpl(context, fileName);
|
| + unit.source = source;
|
| + return unit;
|
| + }
|
| +
|
| + static ImportElementImpl importFor(
|
| + LibraryElement importedLibrary, PrefixElement prefix,
|
| + [List<NamespaceCombinator> combinators =
|
| + NamespaceCombinator.EMPTY_LIST]) {
|
| + ImportElementImpl spec = new ImportElementImpl(0);
|
| + spec.importedLibrary = importedLibrary;
|
| + spec.prefix = prefix;
|
| + spec.combinators = combinators;
|
| + return spec;
|
| + }
|
| +
|
| + static LibraryElementImpl library(
|
| + AnalysisContext context, String libraryName) {
|
| + String fileName = "/$libraryName.dart";
|
| + CompilationUnitElementImpl unit = compilationUnit(fileName);
|
| + LibraryElementImpl library =
|
| + new LibraryElementImpl(context, libraryName, 0);
|
| + library.definingCompilationUnit = unit;
|
| + return library;
|
| + }
|
| +
|
| + static LocalVariableElementImpl localVariableElement(Identifier name) =>
|
| + new LocalVariableElementImpl.forNode(name);
|
| +
|
| + static LocalVariableElementImpl localVariableElement2(String name) =>
|
| + new LocalVariableElementImpl(name, 0);
|
| +
|
| + static MethodElementImpl methodElement(String methodName, DartType returnType,
|
| + [List<DartType> argumentTypes]) {
|
| + MethodElementImpl method = new MethodElementImpl(methodName, 0);
|
| + if (argumentTypes == null) {
|
| + method.parameters = ParameterElement.EMPTY_LIST;
|
| + } else {
|
| + int count = argumentTypes.length;
|
| + List<ParameterElement> parameters = new List<ParameterElement>(count);
|
| + for (int i = 0; i < count; i++) {
|
| + ParameterElementImpl parameter = new ParameterElementImpl("a$i", i);
|
| + parameter.type = argumentTypes[i];
|
| + parameter.parameterKind = ParameterKind.REQUIRED;
|
| + parameters[i] = parameter;
|
| + }
|
| + method.parameters = parameters;
|
| + }
|
| + method.returnType = returnType;
|
| + FunctionTypeImpl methodType = new FunctionTypeImpl(method);
|
| + method.type = methodType;
|
| + return method;
|
| + }
|
| +
|
| + static MethodElementImpl methodElementWithParameters(
|
| + String methodName,
|
| + List<DartType> typeArguments,
|
| + DartType returnType,
|
| + List<ParameterElement> parameters) {
|
| + MethodElementImpl method = new MethodElementImpl(methodName, 0);
|
| + method.parameters = parameters;
|
| + method.returnType = returnType;
|
| + FunctionTypeImpl methodType = new FunctionTypeImpl(method);
|
| + methodType.typeArguments = typeArguments;
|
| + method.type = methodType;
|
| + return method;
|
| + }
|
| +
|
| + static ParameterElementImpl namedParameter(String name) {
|
| + ParameterElementImpl parameter = new ParameterElementImpl(name, 0);
|
| + parameter.parameterKind = ParameterKind.NAMED;
|
| + return parameter;
|
| + }
|
| +
|
| + static ParameterElementImpl namedParameter2(String name, DartType type) {
|
| + ParameterElementImpl parameter = new ParameterElementImpl(name, 0);
|
| + parameter.parameterKind = ParameterKind.NAMED;
|
| + parameter.type = type;
|
| + return parameter;
|
| + }
|
| +
|
| + static ParameterElementImpl positionalParameter(String name) {
|
| + ParameterElementImpl parameter = new ParameterElementImpl(name, 0);
|
| + parameter.parameterKind = ParameterKind.POSITIONAL;
|
| + return parameter;
|
| + }
|
| +
|
| + static ParameterElementImpl positionalParameter2(String name, DartType type) {
|
| + ParameterElementImpl parameter = new ParameterElementImpl(name, 0);
|
| + parameter.parameterKind = ParameterKind.POSITIONAL;
|
| + parameter.type = type;
|
| + return parameter;
|
| + }
|
| +
|
| + static PrefixElementImpl prefix(String name) =>
|
| + new PrefixElementImpl(name, 0);
|
| +
|
| + static ParameterElementImpl requiredParameter(String name) {
|
| + ParameterElementImpl parameter = new ParameterElementImpl(name, 0);
|
| + parameter.parameterKind = ParameterKind.REQUIRED;
|
| + return parameter;
|
| + }
|
| +
|
| + static ParameterElementImpl requiredParameter2(String name, DartType type) {
|
| + ParameterElementImpl parameter = new ParameterElementImpl(name, 0);
|
| + parameter.parameterKind = ParameterKind.REQUIRED;
|
| + parameter.type = type;
|
| + return parameter;
|
| + }
|
| +
|
| + static PropertyAccessorElementImpl setterElement(
|
| + String name, bool isStatic, DartType type) {
|
| + FieldElementImpl field = new FieldElementImpl(name, -1);
|
| + field.static = isStatic;
|
| + field.synthetic = true;
|
| + field.type = type;
|
| + PropertyAccessorElementImpl getter =
|
| + new PropertyAccessorElementImpl.forVariable(field);
|
| + getter.getter = true;
|
| + getter.variable = field;
|
| + getter.returnType = type;
|
| + field.getter = getter;
|
| + FunctionTypeImpl getterType = new FunctionTypeImpl(getter);
|
| + getter.type = getterType;
|
| + ParameterElementImpl parameter = requiredParameter2("a", type);
|
| + PropertyAccessorElementImpl setter =
|
| + new PropertyAccessorElementImpl.forVariable(field);
|
| + setter.setter = true;
|
| + setter.synthetic = true;
|
| + setter.variable = field;
|
| + setter.parameters = <ParameterElement>[parameter];
|
| + setter.returnType = VoidTypeImpl.instance;
|
| + setter.type = new FunctionTypeImpl(setter);
|
| + field.setter = setter;
|
| + return setter;
|
| + }
|
| +
|
| + static TopLevelVariableElementImpl topLevelVariableElement(Identifier name) =>
|
| + new TopLevelVariableElementImpl.forNode(name);
|
| +
|
| + static TopLevelVariableElementImpl topLevelVariableElement2(String name) =>
|
| + topLevelVariableElement3(name, false, false, null);
|
| +
|
| + static TopLevelVariableElementImpl topLevelVariableElement3(
|
| + String name, bool isConst, bool isFinal, DartType type) {
|
| + TopLevelVariableElementImpl variable;
|
| + if (isConst) {
|
| + ConstTopLevelVariableElementImpl constant =
|
| + new ConstTopLevelVariableElementImpl(AstFactory.identifier3(name));
|
| + constant.constantInitializer = AstFactory.instanceCreationExpression2(
|
| + Keyword.CONST, AstFactory.typeName(type.element));
|
| + variable = constant;
|
| + } else {
|
| + variable = new TopLevelVariableElementImpl(name, -1);
|
| + }
|
| + variable.const3 = isConst;
|
| + variable.final2 = isFinal;
|
| + variable.synthetic = true;
|
| + PropertyAccessorElementImpl getter =
|
| + new PropertyAccessorElementImpl.forVariable(variable);
|
| + getter.getter = true;
|
| + getter.synthetic = true;
|
| + getter.variable = variable;
|
| + getter.returnType = type;
|
| + variable.getter = getter;
|
| + FunctionTypeImpl getterType = new FunctionTypeImpl(getter);
|
| + getter.type = getterType;
|
| + if (!isConst && !isFinal) {
|
| + PropertyAccessorElementImpl setter =
|
| + new PropertyAccessorElementImpl.forVariable(variable);
|
| + setter.setter = true;
|
| + setter.static = true;
|
| + setter.synthetic = true;
|
| + setter.variable = variable;
|
| + setter.parameters = <ParameterElement>[
|
| + requiredParameter2("_$name", type)
|
| + ];
|
| + setter.returnType = VoidTypeImpl.instance;
|
| + setter.type = new FunctionTypeImpl(setter);
|
| + variable.setter = setter;
|
| + }
|
| + return variable;
|
| + }
|
| +
|
| + static TypeParameterElementImpl typeParameterElement(String name) {
|
| + TypeParameterElementImpl element = new TypeParameterElementImpl(name, 0);
|
| + element.type = new TypeParameterTypeImpl(element);
|
| + return element;
|
| + }
|
| +}
|
|
|