| Index: pkg/compiler/lib/src/compile_time_constants.dart
|
| diff --git a/pkg/compiler/lib/src/compile_time_constants.dart b/pkg/compiler/lib/src/compile_time_constants.dart
|
| index a5b01f39fd65e3e9826a5df915161c46dd5d62cb..c6f1af4c22a8b26bda7f76317197fa4725dec208 100644
|
| --- a/pkg/compiler/lib/src/compile_time_constants.dart
|
| +++ b/pkg/compiler/lib/src/compile_time_constants.dart
|
| @@ -444,7 +444,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| new DartString.literal(text))))];
|
| AstConstant constant = makeConstructedConstant(
|
| compiler, handler, context, node, type, compiler.symbolConstructor,
|
| - new Selector.callConstructor('', null, 1),
|
| + CallStructure.ONE_ARG,
|
| arguments, arguments);
|
| return new AstConstant(
|
| context, node, new SymbolConstantExpression(constant.value, text));
|
| @@ -652,7 +652,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| */
|
| List<AstConstant> evaluateArgumentsToConstructor(
|
| Node node,
|
| - Selector selector,
|
| + CallStructure callStructure,
|
| Link<Node> arguments,
|
| FunctionElement target,
|
| {AstConstant compileArgument(Node node)}) {
|
| @@ -664,7 +664,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| }
|
| target.computeSignature(compiler);
|
|
|
| - if (!selector.applies(target, compiler.world)) {
|
| + if (!callStructure.signatureApplies(target)) {
|
| String name = Elements.constructorNameForDiagnostics(
|
| target.enclosingClass.name, target.name);
|
| compiler.reportError(
|
| @@ -676,10 +676,11 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| target.functionSignature.parameterCount,
|
| new ErroneousAstConstant(context, node));
|
| }
|
| - return selector.makeArgumentsList(arguments,
|
| - target,
|
| - compileArgument,
|
| - compileDefaultValue);
|
| + return callStructure.makeArgumentsList(
|
| + arguments,
|
| + target,
|
| + compileArgument,
|
| + compileDefaultValue);
|
| }
|
|
|
| AstConstant visitNewExpression(NewExpression node) {
|
| @@ -706,7 +707,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| compiler.analyzeElement(constructor.declaration);
|
|
|
| InterfaceType type = elements.getType(node);
|
| - Selector selector = elements.getSelector(send);
|
| + CallStructure callStructure = elements.getSelector(send).callStructure;
|
|
|
| Map<Node, AstConstant> concreteArgumentMap =
|
| <Node, AstConstant>{};
|
| @@ -721,7 +722,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
|
|
| List<AstConstant> normalizedArguments =
|
| evaluateArgumentsToConstructor(
|
| - node, selector, send.arguments, constructor.implementation,
|
| + node, callStructure, send.arguments, constructor.implementation,
|
| compileArgument: (node) => concreteArgumentMap[node]);
|
| List<AstConstant> concreteArguments =
|
| concreteArgumentMap.values.toList();
|
| @@ -736,7 +737,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| value,
|
| type,
|
| constructor,
|
| - elements.getSelector(send),
|
| + elements.getSelector(send).callStructure,
|
| concreteArguments.map((e) => e.expression).toList()));
|
| }
|
|
|
| @@ -811,7 +812,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| } else {
|
| return makeConstructedConstant(
|
| compiler, handler, context,
|
| - node, type, constructor, selector,
|
| + node, type, constructor, callStructure,
|
| concreteArguments, normalizedArguments);
|
| }
|
| }
|
| @@ -823,12 +824,12 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| Node node,
|
| InterfaceType type,
|
| ConstructorElement constructor,
|
| - Selector selector,
|
| + CallStructure callStructure,
|
| List<AstConstant> concreteArguments,
|
| List<AstConstant> normalizedArguments) {
|
| - assert(invariant(node, selector.applies(constructor, compiler.world) ||
|
| + assert(invariant(node, callStructure.signatureApplies(constructor) ||
|
| compiler.compilationFailed,
|
| - message: "Selector $selector does not apply to constructor "
|
| + message: "Call structure $callStructure does not apply to constructor "
|
| "$constructor."));
|
|
|
| // The redirection chain of this element may not have been resolved through
|
| @@ -856,7 +857,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| fieldConstants.map((e) => e.value).toList()),
|
| type,
|
| constructor,
|
| - selector,
|
| + callStructure,
|
| concreteArguments.map((e) => e.expression).toList()));
|
| }
|
|
|
| @@ -994,12 +995,12 @@ class ConstructorEvaluator extends CompileTimeConstantEvaluator {
|
| Function compileArgument = (element) => definitions[element];
|
| Function compileConstant = handler.compileConstant;
|
| FunctionElement target = constructor.definingConstructor.implementation;
|
| - Selector.addForwardingElementArgumentsToList(constructor,
|
| - compiledArguments,
|
| - target,
|
| - compileArgument,
|
| - compileConstant,
|
| - compiler.world);
|
| + CallStructure.addForwardingElementArgumentsToList(
|
| + constructor,
|
| + compiledArguments,
|
| + target,
|
| + compileArgument,
|
| + compileConstant);
|
| evaluateSuperOrRedirectSend(compiledArguments, target);
|
| return;
|
| }
|
| @@ -1019,7 +1020,8 @@ class ConstructorEvaluator extends CompileTimeConstantEvaluator {
|
| FunctionElement target = elements[call];
|
| List<AstConstant> compiledArguments =
|
| evaluateArgumentsToConstructor(
|
| - call, elements.getSelector(call), call.arguments, target,
|
| + call, elements.getSelector(call).callStructure,
|
| + call.arguments, target,
|
| compileArgument: evaluateConstant);
|
| evaluateSuperOrRedirectSend(compiledArguments, target);
|
| foundSuperOrRedirect = true;
|
| @@ -1048,9 +1050,9 @@ class ConstructorEvaluator extends CompileTimeConstantEvaluator {
|
| // If we do not find a default constructor, an error was reported
|
| // already and compilation will fail anyway. So just ignore that case.
|
| if (targetConstructor != null) {
|
| - Selector selector = new Selector.callDefaultConstructor();
|
| List<AstConstant> compiledArguments = evaluateArgumentsToConstructor(
|
| - functionNode, selector, const Link<Node>(), targetConstructor);
|
| + functionNode, CallStructure.NO_ARGS,
|
| + const Link<Node>(), targetConstructor);
|
| evaluateSuperOrRedirectSend(compiledArguments, targetConstructor);
|
| }
|
| }
|
|
|