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

Unified Diff: pkg/analyzer/test/generated/resolver_test.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 | « pkg/analyzer/lib/src/generated/resolver.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/generated/resolver_test.dart
diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart
index c32fb53e5b46d3f246b41c09bd1fd6ea08008e77..65f38089434643003d4da5279a393987dc843bbb 100644
--- a/pkg/analyzer/test/generated/resolver_test.dart
+++ b/pkg/analyzer/test/generated/resolver_test.dart
@@ -12,6 +12,8 @@ import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/context/context.dart';
+import 'package:analyzer/src/dart/ast/ast.dart'
+ show SimpleIdentifierImpl, PrefixedIdentifierImpl;
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/member.dart';
import 'package:analyzer/src/dart/element/type.dart';
@@ -17074,6 +17076,30 @@ class TypeResolverVisitorTest {
_listener.assertNoErrors();
}
+ void test_visitTypeName_noParameters_noArguments_undefined() {
+ SimpleIdentifier id = AstFactory.identifier3("unknown")
+ ..staticElement = new _StaleElement();
+ TypeName typeName = new TypeName(id, null);
+ _resolveNode(typeName, []);
+ expect(typeName.type, UndefinedTypeImpl.instance);
+ expect(typeName.name.staticElement, null);
+ _listener.assertErrorsWithCodes([StaticWarningCode.UNDEFINED_CLASS]);
+ }
+
+ void test_visitTypeName_prefixed_noParameters_noArguments_undefined() {
+ SimpleIdentifier prefix = AstFactory.identifier3("unknownPrefix")
+ ..staticElement = new _StaleElement();
+ SimpleIdentifier suffix = AstFactory.identifier3("unknownSuffix")
+ ..staticElement = new _StaleElement();
+ TypeName typeName =
+ new TypeName(AstFactory.identifier(prefix, suffix), null);
+ _resolveNode(typeName, []);
+ expect(typeName.type, UndefinedTypeImpl.instance);
+ expect(prefix.staticElement, null);
+ expect(suffix.staticElement, null);
+ _listener.assertErrorsWithCodes([StaticWarningCode.UNDEFINED_CLASS]);
+ }
+
void test_visitTypeName_parameters_arguments() {
ClassElement classA = ElementFactory.classElement2("A", ["E"]);
ClassElement classB = ElementFactory.classElement2("B");
@@ -17234,6 +17260,21 @@ class _SimpleResolverTest_localVariable_types_invoked
}
/**
+ * Represents an element left over from a previous resolver run.
+ *
+ * A _StaleElement should always be replaced with either null or a new Element.
+ */
+class _StaleElement extends ElementImpl {
+ _StaleElement() : super("_StaleElement", -1);
+
+ @override
+ accept(_) => throw "_StaleElement shouldn't be visited";
+
+ @override
+ get kind => throw "_StaleElement's kind shouldn't be accessed";
+}
+
+/**
* Shared infrastructure for [StaticTypeAnalyzer2Test] and
* [StrongModeStaticTypeAnalyzer2Test].
*/
« no previous file with comments | « pkg/analyzer/lib/src/generated/resolver.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698