| Index: pkg/analyzer/test/generated/all_the_rest_test.dart
|
| diff --git a/pkg/analyzer/test/generated/all_the_rest_test.dart b/pkg/analyzer/test/generated/all_the_rest_test.dart
|
| index 5ca63f86645a33f37d3c0894a63faace8fd014a2..127ce4e5bf0780a031ffed4f6c59520be7c5ea9f 100644
|
| --- a/pkg/analyzer/test/generated/all_the_rest_test.dart
|
| +++ b/pkg/analyzer/test/generated/all_the_rest_test.dart
|
| @@ -13,7 +13,6 @@ import 'package:analyzer/error/listener.dart';
|
| import 'package:analyzer/file_system/file_system.dart';
|
| import 'package:analyzer/file_system/memory_file_system.dart';
|
| import 'package:analyzer/file_system/physical_file_system.dart';
|
| -import 'package:analyzer/src/dart/ast/ast.dart';
|
| import 'package:analyzer/src/dart/ast/utilities.dart' hide ConstantEvaluator;
|
| import 'package:analyzer/src/dart/element/builder.dart';
|
| import 'package:analyzer/src/dart/element/element.dart';
|
| @@ -52,7 +51,6 @@ main() {
|
| defineReflectiveTests(DirectoryBasedDartSdkTest);
|
| // ignore: deprecated_member_use
|
| defineReflectiveTests(DirectoryBasedSourceContainerTest);
|
| - defineReflectiveTests(ElementBuilderTest);
|
| defineReflectiveTests(ElementLocatorTest);
|
| defineReflectiveTests(EnumMemberBuilderTest);
|
| defineReflectiveTests(ErrorReporterTest);
|
| @@ -352,2203 +350,6 @@ class DirectoryBasedSourceContainerTest {
|
| }
|
|
|
| @reflectiveTest
|
| -class ElementBuilderTest extends ParserTestCase {
|
| - CompilationUnitElement compilationUnitElement;
|
| - CompilationUnit compilationUnit;
|
| -
|
| - /**
|
| - * Parse the given [code], pass it through [ElementBuilder], and return the
|
| - * resulting [ElementHolder].
|
| - */
|
| - ElementHolder buildElementsForText(String code) {
|
| - TestLogger logger = new TestLogger();
|
| - AnalysisEngine.instance.logger = logger;
|
| - try {
|
| - compilationUnit = ParserTestCase.parseCompilationUnit(code);
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder =
|
| - new ElementBuilder(holder, compilationUnitElement);
|
| - compilationUnit.accept(builder);
|
| - return holder;
|
| - } finally {
|
| - expect(logger.log, hasLength(0));
|
| - AnalysisEngine.instance.logger = Logger.NULL;
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * Verify that the given [metadata] has exactly one annotation, and that its
|
| - * [ElementAnnotationImpl] is unresolved.
|
| - */
|
| - void checkAnnotation(NodeList<Annotation> metadata) {
|
| - expect(metadata, hasLength(1));
|
| - expect(metadata[0], new isInstanceOf<AnnotationImpl>());
|
| - AnnotationImpl annotation = metadata[0];
|
| - expect(annotation.elementAnnotation,
|
| - new isInstanceOf<ElementAnnotationImpl>());
|
| - ElementAnnotationImpl elementAnnotation = annotation.elementAnnotation;
|
| - expect(elementAnnotation.element, isNull); // Not yet resolved
|
| - expect(elementAnnotation.compilationUnit, isNotNull);
|
| - expect(elementAnnotation.compilationUnit, compilationUnitElement);
|
| - }
|
| -
|
| - /**
|
| - * Verify that the given [element] has exactly one annotation, and that its
|
| - * [ElementAnnotationImpl] is unresolved.
|
| - */
|
| - void checkMetadata(Element element) {
|
| - expect(element.metadata, hasLength(1));
|
| - expect(element.metadata[0], new isInstanceOf<ElementAnnotationImpl>());
|
| - ElementAnnotationImpl elementAnnotation = element.metadata[0];
|
| - expect(elementAnnotation.element, isNull); // Not yet resolved
|
| - expect(elementAnnotation.compilationUnit, isNotNull);
|
| - expect(elementAnnotation.compilationUnit, compilationUnitElement);
|
| - }
|
| -
|
| - void fail_visitMethodDeclaration_setter_duplicate() {
|
| - // https://github.com/dart-lang/sdk/issues/25601
|
| - String code = r'''
|
| -class C {
|
| - set zzz(x) {}
|
| - set zzz(y) {}
|
| -}
|
| -''';
|
| - ClassElement classElement = buildElementsForText(code).types[0];
|
| - for (PropertyAccessorElement accessor in classElement.accessors) {
|
| - expect(accessor.variable.setter, same(accessor));
|
| - }
|
| - }
|
| -
|
| - @override
|
| - void setUp() {
|
| - super.setUp();
|
| - compilationUnitElement = new CompilationUnitElementImpl('test.dart');
|
| - }
|
| -
|
| - void test_metadata_fieldDeclaration() {
|
| - List<FieldElement> fields =
|
| - buildElementsForText('class C { @a int x, y; }').types[0].fields;
|
| - checkMetadata(fields[0]);
|
| - checkMetadata(fields[1]);
|
| - expect(fields[0].metadata, same(fields[1].metadata));
|
| - }
|
| -
|
| - void test_metadata_localVariableDeclaration() {
|
| - List<LocalVariableElement> localVariables =
|
| - buildElementsForText('f() { @a int x, y; }')
|
| - .functions[0]
|
| - .localVariables;
|
| - checkMetadata(localVariables[0]);
|
| - checkMetadata(localVariables[1]);
|
| - expect(localVariables[0].metadata, same(localVariables[1].metadata));
|
| - }
|
| -
|
| - void test_metadata_topLevelVariableDeclaration() {
|
| - List<TopLevelVariableElement> topLevelVariables =
|
| - buildElementsForText('@a int x, y;').topLevelVariables;
|
| - checkMetadata(topLevelVariables[0]);
|
| - checkMetadata(topLevelVariables[1]);
|
| - expect(topLevelVariables[0].metadata, same(topLevelVariables[1].metadata));
|
| - }
|
| -
|
| - void test_metadata_visitClassDeclaration() {
|
| - ClassElement classElement = buildElementsForText('@a class C {}').types[0];
|
| - checkMetadata(classElement);
|
| - }
|
| -
|
| - void test_metadata_visitClassTypeAlias() {
|
| - ClassElement classElement =
|
| - buildElementsForText('@a class C = D with E;').types[0];
|
| - checkMetadata(classElement);
|
| - }
|
| -
|
| - void test_metadata_visitConstructorDeclaration() {
|
| - ConstructorElement constructorElement =
|
| - buildElementsForText('class C { @a C(); }').types[0].constructors[0];
|
| - checkMetadata(constructorElement);
|
| - }
|
| -
|
| - void test_metadata_visitDeclaredIdentifier() {
|
| - LocalVariableElement localVariableElement =
|
| - buildElementsForText('f() { for (@a var x in y) {} }')
|
| - .functions[0]
|
| - .localVariables[0];
|
| - checkMetadata(localVariableElement);
|
| - }
|
| -
|
| - void test_metadata_visitDefaultFormalParameter_fieldFormalParameter() {
|
| - ParameterElement parameterElement =
|
| - buildElementsForText('class C { var x; C([@a this.x = null]); }')
|
| - .types[0]
|
| - .constructors[0]
|
| - .parameters[0];
|
| - checkMetadata(parameterElement);
|
| - }
|
| -
|
| - void
|
| - test_metadata_visitDefaultFormalParameter_functionTypedFormalParameter() {
|
| - ParameterElement parameterElement =
|
| - buildElementsForText('f([@a g() = null]) {}').functions[0].parameters[
|
| - 0];
|
| - checkMetadata(parameterElement);
|
| - }
|
| -
|
| - void test_metadata_visitDefaultFormalParameter_simpleFormalParameter() {
|
| - ParameterElement parameterElement =
|
| - buildElementsForText('f([@a gx = null]) {}').functions[0].parameters[0];
|
| - checkMetadata(parameterElement);
|
| - }
|
| -
|
| - void test_metadata_visitEnumDeclaration() {
|
| - ClassElement classElement =
|
| - buildElementsForText('@a enum E { v }').enums[0];
|
| - checkMetadata(classElement);
|
| - }
|
| -
|
| - void test_metadata_visitExportDirective() {
|
| - buildElementsForText('@a export "foo.dart";');
|
| - expect(compilationUnit.directives[0], new isInstanceOf<ExportDirective>());
|
| - ExportDirective exportDirective = compilationUnit.directives[0];
|
| - checkAnnotation(exportDirective.metadata);
|
| - }
|
| -
|
| - void test_metadata_visitFieldFormalParameter() {
|
| - ParameterElement parameterElement =
|
| - buildElementsForText('class C { var x; C(@a this.x); }')
|
| - .types[0]
|
| - .constructors[0]
|
| - .parameters[0];
|
| - checkMetadata(parameterElement);
|
| - }
|
| -
|
| - void test_metadata_visitFunctionDeclaration_function() {
|
| - FunctionElement functionElement =
|
| - buildElementsForText('@a f() {}').functions[0];
|
| - checkMetadata(functionElement);
|
| - }
|
| -
|
| - void test_metadata_visitFunctionDeclaration_getter() {
|
| - PropertyAccessorElement propertyAccessorElement =
|
| - buildElementsForText('@a get f => null;').accessors[0];
|
| - checkMetadata(propertyAccessorElement);
|
| - }
|
| -
|
| - void test_metadata_visitFunctionDeclaration_setter() {
|
| - PropertyAccessorElement propertyAccessorElement =
|
| - buildElementsForText('@a set f(value) {}').accessors[0];
|
| - checkMetadata(propertyAccessorElement);
|
| - }
|
| -
|
| - void test_metadata_visitFunctionTypeAlias() {
|
| - FunctionTypeAliasElement functionTypeAliasElement =
|
| - buildElementsForText('@a typedef F();').typeAliases[0];
|
| - checkMetadata(functionTypeAliasElement);
|
| - }
|
| -
|
| - void test_metadata_visitFunctionTypedFormalParameter() {
|
| - ParameterElement parameterElement =
|
| - buildElementsForText('f(@a g()) {}').functions[0].parameters[0];
|
| - checkMetadata(parameterElement);
|
| - }
|
| -
|
| - void test_metadata_visitImportDirective() {
|
| - buildElementsForText('@a import "foo.dart";');
|
| - expect(compilationUnit.directives[0], new isInstanceOf<ImportDirective>());
|
| - ImportDirective importDirective = compilationUnit.directives[0];
|
| - checkAnnotation(importDirective.metadata);
|
| - }
|
| -
|
| - void test_metadata_visitLibraryDirective() {
|
| - buildElementsForText('@a library L;');
|
| - expect(compilationUnit.directives[0], new isInstanceOf<LibraryDirective>());
|
| - LibraryDirective libraryDirective = compilationUnit.directives[0];
|
| - checkAnnotation(libraryDirective.metadata);
|
| - }
|
| -
|
| - void test_metadata_visitMethodDeclaration_getter() {
|
| - PropertyAccessorElement propertyAccessorElement =
|
| - buildElementsForText('class C { @a get m => null; }')
|
| - .types[0]
|
| - .accessors[0];
|
| - checkMetadata(propertyAccessorElement);
|
| - }
|
| -
|
| - void test_metadata_visitMethodDeclaration_method() {
|
| - MethodElement methodElement =
|
| - buildElementsForText('class C { @a m() {} }').types[0].methods[0];
|
| - checkMetadata(methodElement);
|
| - }
|
| -
|
| - void test_metadata_visitMethodDeclaration_setter() {
|
| - PropertyAccessorElement propertyAccessorElement =
|
| - buildElementsForText('class C { @a set f(value) {} }')
|
| - .types[0]
|
| - .accessors[0];
|
| - checkMetadata(propertyAccessorElement);
|
| - }
|
| -
|
| - void test_metadata_visitPartDirective() {
|
| - buildElementsForText('@a part "foo.dart";');
|
| - expect(compilationUnit.directives[0], new isInstanceOf<PartDirective>());
|
| - PartDirective partDirective = compilationUnit.directives[0];
|
| - checkAnnotation(partDirective.metadata);
|
| - }
|
| -
|
| - void test_metadata_visitPartOfDirective() {
|
| - // We don't build ElementAnnotation objects for `part of` directives, since
|
| - // analyzer ignores them in favor of annotations on the library directive.
|
| - buildElementsForText('@a part of L;');
|
| - expect(compilationUnit.directives[0], new isInstanceOf<PartOfDirective>());
|
| - PartOfDirective partOfDirective = compilationUnit.directives[0];
|
| - expect(partOfDirective.metadata, hasLength(1));
|
| - expect(partOfDirective.metadata[0].elementAnnotation, isNull);
|
| - }
|
| -
|
| - void test_metadata_visitSimpleFormalParameter() {
|
| - ParameterElement parameterElement =
|
| - buildElementsForText('f(@a x) {}').functions[0].parameters[0];
|
| - checkMetadata(parameterElement);
|
| - }
|
| -
|
| - void test_metadata_visitTypeParameter() {
|
| - TypeParameterElement typeParameterElement =
|
| - buildElementsForText('class C<@a T> {}').types[0].typeParameters[0];
|
| - checkMetadata(typeParameterElement);
|
| - }
|
| -
|
| - void test_visitCatchClause() {
|
| - List<LocalVariableElement> variables =
|
| - buildElementsForText('f() { try {} catch (e, s) {} }')
|
| - .functions[0]
|
| - .localVariables;
|
| - String exceptionParameterName = "e";
|
| - String stackParameterName = "s";
|
| - expect(variables, hasLength(2));
|
| -
|
| - LocalVariableElement exceptionVariable = variables[0];
|
| - expect(exceptionVariable, isNotNull);
|
| - expect(exceptionVariable.name, exceptionParameterName);
|
| - expect(exceptionVariable.hasImplicitType, isTrue);
|
| - expect(exceptionVariable.isSynthetic, isFalse);
|
| - expect(exceptionVariable.isConst, isFalse);
|
| - expect(exceptionVariable.isFinal, isFalse);
|
| - expect(exceptionVariable.initializer, isNull);
|
| - _assertVisibleRange(exceptionVariable, 13, 28);
|
| -
|
| - LocalVariableElement stackVariable = variables[1];
|
| - expect(stackVariable, isNotNull);
|
| - expect(stackVariable.name, stackParameterName);
|
| - expect(stackVariable.isSynthetic, isFalse);
|
| - expect(stackVariable.isConst, isFalse);
|
| - expect(stackVariable.isFinal, isFalse);
|
| - expect(stackVariable.initializer, isNull);
|
| - _assertVisibleRange(stackVariable, 13, 28);
|
| - }
|
| -
|
| - void test_visitCatchClause_withType() {
|
| - List<LocalVariableElement> variables =
|
| - buildElementsForText('f() { try {} on E catch (e) {} }')
|
| - .functions[0]
|
| - .localVariables;
|
| - String exceptionParameterName = "e";
|
| - expect(variables, hasLength(1));
|
| - VariableElement exceptionVariable = variables[0];
|
| - expect(exceptionVariable, isNotNull);
|
| - expect(exceptionVariable.name, exceptionParameterName);
|
| - expect(exceptionVariable.hasImplicitType, isFalse);
|
| - }
|
| -
|
| - void test_visitClassDeclaration_abstract() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String className = "C";
|
| - ClassDeclaration classDeclaration = AstFactory.classDeclaration(
|
| - Keyword.ABSTRACT, className, null, null, null, null);
|
| - classDeclaration.accept(builder);
|
| - List<ClassElement> types = holder.types;
|
| - expect(types, hasLength(1));
|
| - ClassElement type = types[0];
|
| - expect(type, isNotNull);
|
| - expect(type.name, className);
|
| - List<TypeParameterElement> typeParameters = type.typeParameters;
|
| - expect(typeParameters, hasLength(0));
|
| - expect(type.isAbstract, isTrue);
|
| - expect(type.isMixinApplication, isFalse);
|
| - expect(type.isSynthetic, isFalse);
|
| - }
|
| -
|
| - void test_visitClassDeclaration_invalidFunctionInAnnotation_class() {
|
| - // https://github.com/dart-lang/sdk/issues/25696
|
| - String code = r'''
|
| -class A {
|
| - const A({f});
|
| -}
|
| -
|
| -@A(f: () {})
|
| -class C {}
|
| -''';
|
| - buildElementsForText(code);
|
| - }
|
| -
|
| - void test_visitClassDeclaration_invalidFunctionInAnnotation_method() {
|
| - String code = r'''
|
| -class A {
|
| - const A({f});
|
| -}
|
| -
|
| -class C {
|
| - @A(f: () {})
|
| - void m() {}
|
| -}
|
| -''';
|
| - ElementHolder holder = buildElementsForText(code);
|
| - ClassElement elementC = holder.types[1];
|
| - expect(elementC, isNotNull);
|
| - MethodElement methodM = elementC.methods[0];
|
| - expect(methodM, isNotNull);
|
| - expect(methodM.functions, isEmpty);
|
| - }
|
| -
|
| - void test_visitClassDeclaration_minimal() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String className = "C";
|
| - ClassDeclaration classDeclaration =
|
| - AstFactory.classDeclaration(null, className, null, null, null, null);
|
| - classDeclaration.documentationComment = AstFactory.documentationComment(
|
| - [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
|
| - classDeclaration.endToken.offset = 80;
|
| - classDeclaration.accept(builder);
|
| - List<ClassElement> types = holder.types;
|
| - expect(types, hasLength(1));
|
| - ClassElement type = types[0];
|
| - expect(type, isNotNull);
|
| - expect(type.name, className);
|
| - List<TypeParameterElement> typeParameters = type.typeParameters;
|
| - expect(typeParameters, hasLength(0));
|
| - expect(type.isAbstract, isFalse);
|
| - expect(type.isMixinApplication, isFalse);
|
| - expect(type.isSynthetic, isFalse);
|
| - expect(type.documentationComment, '/// aaa');
|
| - _assertHasCodeRange(type, 50, 31);
|
| - }
|
| -
|
| - void test_visitClassDeclaration_parameterized() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String className = "C";
|
| - String firstVariableName = "E";
|
| - String secondVariableName = "F";
|
| - ClassDeclaration classDeclaration = AstFactory.classDeclaration(
|
| - null,
|
| - className,
|
| - AstFactory.typeParameterList([firstVariableName, secondVariableName]),
|
| - null,
|
| - null,
|
| - null);
|
| - classDeclaration.accept(builder);
|
| - List<ClassElement> types = holder.types;
|
| - expect(types, hasLength(1));
|
| - ClassElement type = types[0];
|
| - expect(type, isNotNull);
|
| - expect(type.name, className);
|
| - List<TypeParameterElement> typeParameters = type.typeParameters;
|
| - expect(typeParameters, hasLength(2));
|
| - expect(typeParameters[0].name, firstVariableName);
|
| - expect(typeParameters[1].name, secondVariableName);
|
| - expect(type.isAbstract, isFalse);
|
| - expect(type.isMixinApplication, isFalse);
|
| - expect(type.isSynthetic, isFalse);
|
| - }
|
| -
|
| - void test_visitClassDeclaration_withMembers() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String className = "C";
|
| - String typeParameterName = "E";
|
| - String fieldName = "f";
|
| - String methodName = "m";
|
| - ClassDeclaration classDeclaration = AstFactory.classDeclaration(
|
| - null,
|
| - className,
|
| - AstFactory.typeParameterList([typeParameterName]),
|
| - null,
|
| - null,
|
| - null, [
|
| - AstFactory.fieldDeclaration2(
|
| - false, null, [AstFactory.variableDeclaration(fieldName)]),
|
| - AstFactory.methodDeclaration2(
|
| - null,
|
| - null,
|
| - null,
|
| - null,
|
| - AstFactory.identifier3(methodName),
|
| - AstFactory.formalParameterList(),
|
| - AstFactory.blockFunctionBody2())
|
| - ]);
|
| - classDeclaration.accept(builder);
|
| - List<ClassElement> types = holder.types;
|
| - expect(types, hasLength(1));
|
| - ClassElement type = types[0];
|
| - expect(type, isNotNull);
|
| - expect(type.name, className);
|
| - expect(type.isAbstract, isFalse);
|
| - expect(type.isMixinApplication, isFalse);
|
| - expect(type.isSynthetic, isFalse);
|
| - List<TypeParameterElement> typeParameters = type.typeParameters;
|
| - expect(typeParameters, hasLength(1));
|
| - TypeParameterElement typeParameter = typeParameters[0];
|
| - expect(typeParameter, isNotNull);
|
| - expect(typeParameter.name, typeParameterName);
|
| - List<FieldElement> fields = type.fields;
|
| - expect(fields, hasLength(1));
|
| - FieldElement field = fields[0];
|
| - expect(field, isNotNull);
|
| - expect(field.name, fieldName);
|
| - List<MethodElement> methods = type.methods;
|
| - expect(methods, hasLength(1));
|
| - MethodElement method = methods[0];
|
| - expect(method, isNotNull);
|
| - expect(method.name, methodName);
|
| - }
|
| -
|
| - void test_visitClassTypeAlias() {
|
| - // class B {}
|
| - // class M {}
|
| - // class C = B with M
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - ClassElementImpl classB = ElementFactory.classElement2('B', []);
|
| - ConstructorElementImpl constructorB =
|
| - ElementFactory.constructorElement2(classB, '', []);
|
| - constructorB.setModifier(Modifier.SYNTHETIC, true);
|
| - classB.constructors = [constructorB];
|
| - ClassElement classM = ElementFactory.classElement2('M', []);
|
| - WithClause withClause =
|
| - AstFactory.withClause([AstFactory.typeName(classM, [])]);
|
| - ClassTypeAlias alias = AstFactory.classTypeAlias(
|
| - 'C', null, null, AstFactory.typeName(classB, []), withClause, null);
|
| - alias.accept(builder);
|
| - List<ClassElement> types = holder.types;
|
| - expect(types, hasLength(1));
|
| - ClassElement type = types[0];
|
| - expect(alias.element, same(type));
|
| - expect(type.name, equals('C'));
|
| - expect(type.isAbstract, isFalse);
|
| - expect(type.isMixinApplication, isTrue);
|
| - expect(type.isSynthetic, isFalse);
|
| - expect(type.typeParameters, isEmpty);
|
| - expect(type.fields, isEmpty);
|
| - expect(type.methods, isEmpty);
|
| - }
|
| -
|
| - void test_visitClassTypeAlias_abstract() {
|
| - // class B {}
|
| - // class M {}
|
| - // abstract class C = B with M
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - ClassElementImpl classB = ElementFactory.classElement2('B', []);
|
| - ConstructorElementImpl constructorB =
|
| - ElementFactory.constructorElement2(classB, '', []);
|
| - constructorB.setModifier(Modifier.SYNTHETIC, true);
|
| - classB.constructors = [constructorB];
|
| - ClassElement classM = ElementFactory.classElement2('M', []);
|
| - WithClause withClause =
|
| - AstFactory.withClause([AstFactory.typeName(classM, [])]);
|
| - ClassTypeAlias classCAst = AstFactory.classTypeAlias('C', null,
|
| - Keyword.ABSTRACT, AstFactory.typeName(classB, []), withClause, null);
|
| - classCAst.accept(builder);
|
| - List<ClassElement> types = holder.types;
|
| - expect(types, hasLength(1));
|
| - ClassElement type = types[0];
|
| - expect(type.isAbstract, isTrue);
|
| - expect(type.isMixinApplication, isTrue);
|
| - }
|
| -
|
| - void test_visitClassTypeAlias_typeParams() {
|
| - // class B {}
|
| - // class M {}
|
| - // class C<T> = B with M
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - ClassElementImpl classB = ElementFactory.classElement2('B', []);
|
| - ConstructorElementImpl constructorB =
|
| - ElementFactory.constructorElement2(classB, '', []);
|
| - constructorB.setModifier(Modifier.SYNTHETIC, true);
|
| - classB.constructors = [constructorB];
|
| - ClassElementImpl classM = ElementFactory.classElement2('M', []);
|
| - WithClause withClause =
|
| - AstFactory.withClause([AstFactory.typeName(classM, [])]);
|
| - ClassTypeAlias classCAst = AstFactory.classTypeAlias(
|
| - 'C',
|
| - AstFactory.typeParameterList(['T']),
|
| - null,
|
| - AstFactory.typeName(classB, []),
|
| - withClause,
|
| - null);
|
| - classCAst.accept(builder);
|
| - List<ClassElement> types = holder.types;
|
| - expect(types, hasLength(1));
|
| - ClassElement type = types[0];
|
| - expect(type.typeParameters, hasLength(1));
|
| - expect(type.typeParameters[0].name, equals('T'));
|
| - }
|
| -
|
| - void test_visitCompilationUnit_codeRange() {
|
| - TopLevelVariableDeclaration topLevelVariableDeclaration = AstFactory
|
| - .topLevelVariableDeclaration(null, AstFactory.typeName4('int'),
|
| - [AstFactory.variableDeclaration('V')]);
|
| - CompilationUnit unit = new CompilationUnit(
|
| - topLevelVariableDeclaration.beginToken,
|
| - null,
|
| - [],
|
| - [topLevelVariableDeclaration],
|
| - topLevelVariableDeclaration.endToken);
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - unit.beginToken.offset = 10;
|
| - unit.endToken.offset = 40;
|
| - unit.accept(builder);
|
| -
|
| - CompilationUnitElement element = builder.compilationUnitElement;
|
| - _assertHasCodeRange(element, 0, 41);
|
| - }
|
| -
|
| - void test_visitConstructorDeclaration_external() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String className = "A";
|
| - ConstructorDeclaration constructorDeclaration =
|
| - AstFactory.constructorDeclaration2(
|
| - null,
|
| - null,
|
| - AstFactory.identifier3(className),
|
| - null,
|
| - AstFactory.formalParameterList(),
|
| - null,
|
| - AstFactory.blockFunctionBody2());
|
| - constructorDeclaration.externalKeyword =
|
| - TokenFactory.tokenFromKeyword(Keyword.EXTERNAL);
|
| - constructorDeclaration.accept(builder);
|
| - List<ConstructorElement> constructors = holder.constructors;
|
| - expect(constructors, hasLength(1));
|
| - ConstructorElement constructor = constructors[0];
|
| - expect(constructor, isNotNull);
|
| - expect(constructor.isExternal, isTrue);
|
| - expect(constructor.isFactory, isFalse);
|
| - expect(constructor.name, "");
|
| - expect(constructor.functions, hasLength(0));
|
| - expect(constructor.labels, hasLength(0));
|
| - expect(constructor.localVariables, hasLength(0));
|
| - expect(constructor.parameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitConstructorDeclaration_factory() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String className = "A";
|
| - ConstructorDeclaration constructorDeclaration =
|
| - AstFactory.constructorDeclaration2(
|
| - null,
|
| - Keyword.FACTORY,
|
| - AstFactory.identifier3(className),
|
| - null,
|
| - AstFactory.formalParameterList(),
|
| - null,
|
| - AstFactory.blockFunctionBody2());
|
| - constructorDeclaration.accept(builder);
|
| - List<ConstructorElement> constructors = holder.constructors;
|
| - expect(constructors, hasLength(1));
|
| - ConstructorElement constructor = constructors[0];
|
| - expect(constructor, isNotNull);
|
| - expect(constructor.isExternal, isFalse);
|
| - expect(constructor.isFactory, isTrue);
|
| - expect(constructor.name, "");
|
| - expect(constructor.functions, hasLength(0));
|
| - expect(constructor.labels, hasLength(0));
|
| - expect(constructor.localVariables, hasLength(0));
|
| - expect(constructor.parameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitConstructorDeclaration_minimal() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String className = "A";
|
| - ConstructorDeclaration constructorDeclaration =
|
| - AstFactory.constructorDeclaration2(
|
| - null,
|
| - null,
|
| - AstFactory.identifier3(className),
|
| - null,
|
| - AstFactory.formalParameterList(),
|
| - null,
|
| - AstFactory.blockFunctionBody2());
|
| - constructorDeclaration.documentationComment = AstFactory
|
| - .documentationComment(
|
| - [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
|
| - constructorDeclaration.endToken.offset = 80;
|
| - constructorDeclaration.accept(builder);
|
| -
|
| - List<ConstructorElement> constructors = holder.constructors;
|
| - expect(constructors, hasLength(1));
|
| - ConstructorElement constructor = constructors[0];
|
| - expect(constructor, isNotNull);
|
| - _assertHasCodeRange(constructor, 50, 31);
|
| - expect(constructor.documentationComment, '/// aaa');
|
| - expect(constructor.isExternal, isFalse);
|
| - expect(constructor.isFactory, isFalse);
|
| - expect(constructor.name, "");
|
| - expect(constructor.functions, hasLength(0));
|
| - expect(constructor.labels, hasLength(0));
|
| - expect(constructor.localVariables, hasLength(0));
|
| - expect(constructor.parameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitConstructorDeclaration_named() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String className = "A";
|
| - String constructorName = "c";
|
| - ConstructorDeclaration constructorDeclaration =
|
| - AstFactory.constructorDeclaration2(
|
| - null,
|
| - null,
|
| - AstFactory.identifier3(className),
|
| - constructorName,
|
| - AstFactory.formalParameterList(),
|
| - null,
|
| - AstFactory.blockFunctionBody2());
|
| - constructorDeclaration.accept(builder);
|
| - List<ConstructorElement> constructors = holder.constructors;
|
| - expect(constructors, hasLength(1));
|
| - ConstructorElement constructor = constructors[0];
|
| - expect(constructor, isNotNull);
|
| - expect(constructor.isExternal, isFalse);
|
| - expect(constructor.isFactory, isFalse);
|
| - expect(constructor.name, constructorName);
|
| - expect(constructor.functions, hasLength(0));
|
| - expect(constructor.labels, hasLength(0));
|
| - expect(constructor.localVariables, hasLength(0));
|
| - expect(constructor.parameters, hasLength(0));
|
| - expect(constructorDeclaration.name.staticElement, same(constructor));
|
| - expect(constructorDeclaration.element, same(constructor));
|
| - }
|
| -
|
| - void test_visitConstructorDeclaration_unnamed() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String className = "A";
|
| - ConstructorDeclaration constructorDeclaration =
|
| - AstFactory.constructorDeclaration2(
|
| - null,
|
| - null,
|
| - AstFactory.identifier3(className),
|
| - null,
|
| - AstFactory.formalParameterList(),
|
| - null,
|
| - AstFactory.blockFunctionBody2());
|
| - constructorDeclaration.accept(builder);
|
| - List<ConstructorElement> constructors = holder.constructors;
|
| - expect(constructors, hasLength(1));
|
| - ConstructorElement constructor = constructors[0];
|
| - expect(constructor, isNotNull);
|
| - expect(constructor.isExternal, isFalse);
|
| - expect(constructor.isFactory, isFalse);
|
| - expect(constructor.name, "");
|
| - expect(constructor.functions, hasLength(0));
|
| - expect(constructor.labels, hasLength(0));
|
| - expect(constructor.localVariables, hasLength(0));
|
| - expect(constructor.parameters, hasLength(0));
|
| - expect(constructorDeclaration.element, same(constructor));
|
| - }
|
| -
|
| - void test_visitDeclaredIdentifier_noType() {
|
| - LocalVariableElement variable =
|
| - buildElementsForText('f() { for (var i in []) {} }')
|
| - .functions[0]
|
| - .localVariables[0];
|
| - _assertHasCodeRange(variable, 11, 5);
|
| - expect(variable, isNotNull);
|
| - expect(variable.hasImplicitType, isTrue);
|
| - expect(variable.isConst, isFalse);
|
| - expect(variable.isDeprecated, isFalse);
|
| - expect(variable.isFinal, isFalse);
|
| - expect(variable.isOverride, isFalse);
|
| - expect(variable.isPrivate, isFalse);
|
| - expect(variable.isPublic, isTrue);
|
| - expect(variable.isSynthetic, isFalse);
|
| - expect(variable.name, 'i');
|
| - }
|
| -
|
| - void test_visitDeclaredIdentifier_type() {
|
| - LocalVariableElement variable =
|
| - buildElementsForText('f() { for (int i in []) {} }')
|
| - .functions[0]
|
| - .localVariables[0];
|
| - _assertHasCodeRange(variable, 11, 5);
|
| - expect(variable.hasImplicitType, isFalse);
|
| - expect(variable.isConst, isFalse);
|
| - expect(variable.isDeprecated, isFalse);
|
| - expect(variable.isFinal, isFalse);
|
| - expect(variable.isOverride, isFalse);
|
| - expect(variable.isPrivate, isFalse);
|
| - expect(variable.isPublic, isTrue);
|
| - expect(variable.isSynthetic, isFalse);
|
| - expect(variable.name, 'i');
|
| - }
|
| -
|
| - void test_visitDefaultFormalParameter_noType() {
|
| - // p = 0
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String parameterName = 'p';
|
| - DefaultFormalParameter formalParameter =
|
| - AstFactory.positionalFormalParameter(
|
| - AstFactory.simpleFormalParameter3(parameterName),
|
| - AstFactory.integer(0));
|
| - formalParameter.beginToken.offset = 50;
|
| - formalParameter.endToken.offset = 80;
|
| - formalParameter.accept(builder);
|
| -
|
| - List<ParameterElement> parameters = holder.parameters;
|
| - expect(parameters, hasLength(1));
|
| - ParameterElement parameter = parameters[0];
|
| - _assertHasCodeRange(parameter, 50, 31);
|
| - expect(parameter.hasImplicitType, isTrue);
|
| - expect(parameter.initializer, isNotNull);
|
| - expect(parameter.initializer.type, isNotNull);
|
| - expect(parameter.initializer.hasImplicitReturnType, isTrue);
|
| - expect(parameter.isConst, isFalse);
|
| - expect(parameter.isDeprecated, isFalse);
|
| - expect(parameter.isFinal, isFalse);
|
| - expect(parameter.isInitializingFormal, isFalse);
|
| - expect(parameter.isOverride, isFalse);
|
| - expect(parameter.isPrivate, isFalse);
|
| - expect(parameter.isPublic, isTrue);
|
| - expect(parameter.isSynthetic, isFalse);
|
| - expect(parameter.name, parameterName);
|
| - }
|
| -
|
| - void test_visitDefaultFormalParameter_type() {
|
| - // E p = 0
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String parameterName = 'p';
|
| - DefaultFormalParameter formalParameter = AstFactory.namedFormalParameter(
|
| - AstFactory.simpleFormalParameter4(
|
| - AstFactory.typeName4('E'), parameterName),
|
| - AstFactory.integer(0));
|
| - formalParameter.accept(builder);
|
| -
|
| - List<ParameterElement> parameters = holder.parameters;
|
| - expect(parameters, hasLength(1));
|
| - ParameterElement parameter = parameters[0];
|
| - expect(parameter.hasImplicitType, isFalse);
|
| - expect(parameter.initializer, isNotNull);
|
| - expect(parameter.initializer.type, isNotNull);
|
| - expect(parameter.initializer.hasImplicitReturnType, isTrue);
|
| - expect(parameter.isConst, isFalse);
|
| - expect(parameter.isDeprecated, isFalse);
|
| - expect(parameter.isFinal, isFalse);
|
| - expect(parameter.isInitializingFormal, isFalse);
|
| - expect(parameter.isOverride, isFalse);
|
| - expect(parameter.isPrivate, isFalse);
|
| - expect(parameter.isPublic, isTrue);
|
| - expect(parameter.isSynthetic, isFalse);
|
| - expect(parameter.name, parameterName);
|
| - }
|
| -
|
| - void test_visitEnumDeclaration() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String enumName = "E";
|
| - EnumDeclaration enumDeclaration =
|
| - AstFactory.enumDeclaration2(enumName, ["ONE"]);
|
| - enumDeclaration.documentationComment = AstFactory.documentationComment(
|
| - [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
|
| - enumDeclaration.endToken.offset = 80;
|
| - enumDeclaration.accept(builder);
|
| - List<ClassElement> enums = holder.enums;
|
| - expect(enums, hasLength(1));
|
| - ClassElement enumElement = enums[0];
|
| - expect(enumElement, isNotNull);
|
| - _assertHasCodeRange(enumElement, 50, 31);
|
| - expect(enumElement.documentationComment, '/// aaa');
|
| - expect(enumElement.name, enumName);
|
| - }
|
| -
|
| - void test_visitFieldDeclaration() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String firstFieldName = "x";
|
| - String secondFieldName = "y";
|
| - FieldDeclaration fieldDeclaration =
|
| - AstFactory.fieldDeclaration2(false, null, [
|
| - AstFactory.variableDeclaration(firstFieldName),
|
| - AstFactory.variableDeclaration(secondFieldName)
|
| - ]);
|
| - fieldDeclaration.documentationComment = AstFactory.documentationComment(
|
| - [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
|
| - fieldDeclaration.endToken.offset = 110;
|
| - fieldDeclaration.accept(builder);
|
| -
|
| - List<FieldElement> fields = holder.fields;
|
| - expect(fields, hasLength(2));
|
| -
|
| - FieldElement firstField = fields[0];
|
| - expect(firstField, isNotNull);
|
| - _assertHasCodeRange(firstField, 50, 61);
|
| - expect(firstField.documentationComment, '/// aaa');
|
| - expect(firstField.name, firstFieldName);
|
| - expect(firstField.initializer, isNull);
|
| - expect(firstField.isConst, isFalse);
|
| - expect(firstField.isFinal, isFalse);
|
| - expect(firstField.isSynthetic, isFalse);
|
| -
|
| - FieldElement secondField = fields[1];
|
| - expect(secondField, isNotNull);
|
| - _assertHasCodeRange(secondField, 50, 61);
|
| - expect(secondField.documentationComment, '/// aaa');
|
| - expect(secondField.name, secondFieldName);
|
| - expect(secondField.initializer, isNull);
|
| - expect(secondField.isConst, isFalse);
|
| - expect(secondField.isFinal, isFalse);
|
| - expect(secondField.isSynthetic, isFalse);
|
| - }
|
| -
|
| - void test_visitFieldFormalParameter() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String parameterName = "p";
|
| - FieldFormalParameter formalParameter =
|
| - AstFactory.fieldFormalParameter(null, null, parameterName);
|
| - formalParameter.beginToken.offset = 50;
|
| - formalParameter.endToken.offset = 80;
|
| - formalParameter.accept(builder);
|
| - List<ParameterElement> parameters = holder.parameters;
|
| - expect(parameters, hasLength(1));
|
| - ParameterElement parameter = parameters[0];
|
| - expect(parameter, isNotNull);
|
| - _assertHasCodeRange(parameter, 50, 31);
|
| - expect(parameter.name, parameterName);
|
| - expect(parameter.initializer, isNull);
|
| - expect(parameter.isConst, isFalse);
|
| - expect(parameter.isFinal, isFalse);
|
| - expect(parameter.isSynthetic, isFalse);
|
| - expect(parameter.parameterKind, ParameterKind.REQUIRED);
|
| - expect(parameter.parameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitFieldFormalParameter_functionTyped() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String parameterName = "p";
|
| - FieldFormalParameter formalParameter = AstFactory.fieldFormalParameter(
|
| - null,
|
| - null,
|
| - parameterName,
|
| - AstFactory
|
| - .formalParameterList([AstFactory.simpleFormalParameter3("a")]));
|
| - formalParameter.accept(builder);
|
| - List<ParameterElement> parameters = holder.parameters;
|
| - expect(parameters, hasLength(1));
|
| - ParameterElement parameter = parameters[0];
|
| - expect(parameter, isNotNull);
|
| - expect(parameter.name, parameterName);
|
| - expect(parameter.initializer, isNull);
|
| - expect(parameter.isConst, isFalse);
|
| - expect(parameter.isFinal, isFalse);
|
| - expect(parameter.isSynthetic, isFalse);
|
| - expect(parameter.parameterKind, ParameterKind.REQUIRED);
|
| - expect(parameter.parameters, hasLength(1));
|
| - }
|
| -
|
| - void test_visitFormalParameterList() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String firstParameterName = "a";
|
| - String secondParameterName = "b";
|
| - FormalParameterList parameterList = AstFactory.formalParameterList([
|
| - AstFactory.simpleFormalParameter3(firstParameterName),
|
| - AstFactory.simpleFormalParameter3(secondParameterName)
|
| - ]);
|
| - parameterList.accept(builder);
|
| - List<ParameterElement> parameters = holder.parameters;
|
| - expect(parameters, hasLength(2));
|
| - expect(parameters[0].name, firstParameterName);
|
| - expect(parameters[1].name, secondParameterName);
|
| - }
|
| -
|
| - void test_visitFunctionDeclaration_external() {
|
| - // external f();
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String functionName = "f";
|
| - FunctionDeclaration declaration = AstFactory.functionDeclaration(
|
| - null,
|
| - null,
|
| - functionName,
|
| - AstFactory.functionExpression2(
|
| - AstFactory.formalParameterList(), AstFactory.emptyFunctionBody()));
|
| - declaration.externalKeyword =
|
| - TokenFactory.tokenFromKeyword(Keyword.EXTERNAL);
|
| - declaration.accept(builder);
|
| -
|
| - List<FunctionElement> functions = holder.functions;
|
| - expect(functions, hasLength(1));
|
| - FunctionElement function = functions[0];
|
| - expect(function, isNotNull);
|
| - expect(function.name, functionName);
|
| - expect(declaration.element, same(function));
|
| - expect(declaration.functionExpression.element, same(function));
|
| - expect(function.hasImplicitReturnType, isTrue);
|
| - expect(function.isExternal, isTrue);
|
| - expect(function.isSynthetic, isFalse);
|
| - expect(function.typeParameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitFunctionDeclaration_getter() {
|
| - // get f() {}
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String functionName = "f";
|
| - FunctionDeclaration declaration = AstFactory.functionDeclaration(
|
| - null,
|
| - Keyword.GET,
|
| - functionName,
|
| - AstFactory.functionExpression2(
|
| - AstFactory.formalParameterList(), AstFactory.blockFunctionBody2()));
|
| - declaration.documentationComment = AstFactory.documentationComment(
|
| - [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
|
| - declaration.endToken.offset = 80;
|
| - declaration.accept(builder);
|
| -
|
| - List<PropertyAccessorElement> accessors = holder.accessors;
|
| - expect(accessors, hasLength(1));
|
| - PropertyAccessorElement accessor = accessors[0];
|
| - expect(accessor, isNotNull);
|
| - _assertHasCodeRange(accessor, 50, 31);
|
| - expect(accessor.documentationComment, '/// aaa');
|
| - expect(accessor.name, functionName);
|
| - expect(declaration.element, same(accessor));
|
| - expect(declaration.functionExpression.element, same(accessor));
|
| - expect(accessor.hasImplicitReturnType, isTrue);
|
| - expect(accessor.isGetter, isTrue);
|
| - expect(accessor.isExternal, isFalse);
|
| - expect(accessor.isSetter, isFalse);
|
| - expect(accessor.isSynthetic, isFalse);
|
| - expect(accessor.typeParameters, hasLength(0));
|
| - PropertyInducingElement variable = accessor.variable;
|
| - EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableElement,
|
| - TopLevelVariableElement, variable);
|
| - expect(variable.isSynthetic, isTrue);
|
| - }
|
| -
|
| - void test_visitFunctionDeclaration_plain() {
|
| - // T f() {}
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String functionName = "f";
|
| - FunctionDeclaration declaration = AstFactory.functionDeclaration(
|
| - AstFactory.typeName4('T'),
|
| - null,
|
| - functionName,
|
| - AstFactory.functionExpression2(
|
| - AstFactory.formalParameterList(), AstFactory.blockFunctionBody2()));
|
| - declaration.documentationComment = AstFactory.documentationComment(
|
| - [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
|
| - declaration.endToken.offset = 80;
|
| - declaration.accept(builder);
|
| -
|
| - List<FunctionElement> functions = holder.functions;
|
| - expect(functions, hasLength(1));
|
| - FunctionElement function = functions[0];
|
| - expect(function, isNotNull);
|
| - _assertHasCodeRange(function, 50, 31);
|
| - expect(function.documentationComment, '/// aaa');
|
| - expect(function.hasImplicitReturnType, isFalse);
|
| - expect(function.name, functionName);
|
| - expect(declaration.element, same(function));
|
| - expect(declaration.functionExpression.element, same(function));
|
| - expect(function.isExternal, isFalse);
|
| - expect(function.isSynthetic, isFalse);
|
| - expect(function.typeParameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitFunctionDeclaration_setter() {
|
| - // set f() {}
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String functionName = "f";
|
| - FunctionDeclaration declaration = AstFactory.functionDeclaration(
|
| - null,
|
| - Keyword.SET,
|
| - functionName,
|
| - AstFactory.functionExpression2(
|
| - AstFactory.formalParameterList(), AstFactory.blockFunctionBody2()));
|
| - declaration.documentationComment = AstFactory.documentationComment(
|
| - [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
|
| - declaration.endToken.offset = 80;
|
| - declaration.accept(builder);
|
| -
|
| - List<PropertyAccessorElement> accessors = holder.accessors;
|
| - expect(accessors, hasLength(1));
|
| - PropertyAccessorElement accessor = accessors[0];
|
| - expect(accessor, isNotNull);
|
| - _assertHasCodeRange(accessor, 50, 31);
|
| - expect(accessor.documentationComment, '/// aaa');
|
| - expect(accessor.hasImplicitReturnType, isTrue);
|
| - expect(accessor.name, "$functionName=");
|
| - expect(declaration.element, same(accessor));
|
| - expect(declaration.functionExpression.element, same(accessor));
|
| - expect(accessor.isGetter, isFalse);
|
| - expect(accessor.isExternal, isFalse);
|
| - expect(accessor.isSetter, isTrue);
|
| - expect(accessor.isSynthetic, isFalse);
|
| - expect(accessor.typeParameters, hasLength(0));
|
| - PropertyInducingElement variable = accessor.variable;
|
| - EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableElement,
|
| - TopLevelVariableElement, variable);
|
| - expect(variable.isSynthetic, isTrue);
|
| - }
|
| -
|
| - void test_visitFunctionDeclaration_typeParameters() {
|
| - // f<E>() {}
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String functionName = 'f';
|
| - String typeParameterName = 'E';
|
| - FunctionExpression expression = AstFactory.functionExpression3(
|
| - AstFactory.typeParameterList([typeParameterName]),
|
| - AstFactory.formalParameterList(),
|
| - AstFactory.blockFunctionBody2());
|
| - FunctionDeclaration declaration =
|
| - AstFactory.functionDeclaration(null, null, functionName, expression);
|
| - declaration.accept(builder);
|
| -
|
| - List<FunctionElement> functions = holder.functions;
|
| - expect(functions, hasLength(1));
|
| - FunctionElement function = functions[0];
|
| - expect(function, isNotNull);
|
| - expect(function.hasImplicitReturnType, isTrue);
|
| - expect(function.name, functionName);
|
| - expect(function.isExternal, isFalse);
|
| - expect(function.isSynthetic, isFalse);
|
| - expect(declaration.element, same(function));
|
| - expect(expression.element, same(function));
|
| - List<TypeParameterElement> typeParameters = function.typeParameters;
|
| - expect(typeParameters, hasLength(1));
|
| - TypeParameterElement typeParameter = typeParameters[0];
|
| - expect(typeParameter, isNotNull);
|
| - expect(typeParameter.name, typeParameterName);
|
| - }
|
| -
|
| - void test_visitFunctionExpression() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - FunctionExpression expression = AstFactory.functionExpression2(
|
| - AstFactory.formalParameterList(), AstFactory.blockFunctionBody2());
|
| - expression.accept(builder);
|
| - List<FunctionElement> functions = holder.functions;
|
| - expect(functions, hasLength(1));
|
| - FunctionElement function = functions[0];
|
| - expect(function, isNotNull);
|
| - expect(expression.element, same(function));
|
| - expect(function.hasImplicitReturnType, isTrue);
|
| - expect(function.isSynthetic, isFalse);
|
| - expect(function.typeParameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitFunctionExpression_inBlockBody() {
|
| - List<FunctionElement> functions =
|
| - buildElementsForText('f() { return () => 42; }').functions[0].functions;
|
| - expect(functions, hasLength(1));
|
| - FunctionElement function = functions[0];
|
| - expect(function, isNotNull);
|
| - expect(function.hasImplicitReturnType, isTrue);
|
| - expect(function.isSynthetic, isFalse);
|
| - expect(function.typeParameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitFunctionExpression_inExpressionBody() {
|
| - List<FunctionElement> functions =
|
| - buildElementsForText('f() => () => 42;').functions[0].functions;
|
| - expect(functions, hasLength(1));
|
| - FunctionElement function = functions[0];
|
| - expect(function, isNotNull);
|
| - expect(function.hasImplicitReturnType, isTrue);
|
| - expect(function.isSynthetic, isFalse);
|
| - expect(function.typeParameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitFunctionTypeAlias() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String aliasName = "F";
|
| - String parameterName = "E";
|
| - FunctionTypeAlias aliasNode = AstFactory.typeAlias(
|
| - null, aliasName, AstFactory.typeParameterList([parameterName]), null);
|
| - aliasNode.documentationComment = AstFactory.documentationComment(
|
| - [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
|
| - aliasNode.endToken.offset = 80;
|
| - aliasNode.accept(builder);
|
| -
|
| - List<FunctionTypeAliasElement> aliases = holder.typeAliases;
|
| - expect(aliases, hasLength(1));
|
| - FunctionTypeAliasElement alias = aliases[0];
|
| - expect(alias, isNotNull);
|
| - _assertHasCodeRange(alias, 50, 31);
|
| - expect(alias.documentationComment, '/// aaa');
|
| - expect(alias.name, aliasName);
|
| - expect(alias.parameters, hasLength(0));
|
| - List<TypeParameterElement> typeParameters = alias.typeParameters;
|
| - expect(typeParameters, hasLength(1));
|
| - TypeParameterElement typeParameter = typeParameters[0];
|
| - expect(typeParameter, isNotNull);
|
| - expect(typeParameter.name, parameterName);
|
| - }
|
| -
|
| - void test_visitFunctionTypedFormalParameter() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String parameterName = "p";
|
| - FunctionTypedFormalParameter formalParameter =
|
| - AstFactory.functionTypedFormalParameter(null, parameterName);
|
| - _useParameterInMethod(formalParameter, 100, 110);
|
| - formalParameter.accept(builder);
|
| - List<ParameterElement> parameters = holder.parameters;
|
| - expect(parameters, hasLength(1));
|
| - ParameterElement parameter = parameters[0];
|
| - expect(parameter, isNotNull);
|
| - expect(parameter.name, parameterName);
|
| - expect(parameter.initializer, isNull);
|
| - expect(parameter.isConst, isFalse);
|
| - expect(parameter.isFinal, isFalse);
|
| - expect(parameter.isSynthetic, isFalse);
|
| - expect(parameter.parameterKind, ParameterKind.REQUIRED);
|
| - _assertVisibleRange(parameter, 100, 110);
|
| - }
|
| -
|
| - void test_visitFunctionTypedFormalParameter_withTypeParameters() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String parameterName = "p";
|
| - FunctionTypedFormalParameter formalParameter =
|
| - AstFactory.functionTypedFormalParameter(null, parameterName);
|
| - formalParameter.typeParameters = AstFactory.typeParameterList(['F']);
|
| - _useParameterInMethod(formalParameter, 100, 110);
|
| - formalParameter.accept(builder);
|
| - List<ParameterElement> parameters = holder.parameters;
|
| - expect(parameters, hasLength(1));
|
| - ParameterElement parameter = parameters[0];
|
| - expect(parameter, isNotNull);
|
| - expect(parameter.name, parameterName);
|
| - expect(parameter.initializer, isNull);
|
| - expect(parameter.isConst, isFalse);
|
| - expect(parameter.isFinal, isFalse);
|
| - expect(parameter.isSynthetic, isFalse);
|
| - expect(parameter.parameterKind, ParameterKind.REQUIRED);
|
| - expect(parameter.typeParameters, hasLength(1));
|
| - _assertVisibleRange(parameter, 100, 110);
|
| - }
|
| -
|
| - void test_visitLabeledStatement() {
|
| - List<LabelElement> labels =
|
| - buildElementsForText('f() { l: print(42); }').functions[0].labels;
|
| - expect(labels, hasLength(1));
|
| - LabelElement label = labels[0];
|
| - expect(label, isNotNull);
|
| - expect(label.name, 'l');
|
| - expect(label.isSynthetic, isFalse);
|
| - }
|
| -
|
| - void test_visitMethodDeclaration_abstract() {
|
| - // m();
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String methodName = "m";
|
| - MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
|
| - null,
|
| - null,
|
| - null,
|
| - null,
|
| - AstFactory.identifier3(methodName),
|
| - AstFactory.formalParameterList(),
|
| - AstFactory.emptyFunctionBody());
|
| - methodDeclaration.accept(builder);
|
| -
|
| - List<MethodElement> methods = holder.methods;
|
| - expect(methods, hasLength(1));
|
| - MethodElement method = methods[0];
|
| - expect(method, isNotNull);
|
| - expect(method.hasImplicitReturnType, isTrue);
|
| - expect(method.name, methodName);
|
| - expect(method.functions, hasLength(0));
|
| - expect(method.labels, hasLength(0));
|
| - expect(method.localVariables, hasLength(0));
|
| - expect(method.parameters, hasLength(0));
|
| - expect(method.typeParameters, hasLength(0));
|
| - expect(method.isAbstract, isTrue);
|
| - expect(method.isExternal, isFalse);
|
| - expect(method.isStatic, isFalse);
|
| - expect(method.isSynthetic, isFalse);
|
| - }
|
| -
|
| - void test_visitMethodDeclaration_duplicateField_synthetic() {
|
| - buildElementsForText(r'''
|
| -class A {
|
| - int f;
|
| - int get f => 42;
|
| -}
|
| -''');
|
| - ClassDeclaration classNode = compilationUnit.declarations.single;
|
| - // ClassElement
|
| - ClassElement classElement = classNode.element;
|
| - expect(classElement.fields, hasLength(2));
|
| - expect(classElement.accessors, hasLength(3));
|
| - FieldElement notSyntheticFieldElement = classElement.fields
|
| - .singleWhere((f) => f.displayName == 'f' && !f.isSynthetic);
|
| - FieldElement syntheticFieldElement = classElement.fields
|
| - .singleWhere((f) => f.displayName == 'f' && f.isSynthetic);
|
| - PropertyAccessorElement syntheticGetterElement = classElement.accessors
|
| - .singleWhere(
|
| - (a) => a.displayName == 'f' && a.isGetter && a.isSynthetic);
|
| - PropertyAccessorElement syntheticSetterElement = classElement.accessors
|
| - .singleWhere(
|
| - (a) => a.displayName == 'f' && a.isSetter && a.isSynthetic);
|
| - PropertyAccessorElement notSyntheticGetterElement = classElement.accessors
|
| - .singleWhere(
|
| - (a) => a.displayName == 'f' && a.isGetter && !a.isSynthetic);
|
| - expect(notSyntheticFieldElement.getter, same(syntheticGetterElement));
|
| - expect(notSyntheticFieldElement.setter, same(syntheticSetterElement));
|
| - expect(syntheticFieldElement.getter, same(notSyntheticGetterElement));
|
| - expect(syntheticFieldElement.setter, isNull);
|
| - // class members nodes and their elements
|
| - FieldDeclaration fieldDeclNode = classNode.members[0];
|
| - VariableDeclaration fieldNode = fieldDeclNode.fields.variables.single;
|
| - MethodDeclaration getterNode = classNode.members[1];
|
| - expect(fieldNode.element, notSyntheticFieldElement);
|
| - expect(getterNode.element, notSyntheticGetterElement);
|
| - }
|
| -
|
| - void test_visitMethodDeclaration_external() {
|
| - // external m();
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String methodName = "m";
|
| - MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
|
| - null,
|
| - null,
|
| - null,
|
| - null,
|
| - AstFactory.identifier3(methodName),
|
| - AstFactory.formalParameterList(),
|
| - AstFactory.emptyFunctionBody());
|
| - methodDeclaration.externalKeyword =
|
| - TokenFactory.tokenFromKeyword(Keyword.EXTERNAL);
|
| - methodDeclaration.accept(builder);
|
| -
|
| - List<MethodElement> methods = holder.methods;
|
| - expect(methods, hasLength(1));
|
| - MethodElement method = methods[0];
|
| - expect(method, isNotNull);
|
| - expect(method.hasImplicitReturnType, isTrue);
|
| - expect(method.name, methodName);
|
| - expect(method.functions, hasLength(0));
|
| - expect(method.labels, hasLength(0));
|
| - expect(method.localVariables, hasLength(0));
|
| - expect(method.parameters, hasLength(0));
|
| - expect(method.typeParameters, hasLength(0));
|
| - expect(method.isAbstract, isFalse);
|
| - expect(method.isExternal, isTrue);
|
| - expect(method.isStatic, isFalse);
|
| - expect(method.isSynthetic, isFalse);
|
| - }
|
| -
|
| - void test_visitMethodDeclaration_getter() {
|
| - // get m() {}
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String methodName = "m";
|
| - MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
|
| - null,
|
| - null,
|
| - Keyword.GET,
|
| - null,
|
| - AstFactory.identifier3(methodName),
|
| - AstFactory.formalParameterList(),
|
| - AstFactory.blockFunctionBody2());
|
| - methodDeclaration.documentationComment = AstFactory.documentationComment(
|
| - [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
|
| - methodDeclaration.endToken.offset = 80;
|
| - methodDeclaration.accept(builder);
|
| -
|
| - List<FieldElement> fields = holder.fields;
|
| - expect(fields, hasLength(1));
|
| - FieldElement field = fields[0];
|
| - expect(field, isNotNull);
|
| - expect(field.name, methodName);
|
| - expect(field.isSynthetic, isTrue);
|
| - expect(field.setter, isNull);
|
| - PropertyAccessorElement getter = field.getter;
|
| - expect(getter, isNotNull);
|
| - _assertHasCodeRange(getter, 50, 31);
|
| - expect(getter.documentationComment, '/// aaa');
|
| - expect(getter.hasImplicitReturnType, isTrue);
|
| - expect(getter.isAbstract, isFalse);
|
| - expect(getter.isExternal, isFalse);
|
| - expect(getter.isGetter, isTrue);
|
| - expect(getter.isSynthetic, isFalse);
|
| - expect(getter.name, methodName);
|
| - expect(getter.variable, field);
|
| - expect(getter.functions, hasLength(0));
|
| - expect(getter.labels, hasLength(0));
|
| - expect(getter.localVariables, hasLength(0));
|
| - expect(getter.parameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitMethodDeclaration_getter_abstract() {
|
| - // get m();
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String methodName = "m";
|
| - MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
|
| - null,
|
| - null,
|
| - Keyword.GET,
|
| - null,
|
| - AstFactory.identifier3(methodName),
|
| - AstFactory.formalParameterList(),
|
| - AstFactory.emptyFunctionBody());
|
| - methodDeclaration.accept(builder);
|
| -
|
| - List<FieldElement> fields = holder.fields;
|
| - expect(fields, hasLength(1));
|
| - FieldElement field = fields[0];
|
| - expect(field, isNotNull);
|
| - expect(field.name, methodName);
|
| - expect(field.isSynthetic, isTrue);
|
| - expect(field.setter, isNull);
|
| - PropertyAccessorElement getter = field.getter;
|
| - expect(getter, isNotNull);
|
| - expect(getter.hasImplicitReturnType, isTrue);
|
| - expect(getter.isAbstract, isTrue);
|
| - expect(getter.isExternal, isFalse);
|
| - expect(getter.isGetter, isTrue);
|
| - expect(getter.isSynthetic, isFalse);
|
| - expect(getter.name, methodName);
|
| - expect(getter.variable, field);
|
| - expect(getter.functions, hasLength(0));
|
| - expect(getter.labels, hasLength(0));
|
| - expect(getter.localVariables, hasLength(0));
|
| - expect(getter.parameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitMethodDeclaration_getter_external() {
|
| - // external get m();
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String methodName = "m";
|
| - MethodDeclaration methodDeclaration = AstFactory.methodDeclaration(
|
| - null,
|
| - null,
|
| - Keyword.GET,
|
| - null,
|
| - AstFactory.identifier3(methodName),
|
| - AstFactory.formalParameterList());
|
| - methodDeclaration.externalKeyword =
|
| - TokenFactory.tokenFromKeyword(Keyword.EXTERNAL);
|
| - methodDeclaration.accept(builder);
|
| -
|
| - List<FieldElement> fields = holder.fields;
|
| - expect(fields, hasLength(1));
|
| - FieldElement field = fields[0];
|
| - expect(field, isNotNull);
|
| - expect(field.name, methodName);
|
| - expect(field.isSynthetic, isTrue);
|
| - expect(field.setter, isNull);
|
| - PropertyAccessorElement getter = field.getter;
|
| - expect(getter, isNotNull);
|
| - expect(getter.hasImplicitReturnType, isTrue);
|
| - expect(getter.isAbstract, isFalse);
|
| - expect(getter.isExternal, isTrue);
|
| - expect(getter.isGetter, isTrue);
|
| - expect(getter.isSynthetic, isFalse);
|
| - expect(getter.name, methodName);
|
| - expect(getter.variable, field);
|
| - expect(getter.functions, hasLength(0));
|
| - expect(getter.labels, hasLength(0));
|
| - expect(getter.localVariables, hasLength(0));
|
| - expect(getter.parameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitMethodDeclaration_minimal() {
|
| - // T m() {}
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String methodName = "m";
|
| - MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
|
| - null,
|
| - AstFactory.typeName4('T'),
|
| - null,
|
| - null,
|
| - AstFactory.identifier3(methodName),
|
| - AstFactory.formalParameterList(),
|
| - AstFactory.blockFunctionBody2());
|
| - methodDeclaration.documentationComment = AstFactory.documentationComment(
|
| - [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
|
| - methodDeclaration.endToken.offset = 80;
|
| - methodDeclaration.accept(builder);
|
| -
|
| - List<MethodElement> methods = holder.methods;
|
| - expect(methods, hasLength(1));
|
| - MethodElement method = methods[0];
|
| - expect(method, isNotNull);
|
| - _assertHasCodeRange(method, 50, 31);
|
| - expect(method.documentationComment, '/// aaa');
|
| - expect(method.hasImplicitReturnType, isFalse);
|
| - expect(method.name, methodName);
|
| - expect(method.functions, hasLength(0));
|
| - expect(method.labels, hasLength(0));
|
| - expect(method.localVariables, hasLength(0));
|
| - expect(method.parameters, hasLength(0));
|
| - expect(method.typeParameters, hasLength(0));
|
| - expect(method.isAbstract, isFalse);
|
| - expect(method.isExternal, isFalse);
|
| - expect(method.isStatic, isFalse);
|
| - expect(method.isSynthetic, isFalse);
|
| - }
|
| -
|
| - void test_visitMethodDeclaration_operator() {
|
| - // operator +(addend) {}
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String methodName = "+";
|
| - MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
|
| - null,
|
| - null,
|
| - null,
|
| - Keyword.OPERATOR,
|
| - AstFactory.identifier3(methodName),
|
| - AstFactory
|
| - .formalParameterList([AstFactory.simpleFormalParameter3("addend")]),
|
| - AstFactory.blockFunctionBody2());
|
| - methodDeclaration.accept(builder);
|
| -
|
| - List<MethodElement> methods = holder.methods;
|
| - expect(methods, hasLength(1));
|
| - MethodElement method = methods[0];
|
| - expect(method, isNotNull);
|
| - expect(method.hasImplicitReturnType, isTrue);
|
| - expect(method.name, methodName);
|
| - expect(method.functions, hasLength(0));
|
| - expect(method.labels, hasLength(0));
|
| - expect(method.localVariables, hasLength(0));
|
| - expect(method.parameters, hasLength(1));
|
| - expect(method.typeParameters, hasLength(0));
|
| - expect(method.isAbstract, isFalse);
|
| - expect(method.isExternal, isFalse);
|
| - expect(method.isStatic, isFalse);
|
| - expect(method.isSynthetic, isFalse);
|
| - }
|
| -
|
| - void test_visitMethodDeclaration_setter() {
|
| - // set m() {}
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String methodName = "m";
|
| - MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
|
| - null,
|
| - null,
|
| - Keyword.SET,
|
| - null,
|
| - AstFactory.identifier3(methodName),
|
| - AstFactory.formalParameterList(),
|
| - AstFactory.blockFunctionBody2());
|
| - methodDeclaration.documentationComment = AstFactory.documentationComment(
|
| - [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
|
| - methodDeclaration.endToken.offset = 80;
|
| - methodDeclaration.accept(builder);
|
| -
|
| - List<FieldElement> fields = holder.fields;
|
| - expect(fields, hasLength(1));
|
| - FieldElement field = fields[0];
|
| - expect(field, isNotNull);
|
| - expect(field.name, methodName);
|
| - expect(field.isSynthetic, isTrue);
|
| - expect(field.getter, isNull);
|
| -
|
| - PropertyAccessorElement setter = field.setter;
|
| - expect(setter, isNotNull);
|
| - _assertHasCodeRange(setter, 50, 31);
|
| - expect(setter.documentationComment, '/// aaa');
|
| - expect(setter.hasImplicitReturnType, isTrue);
|
| - expect(setter.isAbstract, isFalse);
|
| - expect(setter.isExternal, isFalse);
|
| - expect(setter.isSetter, isTrue);
|
| - expect(setter.isSynthetic, isFalse);
|
| - expect(setter.name, "$methodName=");
|
| - expect(setter.displayName, methodName);
|
| - expect(setter.variable, field);
|
| - expect(setter.functions, hasLength(0));
|
| - expect(setter.labels, hasLength(0));
|
| - expect(setter.localVariables, hasLength(0));
|
| - expect(setter.parameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitMethodDeclaration_setter_abstract() {
|
| - // set m();
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String methodName = "m";
|
| - MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
|
| - null,
|
| - null,
|
| - Keyword.SET,
|
| - null,
|
| - AstFactory.identifier3(methodName),
|
| - AstFactory.formalParameterList(),
|
| - AstFactory.emptyFunctionBody());
|
| - methodDeclaration.accept(builder);
|
| -
|
| - List<FieldElement> fields = holder.fields;
|
| - expect(fields, hasLength(1));
|
| - FieldElement field = fields[0];
|
| - expect(field, isNotNull);
|
| - expect(field.name, methodName);
|
| - expect(field.isSynthetic, isTrue);
|
| - expect(field.getter, isNull);
|
| - PropertyAccessorElement setter = field.setter;
|
| - expect(setter, isNotNull);
|
| - expect(setter.hasImplicitReturnType, isTrue);
|
| - expect(setter.isAbstract, isTrue);
|
| - expect(setter.isExternal, isFalse);
|
| - expect(setter.isSetter, isTrue);
|
| - expect(setter.isSynthetic, isFalse);
|
| - expect(setter.name, "$methodName=");
|
| - expect(setter.displayName, methodName);
|
| - expect(setter.variable, field);
|
| - expect(setter.functions, hasLength(0));
|
| - expect(setter.labels, hasLength(0));
|
| - expect(setter.localVariables, hasLength(0));
|
| - expect(setter.parameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitMethodDeclaration_setter_external() {
|
| - // external m();
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String methodName = "m";
|
| - MethodDeclaration methodDeclaration = AstFactory.methodDeclaration(
|
| - null,
|
| - null,
|
| - Keyword.SET,
|
| - null,
|
| - AstFactory.identifier3(methodName),
|
| - AstFactory.formalParameterList());
|
| - methodDeclaration.externalKeyword =
|
| - TokenFactory.tokenFromKeyword(Keyword.EXTERNAL);
|
| - methodDeclaration.accept(builder);
|
| -
|
| - List<FieldElement> fields = holder.fields;
|
| - expect(fields, hasLength(1));
|
| - FieldElement field = fields[0];
|
| - expect(field, isNotNull);
|
| - expect(field.name, methodName);
|
| - expect(field.isSynthetic, isTrue);
|
| - expect(field.getter, isNull);
|
| - PropertyAccessorElement setter = field.setter;
|
| - expect(setter, isNotNull);
|
| - expect(setter.hasImplicitReturnType, isTrue);
|
| - expect(setter.isAbstract, isFalse);
|
| - expect(setter.isExternal, isTrue);
|
| - expect(setter.isSetter, isTrue);
|
| - expect(setter.isSynthetic, isFalse);
|
| - expect(setter.name, "$methodName=");
|
| - expect(setter.displayName, methodName);
|
| - expect(setter.variable, field);
|
| - expect(setter.functions, hasLength(0));
|
| - expect(setter.labels, hasLength(0));
|
| - expect(setter.localVariables, hasLength(0));
|
| - expect(setter.parameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitMethodDeclaration_static() {
|
| - // static m() {}
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String methodName = "m";
|
| - MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
|
| - Keyword.STATIC,
|
| - null,
|
| - null,
|
| - null,
|
| - AstFactory.identifier3(methodName),
|
| - AstFactory.formalParameterList(),
|
| - AstFactory.blockFunctionBody2());
|
| - methodDeclaration.accept(builder);
|
| - List<MethodElement> methods = holder.methods;
|
| - expect(methods, hasLength(1));
|
| - MethodElement method = methods[0];
|
| - expect(method, isNotNull);
|
| - expect(method.hasImplicitReturnType, isTrue);
|
| - expect(method.name, methodName);
|
| - expect(method.functions, hasLength(0));
|
| - expect(method.labels, hasLength(0));
|
| - expect(method.localVariables, hasLength(0));
|
| - expect(method.parameters, hasLength(0));
|
| - expect(method.typeParameters, hasLength(0));
|
| - expect(method.isAbstract, isFalse);
|
| - expect(method.isExternal, isFalse);
|
| - expect(method.isStatic, isTrue);
|
| - expect(method.isSynthetic, isFalse);
|
| - }
|
| -
|
| - void test_visitMethodDeclaration_typeParameters() {
|
| - // m<E>() {}
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String methodName = "m";
|
| - MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
|
| - null,
|
| - null,
|
| - null,
|
| - null,
|
| - AstFactory.identifier3(methodName),
|
| - AstFactory.formalParameterList(),
|
| - AstFactory.blockFunctionBody2());
|
| - methodDeclaration.typeParameters = AstFactory.typeParameterList(['E']);
|
| - methodDeclaration.accept(builder);
|
| -
|
| - List<MethodElement> methods = holder.methods;
|
| - expect(methods, hasLength(1));
|
| - MethodElement method = methods[0];
|
| - expect(method, isNotNull);
|
| - expect(method.hasImplicitReturnType, isTrue);
|
| - expect(method.name, methodName);
|
| - expect(method.functions, hasLength(0));
|
| - expect(method.labels, hasLength(0));
|
| - expect(method.localVariables, hasLength(0));
|
| - expect(method.parameters, hasLength(0));
|
| - expect(method.typeParameters, hasLength(1));
|
| - expect(method.isAbstract, isFalse);
|
| - expect(method.isExternal, isFalse);
|
| - expect(method.isStatic, isFalse);
|
| - expect(method.isSynthetic, isFalse);
|
| - }
|
| -
|
| - void test_visitMethodDeclaration_withMembers() {
|
| - MethodElement method = buildElementsForText(
|
| - 'class C { m(p) { var v; try { l: return; } catch (e) {} } }')
|
| - .types[0]
|
| - .methods[0];
|
| - String methodName = "m";
|
| - String parameterName = "p";
|
| - String localVariableName = "v";
|
| - String labelName = "l";
|
| - String exceptionParameterName = "e";
|
| - expect(method, isNotNull);
|
| - expect(method.hasImplicitReturnType, isTrue);
|
| - expect(method.name, methodName);
|
| - expect(method.typeParameters, hasLength(0));
|
| - expect(method.isAbstract, isFalse);
|
| - expect(method.isExternal, isFalse);
|
| - expect(method.isStatic, isFalse);
|
| - expect(method.isSynthetic, isFalse);
|
| - List<VariableElement> parameters = method.parameters;
|
| - expect(parameters, hasLength(1));
|
| - VariableElement parameter = parameters[0];
|
| - expect(parameter, isNotNull);
|
| - expect(parameter.name, parameterName);
|
| - List<VariableElement> localVariables = method.localVariables;
|
| - expect(localVariables, hasLength(2));
|
| - VariableElement firstVariable = localVariables[0];
|
| - VariableElement secondVariable = localVariables[1];
|
| - expect(firstVariable, isNotNull);
|
| - expect(secondVariable, isNotNull);
|
| - expect(
|
| - (firstVariable.name == localVariableName &&
|
| - secondVariable.name == exceptionParameterName) ||
|
| - (firstVariable.name == exceptionParameterName &&
|
| - secondVariable.name == localVariableName),
|
| - isTrue);
|
| - List<LabelElement> labels = method.labels;
|
| - expect(labels, hasLength(1));
|
| - LabelElement label = labels[0];
|
| - expect(label, isNotNull);
|
| - expect(label.name, labelName);
|
| - }
|
| -
|
| - void test_visitNamedFormalParameter() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String parameterName = "p";
|
| - DefaultFormalParameter formalParameter = AstFactory.namedFormalParameter(
|
| - AstFactory.simpleFormalParameter3(parameterName),
|
| - AstFactory.identifier3("42"));
|
| - _useParameterInMethod(formalParameter, 100, 110);
|
| - formalParameter.beginToken.offset = 50;
|
| - formalParameter.endToken.offset = 80;
|
| - formalParameter.accept(builder);
|
| - List<ParameterElement> parameters = holder.parameters;
|
| - expect(parameters, hasLength(1));
|
| - ParameterElement parameter = parameters[0];
|
| - expect(parameter, isNotNull);
|
| - _assertHasCodeRange(parameter, 50, 32);
|
| - expect(parameter.name, parameterName);
|
| - expect(parameter.isConst, isFalse);
|
| - expect(parameter.isFinal, isFalse);
|
| - expect(parameter.isSynthetic, isFalse);
|
| - expect(parameter.parameterKind, ParameterKind.NAMED);
|
| - _assertVisibleRange(parameter, 100, 110);
|
| - expect(parameter.defaultValueCode, "42");
|
| - FunctionElement initializer = parameter.initializer;
|
| - expect(initializer, isNotNull);
|
| - expect(initializer.isSynthetic, isTrue);
|
| - expect(initializer.hasImplicitReturnType, isTrue);
|
| - }
|
| -
|
| - void test_visitSimpleFormalParameter_noType() {
|
| - // p
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String parameterName = "p";
|
| - SimpleFormalParameter formalParameter =
|
| - AstFactory.simpleFormalParameter3(parameterName);
|
| - _useParameterInMethod(formalParameter, 100, 110);
|
| - formalParameter.accept(builder);
|
| - List<ParameterElement> parameters = holder.parameters;
|
| - expect(parameters, hasLength(1));
|
| - ParameterElement parameter = parameters[0];
|
| - expect(parameter, isNotNull);
|
| - expect(parameter.hasImplicitType, isTrue);
|
| - expect(parameter.initializer, isNull);
|
| - expect(parameter.isConst, isFalse);
|
| - expect(parameter.isFinal, isFalse);
|
| - expect(parameter.isSynthetic, isFalse);
|
| - expect(parameter.name, parameterName);
|
| - expect(parameter.parameterKind, ParameterKind.REQUIRED);
|
| - _assertVisibleRange(parameter, 100, 110);
|
| - }
|
| -
|
| - void test_visitSimpleFormalParameter_type() {
|
| - // T p
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String parameterName = "p";
|
| - SimpleFormalParameter formalParameter = AstFactory.simpleFormalParameter4(
|
| - AstFactory.typeName4('T'), parameterName);
|
| - _useParameterInMethod(formalParameter, 100, 110);
|
| - formalParameter.accept(builder);
|
| - List<ParameterElement> parameters = holder.parameters;
|
| - expect(parameters, hasLength(1));
|
| - ParameterElement parameter = parameters[0];
|
| - expect(parameter, isNotNull);
|
| - expect(parameter.hasImplicitType, isFalse);
|
| - expect(parameter.initializer, isNull);
|
| - expect(parameter.isConst, isFalse);
|
| - expect(parameter.isFinal, isFalse);
|
| - expect(parameter.isSynthetic, isFalse);
|
| - expect(parameter.name, parameterName);
|
| - expect(parameter.parameterKind, ParameterKind.REQUIRED);
|
| - _assertVisibleRange(parameter, 100, 110);
|
| - }
|
| -
|
| - void test_visitTypeAlias_minimal() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String aliasName = "F";
|
| - TypeAlias typeAlias = AstFactory.typeAlias(null, aliasName, null, null);
|
| - typeAlias.accept(builder);
|
| - List<FunctionTypeAliasElement> aliases = holder.typeAliases;
|
| - expect(aliases, hasLength(1));
|
| - FunctionTypeAliasElement alias = aliases[0];
|
| - expect(alias, isNotNull);
|
| - expect(alias.name, aliasName);
|
| - expect(alias.type, isNotNull);
|
| - expect(alias.isSynthetic, isFalse);
|
| - }
|
| -
|
| - void test_visitTypeAlias_withFormalParameters() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String aliasName = "F";
|
| - String firstParameterName = "x";
|
| - String secondParameterName = "y";
|
| - TypeAlias typeAlias = AstFactory.typeAlias(
|
| - null,
|
| - aliasName,
|
| - AstFactory.typeParameterList(),
|
| - AstFactory.formalParameterList([
|
| - AstFactory.simpleFormalParameter3(firstParameterName),
|
| - AstFactory.simpleFormalParameter3(secondParameterName)
|
| - ]));
|
| - typeAlias.beginToken.offset = 50;
|
| - typeAlias.endToken.offset = 80;
|
| - typeAlias.accept(builder);
|
| - List<FunctionTypeAliasElement> aliases = holder.typeAliases;
|
| - expect(aliases, hasLength(1));
|
| - FunctionTypeAliasElement alias = aliases[0];
|
| - expect(alias, isNotNull);
|
| - _assertHasCodeRange(alias, 50, 31);
|
| - expect(alias.name, aliasName);
|
| - expect(alias.type, isNotNull);
|
| - expect(alias.isSynthetic, isFalse);
|
| - List<VariableElement> parameters = alias.parameters;
|
| - expect(parameters, hasLength(2));
|
| - expect(parameters[0].name, firstParameterName);
|
| - expect(parameters[1].name, secondParameterName);
|
| - List<TypeParameterElement> typeParameters = alias.typeParameters;
|
| - expect(typeParameters, isNotNull);
|
| - expect(typeParameters, hasLength(0));
|
| - }
|
| -
|
| - void test_visitTypeAlias_withTypeParameters() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String aliasName = "F";
|
| - String firstTypeParameterName = "A";
|
| - String secondTypeParameterName = "B";
|
| - TypeAlias typeAlias = AstFactory.typeAlias(
|
| - null,
|
| - aliasName,
|
| - AstFactory.typeParameterList(
|
| - [firstTypeParameterName, secondTypeParameterName]),
|
| - AstFactory.formalParameterList());
|
| - typeAlias.accept(builder);
|
| - List<FunctionTypeAliasElement> aliases = holder.typeAliases;
|
| - expect(aliases, hasLength(1));
|
| - FunctionTypeAliasElement alias = aliases[0];
|
| - expect(alias, isNotNull);
|
| - expect(alias.name, aliasName);
|
| - expect(alias.type, isNotNull);
|
| - expect(alias.isSynthetic, isFalse);
|
| - List<VariableElement> parameters = alias.parameters;
|
| - expect(parameters, isNotNull);
|
| - expect(parameters, hasLength(0));
|
| - List<TypeParameterElement> typeParameters = alias.typeParameters;
|
| - expect(typeParameters, hasLength(2));
|
| - expect(typeParameters[0].name, firstTypeParameterName);
|
| - expect(typeParameters[1].name, secondTypeParameterName);
|
| - }
|
| -
|
| - void test_visitTypeParameter() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String parameterName = "E";
|
| - TypeParameter typeParameter = AstFactory.typeParameter(parameterName);
|
| - typeParameter.beginToken.offset = 50;
|
| - typeParameter.accept(builder);
|
| - List<TypeParameterElement> typeParameters = holder.typeParameters;
|
| - expect(typeParameters, hasLength(1));
|
| - TypeParameterElement typeParameterElement = typeParameters[0];
|
| - expect(typeParameterElement, isNotNull);
|
| - _assertHasCodeRange(typeParameterElement, 50, 1);
|
| - expect(typeParameterElement.name, parameterName);
|
| - expect(typeParameterElement.bound, isNull);
|
| - expect(typeParameterElement.isSynthetic, isFalse);
|
| - }
|
| -
|
| - void test_visitVariableDeclaration_inConstructor() {
|
| - List<ConstructorElement> constructors =
|
| - buildElementsForText('class C { C() { var v = 1; } }')
|
| - .types[0]
|
| - .constructors;
|
| - expect(constructors, hasLength(1));
|
| - List<LocalVariableElement> variableElements =
|
| - constructors[0].localVariables;
|
| - expect(variableElements, hasLength(1));
|
| - LocalVariableElement variableElement = variableElements[0];
|
| - _assertHasCodeRange(variableElement, 16, 10);
|
| - expect(variableElement.hasImplicitType, isTrue);
|
| - expect(variableElement.name, 'v');
|
| - _assertVisibleRange(variableElement, 14, 28);
|
| - }
|
| -
|
| - void test_visitVariableDeclaration_inForEachStatement() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - //
|
| - // m() { for (var v in []) }
|
| - //
|
| - String variableName = "v";
|
| - Statement statement = AstFactory.forEachStatement(
|
| - AstFactory.declaredIdentifier3('v'),
|
| - AstFactory.listLiteral(),
|
| - AstFactory.block());
|
| - _setNodeSourceRange(statement, 100, 110);
|
| - MethodDeclaration method = AstFactory.methodDeclaration2(
|
| - null,
|
| - null,
|
| - null,
|
| - null,
|
| - AstFactory.identifier3("m"),
|
| - AstFactory.formalParameterList(),
|
| - AstFactory.blockFunctionBody2([statement]));
|
| - _setBlockBodySourceRange(method.body, 200, 220);
|
| - method.accept(builder);
|
| -
|
| - List<MethodElement> methods = holder.methods;
|
| - expect(methods, hasLength(1));
|
| - List<LocalVariableElement> variableElements = methods[0].localVariables;
|
| - expect(variableElements, hasLength(1));
|
| - LocalVariableElement variableElement = variableElements[0];
|
| - expect(variableElement.name, variableName);
|
| - _assertVisibleRange(variableElement, 100, 110);
|
| - }
|
| -
|
| - void test_visitVariableDeclaration_inForStatement() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - //
|
| - // m() { for (T v;;) }
|
| - //
|
| - String variableName = "v";
|
| - ForStatement statement = AstFactory.forStatement2(
|
| - AstFactory.variableDeclarationList(null, AstFactory.typeName4('T'),
|
| - [AstFactory.variableDeclaration('v')]),
|
| - null,
|
| - null,
|
| - AstFactory.block());
|
| - _setNodeSourceRange(statement, 100, 110);
|
| - MethodDeclaration method = AstFactory.methodDeclaration2(
|
| - null,
|
| - null,
|
| - null,
|
| - null,
|
| - AstFactory.identifier3("m"),
|
| - AstFactory.formalParameterList(),
|
| - AstFactory.blockFunctionBody2([statement]));
|
| - _setBlockBodySourceRange(method.body, 200, 220);
|
| - method.accept(builder);
|
| -
|
| - List<MethodElement> methods = holder.methods;
|
| - expect(methods, hasLength(1));
|
| - List<LocalVariableElement> variableElements = methods[0].localVariables;
|
| - expect(variableElements, hasLength(1));
|
| - LocalVariableElement variableElement = variableElements[0];
|
| - expect(variableElement.name, variableName);
|
| - _assertVisibleRange(variableElement, 100, 110);
|
| - }
|
| -
|
| - void test_visitVariableDeclaration_inMethod() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - //
|
| - // m() {T v;}
|
| - //
|
| - String variableName = "v";
|
| - VariableDeclaration variable =
|
| - AstFactory.variableDeclaration2(variableName, null);
|
| - Statement statement = AstFactory.variableDeclarationStatement(
|
| - null, AstFactory.typeName4('T'), [variable]);
|
| - MethodDeclaration method = AstFactory.methodDeclaration2(
|
| - null,
|
| - null,
|
| - null,
|
| - null,
|
| - AstFactory.identifier3("m"),
|
| - AstFactory.formalParameterList(),
|
| - AstFactory.blockFunctionBody2([statement]));
|
| - _setBlockBodySourceRange(method.body, 100, 110);
|
| - method.accept(builder);
|
| -
|
| - List<MethodElement> methods = holder.methods;
|
| - expect(methods, hasLength(1));
|
| - List<LocalVariableElement> variableElements = methods[0].localVariables;
|
| - expect(variableElements, hasLength(1));
|
| - LocalVariableElement variableElement = variableElements[0];
|
| - expect(variableElement.hasImplicitType, isFalse);
|
| - expect(variableElement.name, variableName);
|
| - _assertVisibleRange(variableElement, 100, 110);
|
| - }
|
| -
|
| - void test_visitVariableDeclaration_localNestedInFunction() {
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - //
|
| - // var f = () {var v;};
|
| - //
|
| - String variableName = "v";
|
| - VariableDeclaration variable =
|
| - AstFactory.variableDeclaration2(variableName, null);
|
| - Statement statement =
|
| - AstFactory.variableDeclarationStatement2(null, [variable]);
|
| - Expression initializer = AstFactory.functionExpression2(
|
| - AstFactory.formalParameterList(),
|
| - AstFactory.blockFunctionBody2([statement]));
|
| - String fieldName = "f";
|
| - VariableDeclaration field =
|
| - AstFactory.variableDeclaration2(fieldName, initializer);
|
| - FieldDeclaration fieldDeclaration =
|
| - AstFactory.fieldDeclaration2(false, null, [field]);
|
| - fieldDeclaration.accept(builder);
|
| -
|
| - List<FieldElement> variables = holder.fields;
|
| - expect(variables, hasLength(1));
|
| - FieldElement fieldElement = variables[0];
|
| - expect(fieldElement, isNotNull);
|
| - FunctionElement initializerElement = fieldElement.initializer;
|
| - expect(initializerElement, isNotNull);
|
| - expect(initializerElement.hasImplicitReturnType, isTrue);
|
| - List<FunctionElement> functionElements = initializerElement.functions;
|
| - expect(functionElements, hasLength(1));
|
| - List<LocalVariableElement> variableElements =
|
| - functionElements[0].localVariables;
|
| - expect(variableElements, hasLength(1));
|
| - LocalVariableElement variableElement = variableElements[0];
|
| - expect(variableElement.hasImplicitType, isTrue);
|
| - expect(variableElement.isConst, isFalse);
|
| - expect(variableElement.isFinal, isFalse);
|
| - expect(variableElement.isSynthetic, isFalse);
|
| - expect(variableElement.name, variableName);
|
| - }
|
| -
|
| - void test_visitVariableDeclaration_noInitializer() {
|
| - // var v;
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String variableName = "v";
|
| - VariableDeclaration variableDeclaration =
|
| - AstFactory.variableDeclaration2(variableName, null);
|
| - AstFactory.variableDeclarationList2(null, [variableDeclaration]);
|
| - variableDeclaration.accept(builder);
|
| -
|
| - List<TopLevelVariableElement> variables = holder.topLevelVariables;
|
| - expect(variables, hasLength(1));
|
| - TopLevelVariableElement variable = variables[0];
|
| - expect(variable, isNotNull);
|
| - expect(variable.hasImplicitType, isTrue);
|
| - expect(variable.initializer, isNull);
|
| - expect(variable.name, variableName);
|
| - expect(variable.isConst, isFalse);
|
| - expect(variable.isFinal, isFalse);
|
| - expect(variable.isSynthetic, isFalse);
|
| - expect(variable.getter, isNotNull);
|
| - expect(variable.setter, isNotNull);
|
| - }
|
| -
|
| - void test_visitVariableDeclaration_top() {
|
| - // final a, b;
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - VariableDeclaration variableDeclaration1 =
|
| - AstFactory.variableDeclaration('a');
|
| - VariableDeclaration variableDeclaration2 =
|
| - AstFactory.variableDeclaration('b');
|
| - TopLevelVariableDeclaration topLevelVariableDeclaration = AstFactory
|
| - .topLevelVariableDeclaration(
|
| - Keyword.FINAL, null, [variableDeclaration1, variableDeclaration2]);
|
| - topLevelVariableDeclaration.documentationComment = AstFactory
|
| - .documentationComment(
|
| - [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
|
| -
|
| - topLevelVariableDeclaration.accept(builder);
|
| - List<TopLevelVariableElement> variables = holder.topLevelVariables;
|
| - expect(variables, hasLength(2));
|
| -
|
| - TopLevelVariableElement variable1 = variables[0];
|
| - expect(variable1, isNotNull);
|
| - expect(variable1.documentationComment, '/// aaa');
|
| -
|
| - TopLevelVariableElement variable2 = variables[1];
|
| - expect(variable2, isNotNull);
|
| - expect(variable2.documentationComment, '/// aaa');
|
| - }
|
| -
|
| - void test_visitVariableDeclaration_top_const_hasInitializer() {
|
| - // const v = 42;
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String variableName = "v";
|
| - VariableDeclaration variableDeclaration =
|
| - AstFactory.variableDeclaration2(variableName, AstFactory.integer(42));
|
| - AstFactory.variableDeclarationList2(Keyword.CONST, [variableDeclaration]);
|
| - variableDeclaration.accept(builder);
|
| -
|
| - List<TopLevelVariableElement> variables = holder.topLevelVariables;
|
| - expect(variables, hasLength(1));
|
| - TopLevelVariableElement variable = variables[0];
|
| - expect(variable, new isInstanceOf<ConstTopLevelVariableElementImpl>());
|
| - expect(variable.initializer, isNotNull);
|
| - expect(variable.initializer.type, isNotNull);
|
| - expect(variable.initializer.hasImplicitReturnType, isTrue);
|
| - expect(variable.name, variableName);
|
| - expect(variable.hasImplicitType, isTrue);
|
| - expect(variable.isConst, isTrue);
|
| - expect(variable.isFinal, isFalse);
|
| - expect(variable.isSynthetic, isFalse);
|
| - expect(variable.getter, isNotNull);
|
| - expect(variable.setter, isNull);
|
| - }
|
| -
|
| - void test_visitVariableDeclaration_top_final() {
|
| - // final v;
|
| - ElementHolder holder = new ElementHolder();
|
| - ElementBuilder builder = _makeBuilder(holder);
|
| - String variableName = "v";
|
| - VariableDeclaration variableDeclaration =
|
| - AstFactory.variableDeclaration2(variableName, null);
|
| - AstFactory.variableDeclarationList2(Keyword.FINAL, [variableDeclaration]);
|
| - variableDeclaration.accept(builder);
|
| - List<TopLevelVariableElement> variables = holder.topLevelVariables;
|
| - expect(variables, hasLength(1));
|
| - TopLevelVariableElement variable = variables[0];
|
| - expect(variable, isNotNull);
|
| - expect(variable.hasImplicitType, isTrue);
|
| - expect(variable.initializer, isNull);
|
| - expect(variable.name, variableName);
|
| - expect(variable.isConst, isFalse);
|
| - expect(variable.isFinal, isTrue);
|
| - expect(variable.isSynthetic, isFalse);
|
| - expect(variable.getter, isNotNull);
|
| - expect(variable.setter, isNull);
|
| - }
|
| -
|
| - void _assertHasCodeRange(Element element, int offset, int length) {
|
| - ElementImpl elementImpl = element;
|
| - expect(elementImpl.codeOffset, offset);
|
| - expect(elementImpl.codeLength, length);
|
| - }
|
| -
|
| - void _assertVisibleRange(LocalElement element, int offset, int end) {
|
| - SourceRange visibleRange = element.visibleRange;
|
| - expect(visibleRange.offset, offset);
|
| - expect(visibleRange.end, end);
|
| - }
|
| -
|
| - ElementBuilder _makeBuilder(ElementHolder holder) =>
|
| - new ElementBuilder(holder, new CompilationUnitElementImpl('test.dart'));
|
| -
|
| - void _setBlockBodySourceRange(BlockFunctionBody body, int offset, int end) {
|
| - _setNodeSourceRange(body.block, offset, end);
|
| - }
|
| -
|
| - void _setNodeSourceRange(AstNode node, int offset, int end) {
|
| - node.beginToken.offset = offset;
|
| - Token endToken = node.endToken;
|
| - endToken.offset = end - endToken.length;
|
| - }
|
| -
|
| - void _useParameterInMethod(
|
| - FormalParameter formalParameter, int blockOffset, int blockEnd) {
|
| - Block block = AstFactory.block();
|
| - block.leftBracket.offset = blockOffset;
|
| - block.rightBracket.offset = blockEnd - 1;
|
| - BlockFunctionBody body = AstFactory.blockFunctionBody(block);
|
| - AstFactory.methodDeclaration2(
|
| - null,
|
| - null,
|
| - null,
|
| - null,
|
| - AstFactory.identifier3("main"),
|
| - AstFactory.formalParameterList([formalParameter]),
|
| - body);
|
| - }
|
| -}
|
| -
|
| -@reflectiveTest
|
| class ElementLocatorTest extends ResolverTestCase {
|
| void fail_locate_Identifier_partOfDirective() {
|
| // Can't resolve the library element without the library declaration.
|
|
|