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 a3c33ba4c1d9319bcc44ca233d53930cee21afec..838224db374c6dd84f8139f42e49caa4da6f4e2c 100644 |
--- a/pkg/compiler/lib/src/resolution/members.dart |
+++ b/pkg/compiler/lib/src/resolution/members.dart |
@@ -3445,12 +3445,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
registry.setSelector(node, setterSelector); |
registry.setOperatorSelectorInComplexSendSet(node, operatorSelector); |
- registry.registerDynamicUse(new DynamicUse(operatorSelector, null)); |
- |
SendStructure sendStructure; |
if (operator.kind == AssignmentOperatorKind.IF_NULL) { |
+ registry.registerConstantLiteral(new NullConstantExpression()); |
+ registry.registerDynamicUse(new DynamicUse(Selectors.equals, null)); |
sendStructure = new SetIfNullStructure(semantics); |
} else { |
+ registry.registerDynamicUse(new DynamicUse(operatorSelector, null)); |
sendStructure = new CompoundStructure(semantics, operator); |
} |
registry.registerSendStructure(node, sendStructure); |
@@ -3888,11 +3889,10 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// and only declaration elements may be registered. |
// TODO(johniwinther): Avoid registration of `type` in face of redirecting |
// factory constructors. |
- registry.registerStaticUse( |
- node.isConst |
- ? new StaticUse.constConstructorInvoke( |
+ registry.registerStaticUse(node.isConst |
+ ? new StaticUse.constConstructorInvoke( |
constructor.declaration, callStructure, type) |
- : new StaticUse.typedConstructorInvoke( |
+ : new StaticUse.typedConstructorInvoke( |
constructor.declaration, callStructure, type)); |
InterfaceType interfaceType = type; |
if (interfaceType.typeArguments.any((DartType type) => !type.isDynamic)) { |