Index: sdk/lib/_internal/compiler/implementation/constants.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/constants.dart b/sdk/lib/_internal/compiler/implementation/constants.dart |
index d0305244a8c765a205ba3b97d9606a9da83f2350..272fd6a5cd201f82c7fd1eec4ceaa17e7bb834a8 100644 |
--- a/sdk/lib/_internal/compiler/implementation/constants.dart |
+++ b/sdk/lib/_internal/compiler/implementation/constants.dart |
@@ -17,6 +17,7 @@ abstract class ConstantVisitor<R> { |
R visitConstructed(ConstructedConstant constant); |
R visitType(TypeConstant constant); |
R visitInterceptor(InterceptorConstant constant); |
+ R visitDummyReceiver(DummyReceiverConstant constant); |
} |
abstract class Constant { |
@@ -41,6 +42,7 @@ abstract class Constant { |
bool isType() => false; |
bool isSentinel() => false; |
bool isInterceptor() => false; |
+ bool isDummyReceiver() => false; |
bool isNaN() => false; |
bool isMinusZero() => false; |
@@ -538,6 +540,33 @@ class InterceptorConstant extends Constant { |
} |
} |
+class DummyReceiverConstant extends Constant { |
+ final ti.TypeMask typeMask; |
+ |
+ DummyReceiverConstant(this.typeMask); |
+ |
+ bool isDummyReceiver() => true; |
+ |
+ bool operator ==(other) { |
+ return other is DummyReceiverConstant |
+ && typeMask == other.typeMask; |
+ } |
+ |
+ get hashCode => typeMask.hashCode; |
+ |
+ List<Constant> getDependencies() => const <Constant>[]; |
+ |
+ accept(ConstantVisitor visitor) => visitor.visitDummyReceiver(this); |
+ |
+ DartType computeType(Compiler compiler) => compiler.types.dynamicType; |
+ |
+ ti.TypeMask computeMask(Compiler compiler) => typeMask; |
+ |
+ String toString() { |
+ return 'DummyReceiverConstant($typeMask)'; |
+ } |
+} |
+ |
class ConstructedConstant extends ObjectConstant { |
final List<Constant> fields; |
final int hashCode; |