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

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

Issue 1702713003: Don't set DynamicElementImpl as staticElement for unresolved types. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Document _setElement. 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 acd47892a444250536510fdda020a12d1f7eb134..3c264675f4263003513033006c72ebd3d18f8636 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -11567,7 +11567,7 @@ class TypeResolverVisitor extends ScopedVisitor {
if (element is MultiplyDefinedElement) {
_setElement(typeName, element);
} else {
- _setElement(typeName, _dynamicType.element);
+ _setElement(typeName, null);
}
typeName.staticType = _undefinedType;
node.type = _undefinedType;
@@ -11632,7 +11632,7 @@ class TypeResolverVisitor extends ScopedVisitor {
StaticWarningCode.NOT_A_TYPE, typeName, [typeName.name]);
}
}
- _setElement(typeName, _dynamicType.element);
+ _setElement(typeName, null);
typeName.staticType = _dynamicType;
node.type = _dynamicType;
return null;
@@ -12134,18 +12134,25 @@ class TypeResolverVisitor extends ScopedVisitor {
return types;
}
+ /**
+ * 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.
+ */
void _setElement(Identifier typeName, Element element) {
- if (element != null) {
- if (typeName is SimpleIdentifier) {
+ if (typeName is SimpleIdentifier) {
+ if (element != null) {
typeName.staticElement = element;
- } else if (typeName is PrefixedIdentifier) {
- PrefixedIdentifier identifier = typeName;
- identifier.identifier.staticElement = element;
- SimpleIdentifier prefix = identifier.prefix;
- Element prefixElement = nameScope.lookup(prefix, definingLibrary);
- if (prefixElement != null) {
- prefix.staticElement = prefixElement;
- }
+ }
+ } else if (typeName is PrefixedIdentifier) {
+ if (element != null) {
+ typeName.identifier.staticElement = element;
+ }
+ SimpleIdentifier prefix = typeName.prefix;
+ Element prefixElement = nameScope.lookup(prefix, definingLibrary);
+ if (prefixElement != null) {
+ prefix.staticElement = prefixElement;
}
}
}
« 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