Index: pkg/compiler/lib/src/resolution/members.dart |
diff --git a/pkg/compiler/lib/src/resolution/members.dart b/pkg/compiler/lib/src/resolution/members.dart |
index f4f79f16d0d90282b7cf79e38bec7949c0c28a53..b87f9900406eb1d1d71f97222735a4f7d1e60444 100644 |
--- a/pkg/compiler/lib/src/resolution/members.dart |
+++ b/pkg/compiler/lib/src/resolution/members.dart |
@@ -39,7 +39,8 @@ import '../universe/selector.dart' show |
Selector; |
import '../universe/use.dart' show |
DynamicUse, |
- StaticUse; |
+ StaticUse, |
+ TypeUse; |
import 'access_semantics.dart'; |
import 'class_members.dart' show MembersCreator; |
@@ -401,7 +402,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
TypeResult visitTypeAnnotation(TypeAnnotation node) { |
DartType type = resolveTypeAnnotation(node); |
if (inCheckContext) { |
- registry.registerCheckedModeCheck(type); |
+ registry.registerTypeUse(new TypeUse.checkedModeCheck(type)); |
} |
return new TypeResult(type); |
} |
@@ -487,7 +488,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
}); |
if (inCheckContext) { |
functionParameters.forEachParameter((ParameterElement element) { |
- registry.registerCheckedModeCheck(element.type); |
+ registry.registerTypeUse(new TypeUse.checkedModeCheck(element.type)); |
}); |
} |
} |
@@ -1162,7 +1163,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
type = resolveTypeAnnotation(typeNode); |
sendStructure = new IsStructure(type); |
} |
- registry.registerIsCheck(type); |
+ registry.registerTypeUse(new TypeUse.isCheck(type)); |
registry.registerSendStructure(node, sendStructure); |
return const NoneResult(); |
} |
@@ -1174,7 +1175,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
Node typeNode = node.arguments.head; |
DartType type = resolveTypeAnnotation(typeNode); |
- registry.registerAsCast(type); |
+ registry.registerTypeUse(new TypeUse.asCast(type)); |
registry.registerSendStructure(node, new AsStructure(type)); |
return const NoneResult(); |
} |
@@ -3558,28 +3559,32 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
ConstantResult visitLiteralInt(LiteralInt node) { |
- registry.registerInstantiatedType(coreTypes.intType); |
+ // TODO(johnniwinther): Make this a feature instead. |
+ registry.registerTypeUse(new TypeUse.instantiation(coreTypes.intType)); |
ConstantExpression constant = new IntConstantExpression(node.value); |
registry.setConstant(node, constant); |
return new ConstantResult(node, constant); |
} |
ConstantResult visitLiteralDouble(LiteralDouble node) { |
- registry.registerInstantiatedType(coreTypes.doubleType); |
+ // TODO(johnniwinther): Make this a feature instead. |
+ registry.registerTypeUse(new TypeUse.instantiation(coreTypes.doubleType)); |
ConstantExpression constant = new DoubleConstantExpression(node.value); |
registry.setConstant(node, constant); |
return new ConstantResult(node, constant); |
} |
ConstantResult visitLiteralBool(LiteralBool node) { |
- registry.registerInstantiatedType(coreTypes.boolType); |
+ // TODO(johnniwinther): Make this a feature instead. |
+ registry.registerTypeUse(new TypeUse.instantiation(coreTypes.boolType)); |
ConstantExpression constant = new BoolConstantExpression(node.value); |
registry.setConstant(node, constant); |
return new ConstantResult(node, constant); |
} |
ResolutionResult visitLiteralString(LiteralString node) { |
- registry.registerInstantiatedType(coreTypes.stringType); |
+ // TODO(johnniwinther): Make this a feature instead. |
+ registry.registerTypeUse(new TypeUse.instantiation(coreTypes.stringType)); |
if (node.dartString != null) { |
// [dartString] might be null on parser errors. |
ConstantExpression constant = |
@@ -3591,13 +3596,14 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
ConstantResult visitLiteralNull(LiteralNull node) { |
- registry.registerInstantiatedType(coreTypes.nullType); |
+ registry.registerTypeUse(new TypeUse.instantiation(coreTypes.nullType)); |
ConstantExpression constant = new NullConstantExpression(); |
registry.setConstant(node, constant); |
return new ConstantResult(node, constant); |
} |
ConstantResult visitLiteralSymbol(LiteralSymbol node) { |
+ // TODO(johnniwinther): Make this a feature instead. |
String name = node.slowNameString; |
registry.registerConstSymbol(name); |
if (!validateSymbol(node, name, reportError: false)) { |
@@ -3613,7 +3619,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
ResolutionResult visitStringJuxtaposition(StringJuxtaposition node) { |
- registry.registerInstantiatedType(coreTypes.stringType); |
+ // TODO(johnniwinther): Make this a feature instead. |
+ registry.registerTypeUse(new TypeUse.instantiation(coreTypes.stringType)); |
ResolutionResult first = visit(node.first); |
ResolutionResult second = visit(node.second); |
if (first.isConstant && second.isConstant) { |
@@ -3747,10 +3754,11 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
registry.registerStaticUse( |
new StaticUse.constructorRedirect(redirectionTarget)); |
- // TODO(johnniwinther): Register the effective target type instead. |
- registry.registerInstantiatedType( |
+ // TODO(johnniwinther): Register the effective target type as part of the |
+ // static use instead. |
+ registry.registerTypeUse(new TypeUse.instantiation( |
redirectionTarget.enclosingClass.thisType |
- .subst(type.typeArguments, targetClass.typeVariables)); |
+ .subst(type.typeArguments, targetClass.typeVariables))); |
if (isSymbolConstructor) { |
registry.registerSymbolConstructor(); |
} |
@@ -3911,7 +3919,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
// TODO(johniwinther): Avoid registration of `type` in face of redirecting |
// factory constructors. |
- registry.registerInstantiatedType(type); |
+ registry.registerTypeUse(new TypeUse.instantiation(type)); |
if (constructor.isGenerativeConstructor && cls.isAbstract) { |
isValidAsConstant = false; |
} |
@@ -4064,7 +4072,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
this, node, malformedIsError: malformedIsError, |
deferredIsMalformed: deferredIsMalformed); |
if (inCheckContext) { |
- registry.registerCheckedModeCheck(type); |
+ registry.registerTypeUse(new TypeUse.checkedModeCheck(type)); |
} |
return type; |
} |
@@ -4156,7 +4164,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
ResolutionResult visitStringInterpolation(StringInterpolation node) { |
- registry.registerInstantiatedType(coreTypes.stringType); |
+ // TODO(johnniwinther): This should be a consequence of the registration |
+ // of [registerStringInterpolation]. |
+ registry.registerTypeUse(new TypeUse.instantiation(coreTypes.stringType)); |
registry.registerStringInterpolation(); |
registerImplicitInvocation(Selectors.toString_); |
@@ -4742,7 +4752,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
registry.getDefinition(exceptionVariable); |
exceptionElement.variables.type = exceptionType; |
} |
- registry.registerOnCatchType(exceptionType); |
+ registry.registerTypeUse(new TypeUse.catchType(exceptionType)); |
} |
if (stackTraceDefinition != null) { |
Node stackTraceVariable = stackTraceDefinition.definitions.nodes.head; |