Index: dart/pkg/compiler/lib/src/resolution/members.dart |
diff --git a/dart/pkg/compiler/lib/src/resolution/members.dart b/dart/pkg/compiler/lib/src/resolution/members.dart |
index 40d197f2d6408f4ebc9a55c5d5d37ba467696ef8..18309afce5bab2af2f045ba96af5fb3d8d733c41 100644 |
--- a/dart/pkg/compiler/lib/src/resolution/members.dart |
+++ b/dart/pkg/compiler/lib/src/resolution/members.dart |
@@ -2245,8 +2245,6 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} else if (node.isSuper()) { |
if (!inInstanceContext) { |
error(node, MessageKind.NO_SUPER_IN_STATIC); |
- // TODO(ahe): Don't throw, recover from error. |
- throw new CompilerCancelledException(null); |
} |
if ((ElementCategory.SUPER & allowedCategory) == 0) { |
error(node, MessageKind.INVALID_USE_OF_SUPER); |
@@ -2274,11 +2272,11 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// Use the erroneous element. |
} else { |
if ((element.kind.category & allowedCategory) == 0) { |
- // TODO(ahe): Improve error message. Need UX input. |
- error(node, MessageKind.GENERIC, |
- {'text': "is not an expression $element"}); |
- // TODO(ahe): Don't throw, recover from error. |
- throw new CompilerCancelledException(null); |
+ element = warnAndCreateErroneousElement( |
+ node, name, |
+ MessageKind.GENERIC, |
+ // TODO(ahe): Improve error message. Need UX input. |
+ {'text': "is not an expression $element"}); |
} |
} |
if (!Elements.isUnresolved(element) && element.isClass) { |
@@ -4924,15 +4922,20 @@ class ConstructorResolver extends CommonResolverVisitor<Element> { |
} else if (element.isTypedef) { |
error(node, MessageKind.CANNOT_INSTANTIATE_TYPEDEF, |
{'typedefName': name}); |
+ element = new ErroneousElementX( |
+ MessageKind.CANNOT_INSTANTIATE_TYPEDEF, |
+ {'typedefName': name}, name, resolver.enclosingElement); |
} else if (element.isTypeVariable) { |
error(node, MessageKind.CANNOT_INSTANTIATE_TYPE_VARIABLE, |
{'typeVariableName': name}); |
- // TODO(ahe): Don't throw, recover from error. |
- throw new CompilerCancelledException(null); |
+ element = new ErroneousElementX( |
+ MessageKind.CANNOT_INSTANTIATE_TYPE_VARIABLE, |
+ {'typeVariableName': name}, name, resolver.enclosingElement); |
} else if (!element.isClass && !element.isPrefix) { |
error(node, MessageKind.NOT_A_TYPE, {'node': name}); |
- // TODO(ahe): Don't throw, recover from error. |
- throw new CompilerCancelledException(null); |
+ element = new ErroneousElementX( |
+ MessageKind.NOT_A_TYPE, {'node': name}, name, |
+ resolver.enclosingElement); |
} |
return element; |
} |