Index: pkg/compiler/lib/src/resolution/type_resolver.dart |
diff --git a/pkg/compiler/lib/src/resolution/type_resolver.dart b/pkg/compiler/lib/src/resolution/type_resolver.dart |
index 832279bdb0938e2a3aa871d516e92dd43510e521..e1a076df6982c6eacf4a11cd36f33af76d2d0820 100644 |
--- a/pkg/compiler/lib/src/resolution/type_resolver.dart |
+++ b/pkg/compiler/lib/src/resolution/type_resolver.dart |
@@ -18,6 +18,7 @@ import '../elements/elements.dart' |
ErroneousElement, |
PrefixElement, |
TypedefElement, |
+ TypeDeclarationElement, |
TypeVariableElement; |
import '../elements/modelx.dart' show ErroneousElementX; |
import '../tree/tree.dart'; |
@@ -205,12 +206,17 @@ class TypeResolver { |
} |
} |
} else if (element.isTypeVariable) { |
+ // FIXME: check enclosing, which may be not class, not typedef (so |
+ // it's a generic method) then set the type to `const DynamicType()`. |
+ // This should later be fixed such that we don't tell the user that they |
+ // wrote `dynamic` anywhere. |
TypeVariableElement typeVariable = element; |
Element outer = |
visitor.enclosingElement.outermostEnclosingMemberOrTopLevel; |
if (!outer.isClass && |
!outer.isTypedef && |
- !Elements.hasAccessToTypeVariables(visitor.enclosingElement)) { |
+ !Elements.hasAccessToTypeVariable( |
+ visitor.enclosingElement, typeVariable)) { |
registry.registerFeature(Feature.THROW_RUNTIME_ERROR); |
type = reportFailureAndCreateType( |
MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER, |