| Index: pkg/compiler/lib/src/constants/expressions.dart
|
| diff --git a/pkg/compiler/lib/src/constants/expressions.dart b/pkg/compiler/lib/src/constants/expressions.dart
|
| index 5644b0f5847ce5db238ce8f803a226a1c2904470..abb3c6dec439f7884e1d0fd86a94b3a3c4115a10 100644
|
| --- a/pkg/compiler/lib/src/constants/expressions.dart
|
| +++ b/pkg/compiler/lib/src/constants/expressions.dart
|
| @@ -107,6 +107,22 @@ abstract class ConstantConstructor {
|
| Map<FieldElement, ConstantExpression> computeInstanceFields(
|
| List<ConstantExpression> arguments,
|
| CallStructure callStructure);
|
| +
|
| + accept(ConstantConstructorVisitor visitor, arg);
|
| +}
|
| +
|
| +abstract class ConstantConstructorVisitor<R, A> {
|
| + const ConstantConstructorVisitor();
|
| +
|
| + R visit(ConstantConstructor constantConstructor, A context) {
|
| + return constantConstructor.accept(this, context);
|
| + }
|
| +
|
| + R visitGenerative(GenerativeConstantConstructor constructor, A arg);
|
| + R visitRedirectingGenerative(
|
| + RedirectingGenerativeConstantConstructor constructor, A arg);
|
| + R visitRedirectingFactory(
|
| + RedirectingFactoryConstantConstructor constructor, A arg);
|
| }
|
|
|
| /// A generative constant constructor.
|
| @@ -141,6 +157,10 @@ class GenerativeConstantConstructor implements ConstantConstructor{
|
| return appliedFieldMap;
|
| }
|
|
|
| + accept(ConstantConstructorVisitor visitor, arg) {
|
| + return visitor.visitGenerative(this, arg);
|
| + }
|
| +
|
| String toString() {
|
| StringBuffer sb = new StringBuffer();
|
| sb.write("{'type': $type");
|
| @@ -205,6 +225,10 @@ class RedirectingGenerativeConstantConstructor implements ConstantConstructor {
|
| return appliedFieldMap;
|
| }
|
|
|
| + accept(ConstantConstructorVisitor visitor, arg) {
|
| + return visitor.visitRedirectingGenerative(this, arg);
|
| + }
|
| +
|
| String toString() {
|
| StringBuffer sb = new StringBuffer();
|
| sb.write("{'type': ${thisConstructorInvocation.type}");
|
| @@ -240,6 +264,10 @@ class RedirectingFactoryConstantConstructor implements ConstantConstructor {
|
| return constantConstructor.computeInstanceFields(arguments, callStructure);
|
| }
|
|
|
| + accept(ConstantConstructorVisitor visitor, arg) {
|
| + return visitor.visitRedirectingFactory(this, arg);
|
| + }
|
| +
|
| String toString() {
|
| StringBuffer sb = new StringBuffer();
|
| sb.write("{");
|
|
|