Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(666)

Unified Diff: pkg/analyzer/test/src/task/dart_test.dart

Issue 1462133005: Downwards inference. This adds support to the resolver for downwards (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Address comments 2 Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer/test/src/task/dart_test.dart
diff --git a/pkg/analyzer/test/src/task/dart_test.dart b/pkg/analyzer/test/src/task/dart_test.dart
index 078592132e5f31acc5a94d2a520f0d808399916b..fb2602542349cc357383c9643134884182841869 100644
--- a/pkg/analyzer/test/src/task/dart_test.dart
+++ b/pkg/analyzer/test/src/task/dart_test.dart
@@ -1284,7 +1284,7 @@ const x = 1;
// should be set to the same error state.
for (String otherVariableName in otherVariables) {
PropertyInducingElement otherVariableElement =
- getTopLevelVariableElement(unit, otherVariableName);
+ AstFinder.getTopLevelVariableElement(unit, otherVariableName);
_expectCircularityError((otherVariableElement
as TopLevelVariableElementImpl).evaluationResult);
}
@@ -1299,7 +1299,7 @@ const x = 1;
CompilationUnit unit, String variableName) {
// Find the element for the given constant.
PropertyInducingElement variableElement =
- getTopLevelVariableElement(unit, variableName);
+ AstFinder.getTopLevelVariableElement(unit, variableName);
// Now compute the value of the constant.
computeResult(variableElement, CONSTANT_VALUE,
matcher: isComputeConstantValueTask);
@@ -1787,7 +1787,7 @@ class B {
LibrarySpecificUnit target = new LibrarySpecificUnit(source, source);
computeResult(target, RESOLVED_UNIT5);
CompilationUnit unit = outputs[RESOLVED_UNIT5];
- FieldElement elementA = getFieldInClassElement(unit, 'A', 'a');
+ FieldElement elementA = AstFinder.getFieldInClassElement(unit, 'A', 'a');
// compute
computeResult(elementA, PROPAGABLE_VARIABLE_DEPENDENCIES,
matcher: isComputePropagableVariableDependenciesTask);
@@ -1798,10 +1798,10 @@ class B {
expect(
dependencies,
unorderedEquals([
- getFieldInClassElement(unit, 'A', 'a1'),
- getFieldInClassElement(unit, 'A', 'a2'),
- getFieldInClassElement(unit, 'B', 'b1'),
- getFieldInClassElement(unit, 'B', 'b2')
+ AstFinder.getFieldInClassElement(unit, 'A', 'a1'),
+ AstFinder.getFieldInClassElement(unit, 'A', 'a2'),
+ AstFinder.getFieldInClassElement(unit, 'B', 'b1'),
+ AstFinder.getFieldInClassElement(unit, 'B', 'b2')
]));
}
@@ -1818,7 +1818,8 @@ var d4 = 4;
LibrarySpecificUnit target = new LibrarySpecificUnit(source, source);
computeResult(target, RESOLVED_UNIT5);
CompilationUnit unit = outputs[RESOLVED_UNIT5];
- TopLevelVariableElement elementA = getTopLevelVariableElement(unit, 'a');
+ TopLevelVariableElement elementA =
+ AstFinder.getTopLevelVariableElement(unit, 'a');
// compute
computeResult(elementA, PROPAGABLE_VARIABLE_DEPENDENCIES,
matcher: isComputePropagableVariableDependenciesTask);
@@ -1829,8 +1830,8 @@ var d4 = 4;
expect(
dependencies,
unorderedEquals([
- getTopLevelVariableElement(unit, 'd1'),
- getTopLevelVariableElement(unit, 'd2')
+ AstFinder.getTopLevelVariableElement(unit, 'd1'),
+ AstFinder.getTopLevelVariableElement(unit, 'd2')
]));
}
@@ -1848,7 +1849,8 @@ final d = 4;
LibrarySpecificUnit target = new LibrarySpecificUnit(source, source);
computeResult(target, RESOLVED_UNIT5);
CompilationUnit unit = outputs[RESOLVED_UNIT5];
- TopLevelVariableElement elementA = getTopLevelVariableElement(unit, 'a');
+ TopLevelVariableElement elementA =
+ AstFinder.getTopLevelVariableElement(unit, 'a');
// compute
computeResult(elementA, PROPAGABLE_VARIABLE_DEPENDENCIES,
matcher: isComputePropagableVariableDependenciesTask);
@@ -1856,8 +1858,8 @@ final d = 4;
expect(outputs, hasLength(1));
List<VariableElement> dependencies =
outputs[PROPAGABLE_VARIABLE_DEPENDENCIES];
- expect(
- dependencies, unorderedEquals([getTopLevelVariableElement(unit, 'd')]));
+ expect(dependencies,
+ unorderedEquals([AstFinder.getTopLevelVariableElement(unit, 'd')]));
}
test_perform_topLevel_withoutSpaceAfterType() {
@@ -1871,7 +1873,8 @@ const c = 2;
LibrarySpecificUnit target = new LibrarySpecificUnit(source, source);
computeResult(target, RESOLVED_UNIT5);
CompilationUnit unit = outputs[RESOLVED_UNIT5];
- TopLevelVariableElement elementA = getTopLevelVariableElement(unit, 'a');
+ TopLevelVariableElement elementA =
+ AstFinder.getTopLevelVariableElement(unit, 'a');
// compute
computeResult(elementA, PROPAGABLE_VARIABLE_DEPENDENCIES,
matcher: isComputePropagableVariableDependenciesTask);
@@ -1882,8 +1885,8 @@ const c = 2;
expect(
dependencies,
unorderedEquals([
- getTopLevelVariableElement(unit, 'b'),
- getTopLevelVariableElement(unit, 'c')
+ AstFinder.getTopLevelVariableElement(unit, 'b'),
+ AstFinder.getTopLevelVariableElement(unit, 'c')
]));
}
}
@@ -2470,11 +2473,11 @@ class Z {}
computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT9,
matcher: isInferInstanceMembersInUnitTask);
CompilationUnit unit = outputs[RESOLVED_UNIT9];
- VariableDeclaration field = getFieldInClass(unit, 'B', 'f');
- MethodDeclaration method = getMethodInClass(unit, 'B', 'm');
- DartType typeX = getClass(unit, 'X').element.type;
- DartType typeY = getClass(unit, 'Y').element.type;
- DartType typeZ = getClass(unit, 'Z').element.type;
+ VariableDeclaration field = AstFinder.getFieldInClass(unit, 'B', 'f');
+ MethodDeclaration method = AstFinder.getMethodInClass(unit, 'B', 'm');
+ DartType typeX = AstFinder.getClass(unit, 'X').element.type;
+ DartType typeY = AstFinder.getClass(unit, 'Y').element.type;
+ DartType typeZ = AstFinder.getClass(unit, 'Z').element.type;
expect(field.element.type, typeX);
expect(method.element.returnType, typeY);
@@ -2508,9 +2511,12 @@ class M {
new LibrarySpecificUnit(secondSource, secondSource), RESOLVED_UNIT9);
CompilationUnit secondUnit = outputs[RESOLVED_UNIT9];
- VariableDeclaration variableA = getTopLevelVariable(firstUnit, 'a');
- VariableDeclaration variableB = getTopLevelVariable(secondUnit, 'b');
- VariableDeclaration variableC = getFieldInClass(secondUnit, 'M', 'c');
+ VariableDeclaration variableA =
+ AstFinder.getTopLevelVariable(firstUnit, 'a');
+ VariableDeclaration variableB =
+ AstFinder.getTopLevelVariable(secondUnit, 'b');
+ VariableDeclaration variableC =
+ AstFinder.getFieldInClass(secondUnit, 'M', 'c');
InterfaceType stringType = context.typeProvider.stringType;
expect(variableA.element.type, stringType);
@@ -2532,8 +2538,10 @@ class C {
''');
computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT9);
CompilationUnit unit = outputs[RESOLVED_UNIT9];
- VariableDeclaration topLevelDecl = getTopLevelVariable(unit, 'topLevel');
- VariableDeclaration fieldDecl = getFieldInClass(unit, 'C', 'field');
+ VariableDeclaration topLevelDecl =
+ AstFinder.getTopLevelVariable(unit, 'topLevel');
+ VariableDeclaration fieldDecl =
+ AstFinder.getFieldInClass(unit, 'C', 'field');
VariableElement topLevel = topLevelDecl.name.staticElement;
VariableElement field = fieldDecl.name.staticElement;
@@ -2558,7 +2566,7 @@ class M {
computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT7,
matcher: isInferStaticVariableTypesInUnitTask);
CompilationUnit unit = outputs[RESOLVED_UNIT7];
- VariableDeclaration declaration = getFieldInClass(unit, 'M', 'X');
+ VariableDeclaration declaration = AstFinder.getFieldInClass(unit, 'M', 'X');
InterfaceType stringType = context.typeProvider.stringType;
expect(declaration.element.type, stringType);
}
@@ -2604,10 +2612,13 @@ class M {}
new LibrarySpecificUnit(secondSource, secondSource), RESOLVED_UNIT7);
CompilationUnit secondUnit = outputs[RESOLVED_UNIT7];
- VariableDeclaration variableA = getTopLevelVariable(firstUnit, 'a');
- VariableDeclaration variableB = getTopLevelVariable(secondUnit, 'b');
- VariableDeclaration variableC = getTopLevelVariable(firstUnit, 'c');
- ClassDeclaration classM = getClass(secondUnit, 'M');
+ VariableDeclaration variableA =
+ AstFinder.getTopLevelVariable(firstUnit, 'a');
+ VariableDeclaration variableB =
+ AstFinder.getTopLevelVariable(secondUnit, 'b');
+ VariableDeclaration variableC =
+ AstFinder.getTopLevelVariable(firstUnit, 'c');
+ ClassDeclaration classM = AstFinder.getClass(secondUnit, 'M');
DartType typeM = classM.element.type;
expect(variableA.element.type, typeM);
@@ -2654,7 +2665,8 @@ class C {
''');
computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT5);
CompilationUnit unit = outputs[RESOLVED_UNIT5];
- VariableDeclaration declaration = getFieldInClass(unit, 'C', 'field');
+ VariableDeclaration declaration =
+ AstFinder.getFieldInClass(unit, 'C', 'field');
VariableElement variable = declaration.name.staticElement;
InferStaticVariableTypeTask inferTask =
new InferStaticVariableTypeTask(task.context, variable);
@@ -2669,7 +2681,8 @@ var topLevel = '';
''');
computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT5);
CompilationUnit unit = outputs[RESOLVED_UNIT5];
- VariableDeclaration declaration = getTopLevelVariable(unit, 'topLevel');
+ VariableDeclaration declaration =
+ AstFinder.getTopLevelVariable(unit, 'topLevel');
VariableElement variable = declaration.name.staticElement;
InferStaticVariableTypeTask inferTask =
new InferStaticVariableTypeTask(task.context, variable);
@@ -2688,8 +2701,10 @@ class C {
''');
computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT5);
CompilationUnit unit = outputs[RESOLVED_UNIT5];
- VariableDeclaration topLevelDecl = getTopLevelVariable(unit, 'topLevel3');
- VariableDeclaration fieldDecl = getFieldInClass(unit, 'C', 'field3');
+ VariableDeclaration topLevelDecl =
+ AstFinder.getTopLevelVariable(unit, 'topLevel3');
+ VariableDeclaration fieldDecl =
+ AstFinder.getFieldInClass(unit, 'C', 'field3');
VariableElement topLevel = topLevelDecl.name.staticElement;
VariableElement field = fieldDecl.name.staticElement;
@@ -2714,9 +2729,9 @@ class C {
computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT5);
CompilationUnit unit = outputs[RESOLVED_UNIT5];
VariableElement topLevel =
- getTopLevelVariable(unit, 'topLevel').name.staticElement;
+ AstFinder.getTopLevelVariable(unit, 'topLevel').name.staticElement;
VariableElement field =
- getFieldInClass(unit, 'C', 'field').name.staticElement;
+ AstFinder.getFieldInClass(unit, 'C', 'field').name.staticElement;
computeResult(field, INFERRED_STATIC_VARIABLE,
matcher: isInferStaticVariableTypeTask);
@@ -2737,9 +2752,11 @@ var tau = piFirst ? pi * 2 : 6.28;
computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT5);
CompilationUnit unit = outputs[RESOLVED_UNIT5];
VariableElement piFirst =
- getTopLevelVariable(unit, 'piFirst').name.staticElement;
- VariableElement pi = getTopLevelVariable(unit, 'pi').name.staticElement;
- VariableElement tau = getTopLevelVariable(unit, 'tau').name.staticElement;
+ AstFinder.getTopLevelVariable(unit, 'piFirst').name.staticElement;
+ VariableElement pi =
+ AstFinder.getTopLevelVariable(unit, 'pi').name.staticElement;
+ VariableElement tau =
+ AstFinder.getTopLevelVariable(unit, 'tau').name.staticElement;
computeResult(piFirst, INFERRED_STATIC_VARIABLE,
matcher: isInferStaticVariableTypeTask);
@@ -2757,7 +2774,8 @@ var a = '' / null;
''');
computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT5);
CompilationUnit unit = outputs[RESOLVED_UNIT5];
- VariableElement a = getTopLevelVariable(unit, 'a').name.staticElement;
+ VariableElement a =
+ AstFinder.getTopLevelVariable(unit, 'a').name.staticElement;
computeResult(a, INFERRED_STATIC_VARIABLE,
matcher: isInferStaticVariableTypeTask);
@@ -2773,7 +2791,8 @@ var a = null;
''');
computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT5);
CompilationUnit unit = outputs[RESOLVED_UNIT5];
- VariableElement a = getTopLevelVariable(unit, 'a').name.staticElement;
+ VariableElement a =
+ AstFinder.getTopLevelVariable(unit, 'a').name.staticElement;
computeResult(a, INFERRED_STATIC_VARIABLE,
matcher: isInferStaticVariableTypeTask);
@@ -3157,9 +3176,11 @@ final tau = piFirst ? pi * 2 : 6.28;
CompilationUnit unit = outputs[RESOLVED_UNIT6];
// verify
TopLevelVariableElement piFirst =
- getTopLevelVariableElement(unit, 'piFirst');
- TopLevelVariableElement pi = getTopLevelVariableElement(unit, 'pi');
- TopLevelVariableElement tau = getTopLevelVariableElement(unit, 'tau');
+ AstFinder.getTopLevelVariableElement(unit, 'piFirst');
+ TopLevelVariableElement pi =
+ AstFinder.getTopLevelVariableElement(unit, 'pi');
+ TopLevelVariableElement tau =
+ AstFinder.getTopLevelVariableElement(unit, 'tau');
expect(piFirst.propagatedType, context.typeProvider.boolType);
expect(pi.propagatedType, isNull);
expect(tau.propagatedType, isNull);
@@ -3181,9 +3202,12 @@ final c = '2';
// verify
InterfaceType intType = context.typeProvider.intType;
InterfaceType stringType = context.typeProvider.stringType;
- expect(getTopLevelVariableElement(unit, 'a').propagatedType, intType);
- expect(getTopLevelVariableElement(unit, 'b').propagatedType, intType);
- expect(getTopLevelVariableElement(unit, 'c').propagatedType, stringType);
+ expect(AstFinder.getTopLevelVariableElement(unit, 'a').propagatedType,
+ intType);
+ expect(AstFinder.getTopLevelVariableElement(unit, 'b').propagatedType,
+ intType);
+ expect(AstFinder.getTopLevelVariableElement(unit, 'c').propagatedType,
+ stringType);
}
}
@@ -3200,9 +3224,11 @@ final tau = piFirst ? pi * 2 : 6.28;
computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT5);
CompilationUnit unit = outputs[RESOLVED_UNIT5];
TopLevelVariableElement piFirst =
- getTopLevelVariableElement(unit, 'piFirst');
- TopLevelVariableElement pi = getTopLevelVariableElement(unit, 'pi');
- TopLevelVariableElement tau = getTopLevelVariableElement(unit, 'tau');
+ AstFinder.getTopLevelVariableElement(unit, 'piFirst');
+ TopLevelVariableElement pi =
+ AstFinder.getTopLevelVariableElement(unit, 'pi');
+ TopLevelVariableElement tau =
+ AstFinder.getTopLevelVariableElement(unit, 'tau');
// compute
computeResult(piFirst, PROPAGATED_VARIABLE,
matcher: isPropagateVariableTypeTask);
@@ -3220,7 +3246,7 @@ var a = null;
''');
computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT5);
CompilationUnit unit = outputs[RESOLVED_UNIT5];
- TopLevelVariableElement a = getTopLevelVariableElement(unit, 'a');
+ TopLevelVariableElement a = AstFinder.getTopLevelVariableElement(unit, 'a');
// compute
computeResult(a, PROPAGATED_VARIABLE, matcher: isPropagateVariableTypeTask);
expect(a.propagatedType, isNull);
@@ -3236,9 +3262,12 @@ final c = '2';
''');
computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT5);
CompilationUnit unit = outputs[RESOLVED_UNIT5];
- TopLevelVariableElement elementA = getTopLevelVariableElement(unit, 'a');
- TopLevelVariableElement elementB = getTopLevelVariableElement(unit, 'b');
- TopLevelVariableElement elementC = getTopLevelVariableElement(unit, 'c');
+ TopLevelVariableElement elementA =
+ AstFinder.getTopLevelVariableElement(unit, 'a');
+ TopLevelVariableElement elementB =
+ AstFinder.getTopLevelVariableElement(unit, 'b');
+ TopLevelVariableElement elementC =
+ AstFinder.getTopLevelVariableElement(unit, 'c');
// compute
computeResult(elementA, PROPAGATED_VARIABLE,
matcher: isPropagateVariableTypeTask);
@@ -3290,7 +3319,7 @@ class ResolveInstanceFieldsInUnitTaskTest extends _AbstractDartTaskTest {
// B.b2 shoud be resolved on the rhs, but not yet inferred.
assertVariableDeclarationTypes(
- getFieldInClass(unit1, "B", "b2"), dynamicType, intType);
+ AstFinder.getFieldInClass(unit1, "B", "b2"), dynamicType, intType);
computeResult(
new LibrarySpecificUnit(sources[0], sources[0]), RESOLVED_UNIT8);
@@ -3298,21 +3327,21 @@ class ResolveInstanceFieldsInUnitTaskTest extends _AbstractDartTaskTest {
// B.b2 should now be fully resolved and inferred.
assertVariableDeclarationTypes(
- getFieldInClass(unit1, "B", "b2"), intType, intType);
+ AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType);
// A.a2 should now be resolved on the rhs, but not yet inferred.
assertVariableDeclarationTypes(
- getFieldInClass(unit0, "A", "a2"), dynamicType, intType);
+ AstFinder.getFieldInClass(unit0, "A", "a2"), dynamicType, intType);
computeResult(
new LibrarySpecificUnit(sources[2], sources[2]), RESOLVED_UNIT8);
// A.a2 should now be fully resolved and inferred.
assertVariableDeclarationTypes(
- getFieldInClass(unit0, "A", "a2"), intType, intType);
+ AstFinder.getFieldInClass(unit0, "A", "a2"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit1, "B", "b2"), intType, intType);
+ AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType);
}
// Test inference of instance fields across units
@@ -3347,14 +3376,14 @@ class ResolveInstanceFieldsInUnitTaskTest extends _AbstractDartTaskTest {
// A.a2 should now be resolved on the rhs, but not yet inferred.
assertVariableDeclarationTypes(
- getFieldInClass(unit0, "A", "a2"), dynamicType, dynamicType);
+ AstFinder.getFieldInClass(unit0, "A", "a2"), dynamicType, dynamicType);
computeResult(
new LibrarySpecificUnit(sources[2], sources[2]), RESOLVED_UNIT8);
// A.a2 should now be fully resolved and inferred.
assertVariableDeclarationTypes(
- getFieldInClass(unit0, "A", "a2"), dynamicType, dynamicType);
+ AstFinder.getFieldInClass(unit0, "A", "a2"), dynamicType, dynamicType);
}
// Test inference of instance fields across units with cycles
@@ -3392,36 +3421,36 @@ class ResolveInstanceFieldsInUnitTaskTest extends _AbstractDartTaskTest {
CompilationUnit unit1 = outputs[RESOLVED_UNIT8];
assertVariableDeclarationTypes(
- getFieldInClass(unit1, "B", "b1"), intType, intType);
+ AstFinder.getFieldInClass(unit1, "B", "b1"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit1, "B", "b2"), dynamicType, intType);
+ AstFinder.getFieldInClass(unit1, "B", "b2"), dynamicType, intType);
computeResult(
new LibrarySpecificUnit(sources[0], sources[0]), RESOLVED_UNIT8);
CompilationUnit unit0 = outputs[RESOLVED_UNIT8];
assertVariableDeclarationTypes(
- getFieldInClass(unit0, "A", "a1"), intType, intType);
+ AstFinder.getFieldInClass(unit0, "A", "a1"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit0, "A", "a2"), dynamicType, intType);
+ AstFinder.getFieldInClass(unit0, "A", "a2"), dynamicType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit1, "B", "b1"), intType, intType);
+ AstFinder.getFieldInClass(unit1, "B", "b1"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit1, "B", "b2"), intType, intType);
+ AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType);
computeResult(
new LibrarySpecificUnit(sources[2], sources[2]), RESOLVED_UNIT8);
assertVariableDeclarationTypes(
- getFieldInClass(unit0, "A", "a1"), intType, intType);
+ AstFinder.getFieldInClass(unit0, "A", "a1"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit0, "A", "a2"), intType, intType);
+ AstFinder.getFieldInClass(unit0, "A", "a2"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit1, "B", "b1"), intType, intType);
+ AstFinder.getFieldInClass(unit1, "B", "b1"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit1, "B", "b2"), intType, intType);
+ AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType);
}
// Test inference between static and instance fields
@@ -3455,22 +3484,22 @@ class ResolveInstanceFieldsInUnitTaskTest extends _AbstractDartTaskTest {
// A.a2 should now be resolved on the rhs, but not yet inferred.
assertVariableDeclarationTypes(
- getFieldInClass(unit0, "A", "a2"), dynamicType, dynamicType);
+ AstFinder.getFieldInClass(unit0, "A", "a2"), dynamicType, dynamicType);
// B.b2 shoud be resolved on the rhs, but not yet inferred.
assertVariableDeclarationTypes(
- getFieldInClass(unit0, "B", "b2"), dynamicType, intType);
+ AstFinder.getFieldInClass(unit0, "B", "b2"), dynamicType, intType);
computeResult(
new LibrarySpecificUnit(sources[1], sources[1]), RESOLVED_UNIT8);
// A.a2 should now be fully resolved and inferred.
assertVariableDeclarationTypes(
- getFieldInClass(unit0, "A", "a2"), dynamicType, dynamicType);
+ AstFinder.getFieldInClass(unit0, "A", "a2"), dynamicType, dynamicType);
// B.b2 should now be fully resolved and inferred.
assertVariableDeclarationTypes(
- getFieldInClass(unit0, "B", "b2"), intType, intType);
+ AstFinder.getFieldInClass(unit0, "B", "b2"), intType, intType);
}
}
@@ -3837,11 +3866,14 @@ var tau = piFirst ? pi * 2 : 6.28;
computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT10);
CompilationUnit unit = outputs[RESOLVED_UNIT10];
VariableElement piFirst =
- getTopLevelVariable(unit, 'piFirst').name.staticElement;
- VariableElement pi = getTopLevelVariable(unit, 'pi').name.staticElement;
- VariableElement tau = getTopLevelVariable(unit, 'tau').name.staticElement;
- Expression piFirstUse = (getTopLevelVariable(unit, 'tau').initializer
- as ConditionalExpression).condition;
+ AstFinder.getTopLevelVariable(unit, 'piFirst').name.staticElement;
+ VariableElement pi =
+ AstFinder.getTopLevelVariable(unit, 'pi').name.staticElement;
+ VariableElement tau =
+ AstFinder.getTopLevelVariable(unit, 'tau').name.staticElement;
+ Expression piFirstUse = (AstFinder
+ .getTopLevelVariable(unit, 'tau')
+ .initializer as ConditionalExpression).condition;
expect(piFirstUse.staticType, context.typeProvider.boolType);
expect(piFirst.type, context.typeProvider.boolType);
@@ -3882,17 +3914,17 @@ var tau = piFirst ? pi * 2 : 6.28;
InterfaceType intType = context.typeProvider.intType;
assertVariableDeclarationTypes(
- getTopLevelVariable(unit1, "x"), intType, intType);
+ AstFinder.getTopLevelVariable(unit1, "x"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit1, "A", "x"), intType, intType);
+ AstFinder.getFieldInClass(unit1, "A", "x"), intType, intType);
assertVariableDeclarationTypes(
- getTopLevelVariable(unit2, "y"), intType, intType);
+ AstFinder.getTopLevelVariable(unit2, "y"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit2, "B", "y"), intType, intType);
+ AstFinder.getFieldInClass(unit2, "B", "y"), intType, intType);
List<Statement> statements =
- getStatementsInTopLevelFunction(unit2, "test1");
+ AstFinder.getStatementsInTopLevelFunction(unit2, "test1");
assertAssignmentStatementTypes(statements[1], intType, intType);
assertAssignmentStatementTypes(statements[2], intType, intType);
@@ -3932,13 +3964,13 @@ var tau = piFirst ? pi * 2 : 6.28;
InterfaceType intType = context.typeProvider.intType;
assertVariableDeclarationTypes(
- getFieldInClass(unit0, "A", "a2"), intType, intType);
+ AstFinder.getFieldInClass(unit0, "A", "a2"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit1, "B", "b2"), intType, intType);
+ AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType);
List<Statement> statements =
- getStatementsInTopLevelFunction(unit2, "test1");
+ AstFinder.getStatementsInTopLevelFunction(unit2, "test1");
assertAssignmentStatementTypes(statements[1], intType, intType);
}
@@ -3979,9 +4011,13 @@ var tau = piFirst ? pi * 2 : 6.28;
InterfaceType stringType = context.typeProvider.stringType;
assertVariableDeclarationStatementTypes(
- getStatementsInTopLevelFunction(unit0, "foo")[0], stringType, intType);
+ AstFinder.getStatementsInTopLevelFunction(unit0, "foo")[0],
+ stringType,
+ intType);
assertVariableDeclarationStatementTypes(
- getStatementsInTopLevelFunction(unit2, "foo")[0], stringType, intType);
+ AstFinder.getStatementsInTopLevelFunction(unit2, "foo")[0],
+ stringType,
+ intType);
}
// Test inference interactions between local variables and top level
@@ -4018,17 +4054,17 @@ var tau = piFirst ? pi * 2 : 6.28;
InterfaceType stringType = context.typeProvider.stringType;
assertVariableDeclarationTypes(
- getTopLevelVariable(unit1, "x"), intType, intType);
+ AstFinder.getTopLevelVariable(unit1, "x"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit1, "A", "x"), intType, intType);
+ AstFinder.getFieldInClass(unit1, "A", "x"), intType, intType);
assertVariableDeclarationTypes(
- getTopLevelVariable(unit2, "y"), intType, intType);
+ AstFinder.getTopLevelVariable(unit2, "y"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit2, "B", "y"), intType, intType);
+ AstFinder.getFieldInClass(unit2, "B", "y"), intType, intType);
List<Statement> statements =
- getStatementsInTopLevelFunction(unit2, "test1");
+ AstFinder.getStatementsInTopLevelFunction(unit2, "test1");
assertAssignmentStatementTypes(statements[0], intType, stringType);
assertAssignmentStatementTypes(statements[1], intType, stringType);
@@ -4070,17 +4106,17 @@ var tau = piFirst ? pi * 2 : 6.28;
InterfaceType intType = context.typeProvider.intType;
assertVariableDeclarationTypes(
- getFieldInClass(unit0, "A", "a1"), intType, intType);
+ AstFinder.getFieldInClass(unit0, "A", "a1"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit0, "A", "a2"), intType, intType);
+ AstFinder.getFieldInClass(unit0, "A", "a2"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit1, "B", "b1"), intType, intType);
+ AstFinder.getFieldInClass(unit1, "B", "b1"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit1, "B", "b2"), intType, intType);
+ AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType);
List<Statement> statements =
- getStatementsInTopLevelFunction(unit2, "test1");
+ AstFinder.getStatementsInTopLevelFunction(unit2, "test1");
assertAssignmentStatementTypes(statements[1], intType, intType);
assertAssignmentStatementTypes(statements[2], intType, intType);
@@ -4104,7 +4140,8 @@ var tau = piFirst ? pi * 2 : 6.28;
InterfaceType intType = context.typeProvider.intType;
InterfaceType stringType = context.typeProvider.stringType;
- List<Statement> statements = getStatementsInTopLevelFunction(unit, "test");
+ List<Statement> statements =
+ AstFinder.getStatementsInTopLevelFunction(unit, "test");
assertVariableDeclarationStatementTypes(statements[0], intType, intType);
assertAssignmentStatementTypes(statements[1], intType, stringType);
@@ -4142,7 +4179,8 @@ var tau = piFirst ? pi * 2 : 6.28;
InterfaceType intType = context.typeProvider.intType;
InterfaceType stringType = context.typeProvider.stringType;
- List<Statement> statements = getStatementsInMethod(unit, "A", "test1");
+ List<Statement> statements =
+ AstFinder.getStatementsInMethod(unit, "A", "test1");
assertVariableDeclarationStatementTypes(statements[0], intType, intType);
assertAssignmentStatementTypes(statements[1], intType, stringType);
@@ -4157,9 +4195,9 @@ var tau = piFirst ? pi * 2 : 6.28;
assertAssignmentStatementTypes(statements[8], intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit, "A", "x"), intType, intType);
+ AstFinder.getFieldInClass(unit, "A", "x"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit, "A", "z"), intType, intType);
+ AstFinder.getFieldInClass(unit, "A", "z"), intType, intType);
}
// Test inference of instance fields across units
@@ -4190,7 +4228,8 @@ var tau = piFirst ? pi * 2 : 6.28;
InterfaceType intType = context.typeProvider.intType;
InterfaceType stringType = context.typeProvider.stringType;
- List<Statement> statements = getStatementsInTopLevelFunction(unit, "test1");
+ List<Statement> statements =
+ AstFinder.getStatementsInTopLevelFunction(unit, "test1");
assertVariableDeclarationStatementTypes(statements[0], intType, intType);
assertAssignmentStatementTypes(statements[1], intType, stringType);
@@ -4205,11 +4244,11 @@ var tau = piFirst ? pi * 2 : 6.28;
assertAssignmentStatementTypes(statements[8], intType, intType);
assertVariableDeclarationTypes(
- getTopLevelVariable(unit, "x"), intType, intType);
+ AstFinder.getTopLevelVariable(unit, "x"), intType, intType);
assertVariableDeclarationTypes(
- getTopLevelVariable(unit, "y"), intType, intType);
+ AstFinder.getTopLevelVariable(unit, "y"), intType, intType);
assertVariableDeclarationTypes(
- getTopLevelVariable(unit, "z"), intType, intType);
+ AstFinder.getTopLevelVariable(unit, "z"), intType, intType);
}
// Test inference between static and instance fields
@@ -4245,19 +4284,20 @@ var tau = piFirst ? pi * 2 : 6.28;
DartType dynamicType = context.typeProvider.dynamicType;
assertVariableDeclarationTypes(
- getTopLevelVariable(unit, "x"), dynamicType, bottomType);
+ AstFinder.getTopLevelVariable(unit, "x"), dynamicType, bottomType);
assertVariableDeclarationTypes(
- getTopLevelVariable(unit, "y"), intType, intType);
+ AstFinder.getTopLevelVariable(unit, "y"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit, "A", "x"), dynamicType, bottomType);
+ AstFinder.getFieldInClass(unit, "A", "x"), dynamicType, bottomType);
assertVariableDeclarationTypes(
- getFieldInClass(unit, "A", "y"), intType, intType);
+ AstFinder.getFieldInClass(unit, "A", "y"), intType, intType);
assertVariableDeclarationTypes(
- getFieldInClass(unit, "A", "x2"), dynamicType, bottomType);
+ AstFinder.getFieldInClass(unit, "A", "x2"), dynamicType, bottomType);
assertVariableDeclarationTypes(
- getFieldInClass(unit, "A", "y2"), intType, intType);
+ AstFinder.getFieldInClass(unit, "A", "y2"), intType, intType);
- List<Statement> statements = getStatementsInTopLevelFunction(unit, "test");
+ List<Statement> statements =
+ AstFinder.getStatementsInTopLevelFunction(unit, "test");
assertAssignmentStatementTypes(statements[0], dynamicType, stringType);
assertAssignmentStatementTypes(statements[1], intType, stringType);
@@ -4283,7 +4323,8 @@ var tau = piFirst ? pi * 2 : 6.28;
InterfaceType intType = context.typeProvider.intType;
InterfaceType stringType = context.typeProvider.stringType;
- List<Statement> statements = getStatementsInTopLevelFunction(unit, "test");
+ List<Statement> statements =
+ AstFinder.getStatementsInTopLevelFunction(unit, "test");
VariableDeclaration decl =
(statements[0] as VariableDeclarationStatement).variables.variables[0];
expect(decl.element.type, intType);
@@ -4321,7 +4362,8 @@ void main() {
_fillErrorListener(STRONG_MODE_ERRORS);
expect(errorListener.errors, isEmpty);
- List<Statement> statements = getStatementsInTopLevelFunction(unit, "main");
+ List<Statement> statements =
+ AstFinder.getStatementsInTopLevelFunction(unit, "main");
ExpressionStatement statement = statements[1];
IndexExpression idx = statement.expression;
expect(DynamicInvoke.get(idx.target), isNotNull);
@@ -4514,131 +4556,6 @@ class _AbstractDartTaskTest extends AbstractContextTest {
context.analysisOptions = options;
}
- /**
- * Return the declaration of the class with the given [className] in the given
- * compilation [unit].
- */
- ClassDeclaration getClass(CompilationUnit unit, String className) {
- NodeList<CompilationUnitMember> unitMembers = unit.declarations;
- for (CompilationUnitMember unitMember in unitMembers) {
- if (unitMember is ClassDeclaration && unitMember.name.name == className) {
- return unitMember;
- }
- }
- fail('No class named $className in ${unit.element.source}');
- return null;
- }
-
- /**
- * Return the declaration of the field with the given [fieldName] in the class
- * with the given [className] in the given compilation [unit].
- */
- VariableDeclaration getFieldInClass(
- CompilationUnit unit, String className, String fieldName) {
- ClassDeclaration unitMember = getClass(unit, className);
- NodeList<ClassMember> classMembers = unitMember.members;
- for (ClassMember classMember in classMembers) {
- if (classMember is FieldDeclaration) {
- NodeList<VariableDeclaration> fields = classMember.fields.variables;
- for (VariableDeclaration field in fields) {
- if (field.name.name == fieldName) {
- return field;
- }
- }
- }
- }
- fail('No field named $fieldName in $className');
- return null;
- }
-
- /**
- * Return the element of the field with the given [fieldName] in the class
- * with the given [className] in the given compilation [unit].
- */
- FieldElement getFieldInClassElement(
- CompilationUnit unit, String className, String fieldName) {
- return getFieldInClass(unit, className, fieldName)?.name?.staticElement;
- }
-
- /**
- * Return the declaration of the method with the given [methodName] in the
- * class with the given [className] in the given compilation [unit].
- */
- MethodDeclaration getMethodInClass(
- CompilationUnit unit, String className, String methodName) {
- ClassDeclaration unitMember = getClass(unit, className);
- NodeList<ClassMember> classMembers = unitMember.members;
- for (ClassMember classMember in classMembers) {
- if (classMember is MethodDeclaration) {
- if (classMember.name.name == methodName) {
- return classMember;
- }
- }
- }
- fail('No method named $methodName in $className');
- return null;
- }
-
- List<Statement> getStatementsInMethod(
- CompilationUnit unit, String className, String methodName) {
- MethodDeclaration method = getMethodInClass(unit, className, methodName);
- BlockFunctionBody body = method.body;
- return body.block.statements;
- }
-
- List<Statement> getStatementsInTopLevelFunction(
- CompilationUnit unit, String functionName) {
- FunctionDeclaration function = getTopLevelFunction(unit, functionName);
- BlockFunctionBody body = function.functionExpression.body;
- return body.block.statements;
- }
-
- /**
- * Return the declaration of the top-level function with the given
- * [functionName] in the given compilation [unit].
- */
- FunctionDeclaration getTopLevelFunction(
- CompilationUnit unit, String functionName) {
- NodeList<CompilationUnitMember> unitMembers = unit.declarations;
- for (CompilationUnitMember unitMember in unitMembers) {
- if (unitMember is FunctionDeclaration) {
- if (unitMember.name.name == functionName) {
- return unitMember;
- }
- }
- }
- return null;
- }
-
- /**
- * Return the declaration of the top-level variable with the given
- * [variableName] in the given compilation [unit].
- */
- VariableDeclaration getTopLevelVariable(
- CompilationUnit unit, String variableName) {
- NodeList<CompilationUnitMember> unitMembers = unit.declarations;
- for (CompilationUnitMember unitMember in unitMembers) {
- if (unitMember is TopLevelVariableDeclaration) {
- NodeList<VariableDeclaration> variables =
- unitMember.variables.variables;
- for (VariableDeclaration variable in variables) {
- if (variable.name.name == variableName) {
- return variable;
- }
- }
- }
- }
- return null;
- }
-
- /**
- * Return the top-level variable element with the given [name].
- */
- TopLevelVariableElement getTopLevelVariableElement(
- CompilationUnit unit, String name) {
- return getTopLevelVariable(unit, name)?.name?.staticElement;
- }
-
void setUp() {
super.setUp();
emptySource = newSource('/test.dart');

Powered by Google App Engine
This is Rietveld 408576698