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

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

Issue 1745413002: Clear stale elements in an undefined TypeName (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: prereview cleanup Created 4 years, 10 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
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/resolver_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
}
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/resolver_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698