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

Unified Diff: pkg/analyzer/lib/src/generated/element_resolver.dart

Issue 700943003: Fix issue 19424 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Clean up Created 6 years, 1 month 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/analyzer/lib/src/generated/element_resolver.dart
diff --git a/pkg/analyzer/lib/src/generated/element_resolver.dart b/pkg/analyzer/lib/src/generated/element_resolver.dart
index 04d36846e3dd210e126da5286f89f0cd8694eb2a..b387a98c12c67e195bd3944a77ad672f1c7d0931 100644
--- a/pkg/analyzer/lib/src/generated/element_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/element_resolver.dart
@@ -868,7 +868,9 @@ class ElementResolver extends SimpleAstVisitor<Object> {
if (prefixElement is PrefixElement) {
Element element = _resolver.nameScope.lookup(node, _definingLibrary);
if (element == null && identifier.inSetterContext()) {
- element = _resolver.nameScope.lookup(new ElementResolver_SyntheticIdentifier("${node.name}="), _definingLibrary);
+ element = _resolver.nameScope.lookup(new SyntheticIdentifier(
+ "${node.name}=", node),
+ _definingLibrary);
}
if (element == null) {
if (identifier.inSetterContext()) {
@@ -1329,7 +1331,9 @@ class ElementResolver extends SimpleAstVisitor<Object> {
for (ImportElement importElement in _definingLibrary.imports) {
PrefixElement prefixElement = importElement.prefix;
if (prefixElement != null) {
- Identifier prefixedIdentifier = new ElementResolver_SyntheticIdentifier("${prefixElement.name}.${identifier.name}");
+ Identifier prefixedIdentifier = new SyntheticIdentifier(
+ "${prefixElement.name}.${identifier.name}",
+ identifier);
Element importedElement = nameScope.lookup(prefixedIdentifier, _definingLibrary);
if (importedElement != null) {
if (element == null) {
@@ -2355,7 +2359,7 @@ class ElementResolver extends SimpleAstVisitor<Object> {
// imported top-level function or top-level getter that returns a function.
//
String name = "${target.name}.$methodName";
- Identifier functionName = new ElementResolver_SyntheticIdentifier(name);
+ Identifier functionName = new SyntheticIdentifier(name, methodName);
Element element = _resolver.nameScope.lookup(functionName, _definingLibrary);
if (element != null) {
// TODO(brianwilkerson) This isn't a method invocation, it's a function invocation where
@@ -2487,8 +2491,11 @@ class ElementResolver extends SimpleAstVisitor<Object> {
element = setter;
}
}
- } else if (element == null && (node.inSetterContext() || node.parent is CommentReference)) {
- element = _resolver.nameScope.lookup(new ElementResolver_SyntheticIdentifier("${node.name}="), _definingLibrary);
+ } else if (element == null
+ && (node.inSetterContext() || node.parent is CommentReference)) {
+ element = _resolver.nameScope.lookup(
+ new SyntheticIdentifier("${node.name}=", node),
+ _definingLibrary);
}
ClassElement enclosingClass = _resolver.enclosingClass;
if (element == null && enclosingClass != null) {
@@ -2591,23 +2598,28 @@ class ElementResolver extends SimpleAstVisitor<Object> {
}
/**
- * Instances of the class `SyntheticIdentifier` implement an identifier that can be used to
- * look up names in the lexical scope when there is no identifier in the AST structure. There is
- * no identifier in the AST when the parser could not distinguish between a method invocation and
- * an invocation of a top-level function imported with a prefix.
+ * A `SyntheticIdentifier` is an identifier that can be used to look up names in
+ * the lexical scope when there is no identifier in the AST structure. There is
+ * no identifier in the AST when the parser could not distinguish between a
+ * method invocation and an invocation of a top-level function imported with a
+ * prefix.
*/
-class ElementResolver_SyntheticIdentifier extends Identifier {
+class SyntheticIdentifier extends Identifier {
/**
* The name of the synthetic identifier.
*/
final String name;
/**
- * Initialize a newly created synthetic identifier to have the given name.
- *
- * @param name the name of the synthetic identifier
+ * The identifier to be highlighted in case of an error
*/
- ElementResolver_SyntheticIdentifier(this.name);
+ final Identifier identifier;
+
+ /**
+ * Initialize a newly created synthetic identifier to have the given [name]
+ * and [identifier].
+ */
+ SyntheticIdentifier(this.name, this.identifier);
@override
accept(AstVisitor visitor) => null;
@@ -2622,6 +2634,12 @@ class ElementResolver_SyntheticIdentifier extends Identifier {
sc.Token get endToken => null;
@override
+ int get length => identifier.length;
+
+ @override
+ int get offset => identifier.offset;
+
+ @override
int get precedence => 16;
@override
@@ -2634,4 +2652,3 @@ class ElementResolver_SyntheticIdentifier extends Identifier {
void visitChildren(AstVisitor visitor) {
}
}
-

Powered by Google App Engine
This is Rietveld 408576698