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

Unified Diff: pkg/compiler/lib/src/typechecker.dart

Issue 787753005: Fix crash in typechecker (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Add test. Created 6 years 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/compiler/lib/src/typechecker.dart
diff --git a/pkg/compiler/lib/src/typechecker.dart b/pkg/compiler/lib/src/typechecker.dart
index 4073f291f67914cc9238110f80ce6fea5623ca98..2243375dcd4c3fba695d7ee905ff5f6961418549 100644
--- a/pkg/compiler/lib/src/typechecker.dart
+++ b/pkg/compiler/lib/src/typechecker.dart
@@ -1104,6 +1104,7 @@ class TypeCheckerVisitor extends Visitor<DartType> {
return const DynamicType();
}
+ Identifier selector = node.selector.asIdentifier();
if (Elements.isClosureSend(node, element)) {
if (element != null) {
// foo() where foo is a local or a parameter.
@@ -1113,9 +1114,12 @@ class TypeCheckerVisitor extends Visitor<DartType> {
DartType type = analyze(node.selector);
return analyzeInvocation(node, new TypeAccess(type));
}
+ } else if (Elements.isErroneousElement(element) && selector == null) {
+ // exp() where exp is an erroneous construct like `new Unresolved()`.
+ DartType type = analyze(node.selector);
+ return analyzeInvocation(node, new TypeAccess(type));
}
- Identifier selector = node.selector.asIdentifier();
String name = selector.source;
if (node.isOperator && identical(name, 'is')) {

Powered by Google App Engine
This is Rietveld 408576698