Index: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/internal/corext/dom/LinkedNodeFinder.java |
diff --git a/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/internal/corext/dom/LinkedNodeFinder.java b/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/internal/corext/dom/LinkedNodeFinder.java |
index 8f989d11497cb64766d15a541abe89521a796947..e66442b5a49d1f4fa01ff47b27c08355cd86c469 100644 |
--- a/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/internal/corext/dom/LinkedNodeFinder.java |
+++ b/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/internal/corext/dom/LinkedNodeFinder.java |
@@ -1,11 +1,12 @@ |
package com.google.dart.tools.internal.corext.dom; |
+import com.google.common.collect.Lists; |
import com.google.dart.compiler.ast.ASTVisitor; |
import com.google.dart.compiler.ast.DartIdentifier; |
import com.google.dart.compiler.ast.DartNode; |
import com.google.dart.compiler.resolver.Element; |
-import java.util.ArrayList; |
+import java.util.List; |
/** |
* Find all nodes connected to a given binding or node. e.g. Declaration of a field and all |
@@ -35,21 +36,15 @@ public class LinkedNodeFinder { |
private final Element fBinding; |
- private final ArrayList<DartIdentifier> fResult; |
+ private final List<DartIdentifier> fResult = Lists.newArrayList(); |
- public BindingFinder(Element binding, ArrayList<DartIdentifier> result) { |
+ public BindingFinder(Element binding) { |
fBinding = getDeclaration(binding); |
- fResult = result; |
} |
@Override |
public Void visitIdentifier(DartIdentifier node) { |
Element binding = node.getElement(); |
- // TODO(scheglov) DartC should set Element for DartIdentifier, |
- // so we would not need to ask parent |
- if (binding == null) { |
- binding = node.getParent().getElement(); |
- } |
if (binding == null) { |
return null; |
} |
@@ -138,9 +133,9 @@ public class LinkedNodeFinder { |
* @return Return |
*/ |
public static DartIdentifier[] findByBinding(DartNode root, Element binding) { |
- ArrayList<DartIdentifier> res = new ArrayList<DartIdentifier>(); |
- BindingFinder nodeFinder = new BindingFinder(binding, res); |
+ BindingFinder nodeFinder = new BindingFinder(binding); |
root.accept(nodeFinder); |
+ List<DartIdentifier> res = nodeFinder.fResult; |
return res.toArray(new DartIdentifier[res.size()]); |
} |
@@ -154,9 +149,7 @@ public class LinkedNodeFinder { |
* @return Return |
*/ |
public static DartIdentifier[] findByNode(DartNode root, DartIdentifier name) { |
- // TODO(scheglov) DartC should set Element for DartIdentifier, |
- // so we would not need to ask parent |
- Element binding = name.getParent().getElement(); |
+ Element binding = name.getElement(); |
if (binding != null) { |
return findByBinding(root, binding); |
} |