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

Unified Diff: pkg/analyzer/test/dart/element/builder_test.dart

Issue 2971893002: Remove other usages of ExecutableElement.localVariables. (Closed)
Patch Set: Created 3 years, 5 months 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
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/resolver_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/dart/element/builder_test.dart
diff --git a/pkg/analyzer/test/dart/element/builder_test.dart b/pkg/analyzer/test/dart/element/builder_test.dart
index 0e7a9033c4b76e6c337178bfdf644ff043281f22..4104d784946838a2089e23ddcb8e26f4e0b846e7 100644
--- a/pkg/analyzer/test/dart/element/builder_test.dart
+++ b/pkg/analyzer/test/dart/element/builder_test.dart
@@ -79,7 +79,6 @@ class C {
expect(method.parameters[1].displayName, 'b');
expect(method.parameters[1].initializer, isNull);
}
- expect(method.localVariables, isEmpty);
expect(method.functions, isEmpty);
}
@@ -90,7 +89,6 @@ void topLevelFunction() {
localFunction() {}
}
''').functions[0];
- expect(function.localVariables, isEmpty);
expect(function.functions, isEmpty);
}
@@ -100,7 +98,6 @@ topLevelFunction() => () {
int localVar = 0;
};
''').functions[0];
- expect(function.localVariables, isEmpty);
expect(function.functions, isEmpty);
}
@@ -190,63 +187,53 @@ class C {
}
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));
+ var code = 'f() { @a int x, y; }';
+ buildElementsForText(code);
+ var x = findLocalVariable(code, 'x, ');
+ var y = findLocalVariable(code, 'x, ');
+ checkMetadata(x);
+ checkMetadata(y);
+ expect(x.metadata, same(y.metadata));
}
void test_metadata_visitDeclaredIdentifier() {
- LocalVariableElement localVariableElement =
- buildElementsForText('f() { for (@a var x in y) {} }')
- .functions[0]
- .localVariables[0];
- checkMetadata(localVariableElement);
+ var code = 'f() { for (@a var x in y) {} }';
+ buildElementsForText(code);
+ var x = findLocalVariable(code, 'x in');
+ checkMetadata(x);
}
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);
+ var code = 'f() { try {} catch (e, s) {} }';
+ buildElementsForText(code);
+ var e = findLocalVariable(code, 'e, ');
+ var s = findLocalVariable(code, 's) {}');
+
+ expect(e, isNotNull);
+ expect(e.name, 'e');
+ expect(e.hasImplicitType, isTrue);
+ expect(e.isSynthetic, isFalse);
+ expect(e.isConst, isFalse);
+ expect(e.isFinal, isFalse);
+ expect(e.initializer, isNull);
+ _assertVisibleRange(e, 13, 28);
+
+ expect(s, isNotNull);
+ expect(s.name, 's');
+ expect(s.isSynthetic, isFalse);
+ expect(s.isConst, isFalse);
+ expect(s.isFinal, isFalse);
+ expect(s.initializer, isNull);
+ _assertVisibleRange(s, 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);
+ var code = 'f() { try {} on E catch (e) {} }';
+ buildElementsForText(code);
+ var e = findLocalVariable(code, 'e) {}');
+ expect(e, isNotNull);
+ expect(e.name, 'e');
+ expect(e.hasImplicitType, isFalse);
}
void test_visitCompilationUnit_codeRange() {
@@ -269,10 +256,9 @@ class C {
}
void test_visitDeclaredIdentifier_noType() {
- LocalVariableElement variable =
- buildElementsForText('f() { for (var i in []) {} }')
- .functions[0]
- .localVariables[0];
+ var code = 'f() { for (var i in []) {} }';
+ buildElementsForText(code);
+ var variable = findLocalVariable(code, 'i in');
assertHasCodeRange(variable, 11, 5);
expect(variable, isNotNull);
expect(variable.hasImplicitType, isTrue);
@@ -287,10 +273,9 @@ class C {
}
void test_visitDeclaredIdentifier_type() {
- LocalVariableElement variable =
- buildElementsForText('f() { for (int i in []) {} }')
- .functions[0]
- .localVariables[0];
+ var code = 'f() { for (int i in []) {} }';
+ buildElementsForText(code);
+ var variable = findLocalVariable(code, 'i in');
assertHasCodeRange(variable, 11, 5);
expect(variable.hasImplicitType, isFalse);
expect(variable.isConst, isFalse);
@@ -506,15 +491,11 @@ class C {
}
void test_visitMethodDeclaration_withMembers() {
- MethodElement method = buildElementsForText(
- 'class C { m(p) { var v; try { l: return; } catch (e) {} } }')
- .types[0]
- .methods[0];
+ var code = 'class C { m(p) { var v; try { l: return; } catch (e) {} } }';
+ MethodElement method = buildElementsForText(code).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);
@@ -528,18 +509,13 @@ class C {
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);
+
+ var v = findLocalVariable(code, 'v;');
+ expect(v.name, 'v');
+
+ var e = findLocalVariable(code, 'e) {}');
+ expect(e.name, 'e');
+
List<LabelElement> labels = method.labels;
expect(labels, hasLength(1));
LabelElement label = labels[0];
@@ -734,19 +710,13 @@ class C {
}
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);
+ var code = 'class C { C() { var v = 1; } }';
+ buildElementsForText(code);
+ var v = findLocalVariable(code, 'v =');
+ assertHasCodeRange(v, 16, 10);
+ expect(v.hasImplicitType, isTrue);
+ expect(v.name, 'v');
+ _assertVisibleRange(v, 14, 28);
}
void test_visitVariableDeclaration_inForEachStatement() {
@@ -756,10 +726,10 @@ class C {
// m() { for (var v in []) }
//
String variableName = "v";
- Statement statement = AstTestFactory.forEachStatement(
- AstTestFactory.declaredIdentifier3('v'),
- AstTestFactory.listLiteral(),
- AstTestFactory.block());
+ DeclaredIdentifier variableIdentifier =
+ AstTestFactory.declaredIdentifier3('v');
+ Statement statement = AstTestFactory.forEachStatement(variableIdentifier,
+ AstTestFactory.listLiteral(), AstTestFactory.block());
_setNodeSourceRange(statement, 100, 110);
MethodDeclaration method = AstTestFactory.methodDeclaration2(
null,
@@ -774,9 +744,7 @@ class C {
List<MethodElement> methods = holder.methods;
expect(methods, hasLength(1));
- List<LocalVariableElement> variableElements = methods[0].localVariables;
- expect(variableElements, hasLength(1));
- LocalVariableElement variableElement = variableElements[0];
+ LocalVariableElement variableElement = variableIdentifier.element;
expect(variableElement.name, variableName);
_assertVisibleRange(variableElement, 100, 110);
}
@@ -788,11 +756,11 @@ class C {
// m() { for (T v;;) }
//
String variableName = "v";
+ VariableDeclaration variableIdentifier =
+ AstTestFactory.variableDeclaration('v');
ForStatement statement = AstTestFactory.forStatement2(
AstTestFactory.variableDeclarationList(
- null,
- AstTestFactory.typeName4('T'),
- [AstTestFactory.variableDeclaration('v')]),
+ null, AstTestFactory.typeName4('T'), [variableIdentifier]),
null,
null,
AstTestFactory.block());
@@ -810,9 +778,7 @@ class C {
List<MethodElement> methods = holder.methods;
expect(methods, hasLength(1));
- List<LocalVariableElement> variableElements = methods[0].localVariables;
- expect(variableElements, hasLength(1));
- LocalVariableElement variableElement = variableElements[0];
+ LocalVariableElement variableElement = variableIdentifier.element;
expect(variableElement.name, variableName);
_assertVisibleRange(variableElement, 100, 110);
}
@@ -841,9 +807,7 @@ class C {
List<MethodElement> methods = holder.methods;
expect(methods, hasLength(1));
- List<LocalVariableElement> variableElements = methods[0].localVariables;
- expect(variableElements, hasLength(1));
- LocalVariableElement variableElement = variableElements[0];
+ LocalVariableElement variableElement = variable.element;
expect(variableElement.hasImplicitType, isFalse);
expect(variableElement.name, variableName);
_assertVisibleRange(variableElement, 100, 110);
@@ -879,10 +843,7 @@ class C {
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];
+ LocalVariableElement variableElement = variable.element;
expect(variableElement.hasImplicitType, isTrue);
expect(variableElement.isConst, isFalse);
expect(variableElement.isFinal, isFalse);
@@ -1031,7 +992,7 @@ class LocalElementBuilderTest extends _BaseTest {
}
void test_buildLocalElements() {
- CompilationUnit unit = parseCompilationUnit(r'''
+ var code = r'''
main() {
int v1;
f1() {
@@ -1041,34 +1002,42 @@ main() {
}
}
}
-''');
- var mainAst = unit.declarations.single as FunctionDeclaration;
+''';
+ _compilationUnit = parseCompilationUnit(code);
+ var mainAst = _compilationUnit.declarations.single as FunctionDeclaration;
+
// Build API elements.
FunctionElementImpl main;
{
ElementHolder holder = new ElementHolder();
- unit.accept(new ApiElementBuilder(holder, compilationUnitElement));
+ _compilationUnit
+ .accept(new ApiElementBuilder(holder, compilationUnitElement));
main = holder.functions.single as FunctionElementImpl;
}
- expect(main.localVariables, isEmpty);
expect(main.functions, isEmpty);
+
// Build local elements in body.
ElementHolder holder = new ElementHolder();
FunctionBody mainBody = mainAst.functionExpression.body;
mainBody.accept(new LocalElementBuilder(holder, compilationUnitElement));
main.functions = holder.functions;
main.localVariables = holder.localVariables;
- expect(main.localVariables.map((v) => v.name), ['v1']);
+
+ var v1 = findLocalVariable(code, 'v1;');
+ var v2 = findLocalVariable(code, 'v2;');
+ var v3 = findLocalVariable(code, 'v3;');
+
+ expect(v1.enclosingElement, main);
expect(main.functions, hasLength(1));
{
FunctionElement f1 = main.functions[0];
expect(f1.name, 'f1');
- expect(f1.localVariables.map((v) => v.name), ['v2']);
+ expect(v2.enclosingElement, f1);
expect(f1.functions, hasLength(1));
{
FunctionElement f2 = f1.functions[0];
expect(f2.name, 'f2');
- expect(f2.localVariables.map((v) => v.name), ['v3']);
+ expect(v3.enclosingElement, f2);
expect(f2.functions, isEmpty);
}
}
@@ -1146,7 +1115,6 @@ main() {
FunctionBody mainBody = mainAst.functionExpression.body;
mainBody.accept(new LocalElementBuilder(holder, compilationUnitElement));
main.functions = holder.functions;
- main.localVariables = holder.localVariables;
expect(main.functions, hasLength(1));
FunctionElement f = main.functions[0];
expect(f.parameters, hasLength(1));
@@ -1191,14 +1159,13 @@ main() {
}
void test_visitVariableDeclaration_local() {
- var holder = buildElementsForText('class C { m() { T v = null; } }');
- List<LocalVariableElement> variableElements = holder.localVariables;
- expect(variableElements, hasLength(1));
- LocalVariableElement variableElement = variableElements[0];
- expect(variableElement.hasImplicitType, isFalse);
- expect(variableElement.name, 'v');
- expect(variableElement.initializer, isNotNull);
- _assertVisibleRange(variableElement, 14, 29);
+ var code = 'class C { m() { T v = null; } }';
+ buildElementsForText(code);
+ LocalVariableElement element = findIdentifier(code, 'v =').staticElement;
+ expect(element.hasImplicitType, isFalse);
+ expect(element.name, 'v');
+ expect(element.initializer, isNotNull);
+ _assertVisibleRange(element, 14, 29);
}
}
@@ -1674,7 +1641,6 @@ class C {
expect(constructor.name, "");
expect(constructor.functions, hasLength(0));
expect(constructor.labels, hasLength(0));
- expect(constructor.localVariables, hasLength(0));
expect(constructor.parameters, hasLength(0));
}
@@ -1700,7 +1666,6 @@ class C {
expect(constructor.name, "");
expect(constructor.functions, hasLength(0));
expect(constructor.labels, hasLength(0));
- expect(constructor.localVariables, hasLength(0));
expect(constructor.parameters, hasLength(0));
}
@@ -1732,7 +1697,6 @@ class C {
expect(constructor.name, "");
expect(constructor.functions, hasLength(0));
expect(constructor.labels, hasLength(0));
- expect(constructor.localVariables, hasLength(0));
expect(constructor.parameters, hasLength(0));
}
@@ -1759,7 +1723,6 @@ class C {
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));
@@ -1787,7 +1750,6 @@ class C {
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));
}
@@ -2078,7 +2040,6 @@ class C {
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);
@@ -2147,7 +2108,6 @@ class A {
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);
@@ -2193,7 +2153,6 @@ class A {
expect(getter.variable, field);
expect(getter.functions, hasLength(0));
expect(getter.labels, hasLength(0));
- expect(getter.localVariables, hasLength(0));
expect(getter.parameters, hasLength(0));
}
@@ -2228,7 +2187,6 @@ class A {
expect(getter.variable, field);
expect(getter.functions, hasLength(0));
expect(getter.labels, hasLength(0));
- expect(getter.localVariables, hasLength(0));
expect(getter.parameters, hasLength(0));
}
@@ -2264,7 +2222,6 @@ class A {
expect(getter.variable, field);
expect(getter.functions, hasLength(0));
expect(getter.labels, hasLength(0));
- expect(getter.localVariables, hasLength(0));
expect(getter.parameters, hasLength(0));
}
@@ -2295,7 +2252,6 @@ class A {
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);
@@ -2326,7 +2282,6 @@ class A {
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);
@@ -2374,7 +2329,6 @@ class A {
expect(setter.variable, field);
expect(setter.functions, hasLength(0));
expect(setter.labels, hasLength(0));
- expect(setter.localVariables, hasLength(0));
expect(setter.parameters, hasLength(0));
}
@@ -2410,7 +2364,6 @@ class A {
expect(setter.variable, field);
expect(setter.functions, hasLength(0));
expect(setter.labels, hasLength(0));
- expect(setter.localVariables, hasLength(0));
expect(setter.parameters, hasLength(0));
}
@@ -2447,7 +2400,6 @@ class A {
expect(setter.variable, field);
expect(setter.functions, hasLength(0));
expect(setter.labels, hasLength(0));
- expect(setter.localVariables, hasLength(0));
expect(setter.parameters, hasLength(0));
}
@@ -2471,7 +2423,6 @@ class A {
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);
@@ -2502,7 +2453,6 @@ class A {
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);
@@ -2662,6 +2612,14 @@ abstract class _BaseTest extends ParserTestCase {
AstVisitor createElementBuilder(ElementHolder holder);
+ SimpleIdentifier findIdentifier(String code, String prefix) {
+ return EngineTestCase.findSimpleIdentifier(compilationUnit, code, prefix);
+ }
+
+ LocalVariableElement findLocalVariable(String code, String prefix) {
+ return findIdentifier(code, prefix).staticElement;
+ }
+
void setUp() {
compilationUnitElement = new CompilationUnitElementImpl('test.dart');
}
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/resolver_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698