Index: pkg/compiler/lib/src/inferrer/inferrer_visitor.dart |
diff --git a/pkg/compiler/lib/src/inferrer/inferrer_visitor.dart b/pkg/compiler/lib/src/inferrer/inferrer_visitor.dart |
index d011dc0d1977cf619e93499e794b3dd9fa01cbf7..bff02bd231a2291c9df27330cedaf468f1e50601 100644 |
--- a/pkg/compiler/lib/src/inferrer/inferrer_visitor.dart |
+++ b/pkg/compiler/lib/src/inferrer/inferrer_visitor.dart |
@@ -958,6 +958,13 @@ abstract class InferrerVisitor<T, E extends MinimalInferrerEngine<T>> |
} |
} |
+ T _superType; |
+ T get superType { |
+ if (_superType != null) return _superType; |
+ return _superType = |
+ types.nonNullExact(outermostElement.enclosingClass.superclass); |
+ } |
+ |
@override |
T visitThisGet(Identifier node, _) { |
return thisType; |
@@ -967,7 +974,7 @@ abstract class InferrerVisitor<T, E extends MinimalInferrerEngine<T>> |
if (node.isThis()) { |
return thisType; |
} else if (node.isSuper()) { |
- return internalError(node, 'Unexpected expression $node.'); |
+ return superType; |
} else { |
Element element = elements[node]; |
if (Elements.isLocal(element)) { |