Index: editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java |
diff --git a/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java b/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java |
index 9fabc12d27045309f764646f5d6d82b49c079bd0..1edfcb9ea64eb3a92e04c8b9557241576ef52a98 100644 |
--- a/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java |
+++ b/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java |
@@ -195,12 +195,19 @@ public class ElementResolver extends SimpleAstVisitor<Void> { |
private final String name; |
/** |
+ * The identifier to be highlighted in case of an error |
+ */ |
+ private final Identifier identifier; |
Paul Berry
2014/11/04 23:07:41
Nit: although the comment makes it clear what this
Brian Wilkerson
2014/11/05 17:05:25
I renamed it.
|
+ |
+ /** |
* Initialize a newly created synthetic identifier to have the given name. |
* |
* @param name the name of the synthetic identifier |
+ * @param identifier the identifier to be highlighted in case of an error |
*/ |
- private SyntheticIdentifier(String name) { |
+ private SyntheticIdentifier(String name, Identifier identifier) { |
this.name = name; |
+ this.identifier = identifier; |
} |
@Override |
@@ -224,11 +231,21 @@ public class ElementResolver extends SimpleAstVisitor<Void> { |
} |
@Override |
+ public int getLength() { |
+ return identifier.getLength(); |
+ } |
+ |
+ @Override |
public String getName() { |
return name; |
} |
@Override |
+ public int getOffset() { |
+ return identifier.getOffset(); |
+ } |
+ |
+ @Override |
public int getPrecedence() { |
return 16; |
} |
@@ -1176,7 +1193,7 @@ public class ElementResolver extends SimpleAstVisitor<Void> { |
Element element = resolver.getNameScope().lookup(node, definingLibrary); |
if (element == null && identifier.inSetterContext()) { |
element = resolver.getNameScope().lookup( |
- new SyntheticIdentifier(node.getName() + "="), |
+ new SyntheticIdentifier(node.getName() + "=", node), |
definingLibrary); |
} |
if (element == null) { |
@@ -1710,7 +1727,7 @@ public class ElementResolver extends SimpleAstVisitor<Void> { |
PrefixElement prefixElement = importElement.getPrefix(); |
if (prefixElement != null) { |
Identifier prefixedIdentifier = new SyntheticIdentifier(prefixElement.getName() + "." |
- + identifier.getName()); |
+ + identifier.getName(), identifier); |
Element importedElement = nameScope.lookup(prefixedIdentifier, definingLibrary); |
if (importedElement != null) { |
if (element == null) { |
@@ -2820,14 +2837,15 @@ public class ElementResolver extends SimpleAstVisitor<Void> { |
} |
return element; |
} else if (target instanceof SimpleIdentifier) { |
- Element targetElement = ((SimpleIdentifier) target).getStaticElement(); |
+ SimpleIdentifier identifier = (SimpleIdentifier) target; |
+ Element targetElement = identifier.getStaticElement(); |
if (targetElement instanceof PrefixElement) { |
// |
// Look to see whether the name of the method is really part of a prefixed identifier for an |
// imported top-level function or top-level getter that returns a function. |
// |
- final String name = ((SimpleIdentifier) target).getName() + "." + methodName; |
- Identifier functionName = new SyntheticIdentifier(name); |
+ final String name = identifier.getName() + "." + methodName; |
+ Identifier functionName = new SyntheticIdentifier(name, methodName); |
Element element = resolver.getNameScope().lookup(functionName, definingLibrary); |
if (element != null) { |
// TODO(brianwilkerson) This isn't a method invocation, it's a function invocation where |
@@ -3001,7 +3019,7 @@ public class ElementResolver extends SimpleAstVisitor<Void> { |
} else if (element == null |
&& (node.inSetterContext() || node.getParent() instanceof CommentReference)) { |
element = resolver.getNameScope().lookup( |
- new SyntheticIdentifier(node.getName() + "="), |
+ new SyntheticIdentifier(node.getName() + "=", node), |
definingLibrary); |
} |
ClassElement enclosingClass = resolver.getEnclosingClass(); |