Chromium Code Reviews| Index: pkg/analysis_server/test/plugin/protocol_dart_test.dart |
| diff --git a/pkg/analysis_server/test/plugin/protocol_dart_test.dart b/pkg/analysis_server/test/plugin/protocol_dart_test.dart |
| index d0af6a24817514c92f5216a0eda6e0ad6e7d8cda..6f456409d2498eb1d2925080d44377cff0167669 100644 |
| --- a/pkg/analysis_server/test/plugin/protocol_dart_test.dart |
| +++ b/pkg/analysis_server/test/plugin/protocol_dart_test.dart |
| @@ -25,6 +25,16 @@ main() { |
| }); |
| } |
| +/** |
| + * Search the [unit] for the [engine.Element]s with the given [name]. |
| + */ |
| +List<engine.Element> findElementsByName( |
|
Brian Wilkerson
2017/07/06 18:19:18
Can we use the copy in pkg/analyzer/test/utils.dar
|
| + engine.CompilationUnit unit, String name) { |
| + var finder = new _ElementsByNameFinder(name); |
| + unit.accept(finder); |
| + return finder.elements; |
| +} |
| + |
| @reflectiveTest |
| class ElementKindTest { |
| void test_fromEngine() { |
| @@ -97,7 +107,9 @@ class ElementKindTest { |
| class ElementTest extends AbstractContextTest { |
| engine.Element findElementInUnit(engine.CompilationUnit unit, String name, |
| [engine.ElementKind kind]) { |
| - return findChildElement(unit.element, name, kind); |
| + return findElementsByName(unit, name) |
| + .where((e) => kind == null || e.kind == kind) |
| + .single; |
| } |
| test_fromElement_CLASS() async { |
| @@ -273,7 +285,8 @@ enum E2 { three, four }'''); |
| expect(element.flags, Element.FLAG_CONST | Element.FLAG_STATIC); |
| } |
| { |
| - engine.FieldElement engineElement = findElementInUnit(unit, 'index'); |
| + engine.FieldElement engineElement = |
| + unit.element.enums[1].getField('index'); |
| // create notification Element |
| Element element = convertElement(engineElement); |
| expect(element.kind, ElementKind.FIELD); |
| @@ -291,7 +304,8 @@ enum E2 { three, four }'''); |
| expect(element.flags, Element.FLAG_FINAL); |
| } |
| { |
| - engine.FieldElement engineElement = findElementInUnit(unit, 'values'); |
| + engine.FieldElement engineElement = |
| + unit.element.enums[1].getField('values'); |
| // create notification Element |
| Element element = convertElement(engineElement); |
| expect(element.kind, ElementKind.FIELD); |
| @@ -455,9 +469,8 @@ class A { |
| set mySetter(String x) {} |
| }'''); |
| engine.CompilationUnit unit = await resolveLibraryUnit(source); |
| - engine.FieldElement engineFieldElement = |
| - findElementInUnit(unit, 'mySetter', engine.ElementKind.FIELD); |
| - engine.PropertyAccessorElement engineElement = engineFieldElement.setter; |
| + engine.PropertyAccessorElement engineElement = |
| + findElementInUnit(unit, 'mySetter', engine.ElementKind.SETTER); |
| // create notification Element |
| Element element = convertElement(engineElement); |
| expect(element.kind, ElementKind.SETTER); |
| @@ -475,3 +488,17 @@ class A { |
| expect(element.flags, 0); |
| } |
| } |
| + |
| +class _ElementsByNameFinder extends engine.RecursiveAstVisitor<Null> { |
|
Brian Wilkerson
2017/07/06 18:19:18
Was this in an earlier CL? If so, perhaps create a
|
| + final String name; |
| + final List<engine.Element> elements = []; |
| + |
| + _ElementsByNameFinder(this.name); |
| + |
| + @override |
| + visitSimpleIdentifier(engine.SimpleIdentifier node) { |
| + if (node.name == name && node.inDeclarationContext()) { |
| + elements.add(node.staticElement); |
| + } |
| + } |
| +} |