Index: pkg/compiler/lib/src/resolution/scope.dart |
diff --git a/pkg/compiler/lib/src/resolution/scope.dart b/pkg/compiler/lib/src/resolution/scope.dart |
index 75c3de9b7dc0c5eda317ccbe01d97bbcb6b6f5b6..41df8033f6ef8b6710d5d7f0ab20b202471393f4 100644 |
--- a/pkg/compiler/lib/src/resolution/scope.dart |
+++ b/pkg/compiler/lib/src/resolution/scope.dart |
@@ -58,14 +58,17 @@ class VariableDefinitionScope extends NestedScope { |
} |
} |
-/// [TypeVariablesScope] defines the outer scope in a context where some type |
-/// variables are declared and the entities in the enclosing scope are |
-/// available, but where locally declared and inherited members are not |
-/// available. |
-abstract class TypeVariablesScope extends NestedScope { |
- List<DartType> get typeVariables; |
- |
- TypeVariablesScope(Scope parent) : super(parent) { |
+/** |
+ * [TypeDeclarationScope] defines the outer scope of a type declaration in |
+ * which the declared type variables and the entities in the enclosing scope are |
+ * available but where declared and inherited members are not available. This |
+ * scope is only used for class declarations during resolution of the |
+ * class hierarchy. In all other cases [ClassScope] is used. |
+ */ |
+class TypeDeclarationScope extends NestedScope { |
+ final TypeDeclarationElement element; |
+ |
+ TypeDeclarationScope(parent, this.element) : super(parent) { |
assert(parent != null); |
} |
@@ -74,6 +77,7 @@ abstract class TypeVariablesScope extends NestedScope { |
} |
Element lookupTypeVariable(String name) { |
+ List<DartType> typeVariables = element.typeVariables; |
for (TypeVariableType type in typeVariables) { |
if (type.name == name) { |
return type.element; |
@@ -83,22 +87,6 @@ abstract class TypeVariablesScope extends NestedScope { |
} |
Element localLookup(String name) => lookupTypeVariable(name); |
-} |
- |
-/** |
- * [TypeDeclarationScope] defines the outer scope of a type declaration in |
- * which the declared type variables and the entities in the enclosing scope are |
- * available but where declared and inherited members are not available. This |
- * scope is used for class declarations during resolution of the class hierarchy |
- * and when resolving typedef signatures. In other cases [ClassScope] is used. |
- */ |
-class TypeDeclarationScope extends TypeVariablesScope { |
- final GenericElement element; |
- |
- @override |
- List<DartType> get typeVariables => element.typeVariables; |
- |
- TypeDeclarationScope(Scope parent, this.element) : super(parent); |
String toString() => 'TypeDeclarationScope($element)'; |
} |