Index: pkg/analyzer/lib/src/generated/resolver.dart |
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart |
index 8567a02420faa500286742aa057e985c4e98341e..491d3911fbc0f7e018a289b79cb339835d9db822 100644 |
--- a/pkg/analyzer/lib/src/generated/resolver.dart |
+++ b/pkg/analyzer/lib/src/generated/resolver.dart |
@@ -11633,6 +11633,7 @@ class TypeResolverVisitor extends ScopedVisitor { |
Object visitTypeName(TypeName node) { |
super.visitTypeName(node); |
Identifier typeName = node.name; |
+ _setElement(typeName, null); // Clear old Elements from previous run. |
TypeArgumentList argumentList = node.typeArguments; |
Element element = nameScope.lookup(typeName, definingLibrary); |
if (element == null) { |
@@ -11781,8 +11782,6 @@ class TypeResolverVisitor extends ScopedVisitor { |
if (!elementValid) { |
if (element is MultiplyDefinedElement) { |
_setElement(typeName, element); |
- } else { |
- _setElement(typeName, null); |
} |
typeName.staticType = _undefinedType; |
node.type = _undefinedType; |
@@ -11847,7 +11846,6 @@ class TypeResolverVisitor extends ScopedVisitor { |
StaticWarningCode.NOT_A_TYPE, typeName, [typeName.name]); |
} |
} |
- _setElement(typeName, null); |
typeName.staticType = _dynamicType; |
node.type = _dynamicType; |
return null; |
@@ -12348,25 +12346,19 @@ class TypeResolverVisitor extends ScopedVisitor { |
} |
/** |
- * If the given [element] is not `null`, set `staticElement` of the |
- * [typeName] to it. If the [typeName] is a prefixed identifier, and the |
- * prefix can be resolved to a not `null` element, set also the |
- * `staticElement` of the prefix. |
+ * Records the new Element for a TypeName's Identifier. |
+ * |
+ * A null may be passed in to indicate that the element can't be resolved. |
+ * (During a re-run of a task, it's important to clear any previous value |
+ * of the element.) |
*/ |
void _setElement(Identifier typeName, Element element) { |
if (typeName is SimpleIdentifier) { |
- if (element != null) { |
- typeName.staticElement = element; |
- } |
+ typeName.staticElement = element; |
} else if (typeName is PrefixedIdentifier) { |
- if (element != null) { |
- typeName.identifier.staticElement = element; |
- } |
+ typeName.identifier.staticElement = element; |
SimpleIdentifier prefix = typeName.prefix; |
- Element prefixElement = nameScope.lookup(prefix, definingLibrary); |
- if (prefixElement != null) { |
- prefix.staticElement = prefixElement; |
- } |
+ prefix.staticElement = nameScope.lookup(prefix, definingLibrary); |
} |
} |