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

Unified Diff: pkg/analysis_server/test/plugin/protocol_dart_test.dart

Issue 2973093002: Stop depending on LabelElement(s) to be reported in visitChildren(). (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
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);
+ }
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698