| Index: pkg/compiler/lib/src/js_emitter/parameter_stub_generator.dart
|
| diff --git a/pkg/compiler/lib/src/js_emitter/parameter_stub_generator.dart b/pkg/compiler/lib/src/js_emitter/parameter_stub_generator.dart
|
| index 9009784c6b37456d858df37aa96f5850f01aad7e..7d5122ba4acbb047720a26c9a85d9e6aed2f67d5 100644
|
| --- a/pkg/compiler/lib/src/js_emitter/parameter_stub_generator.dart
|
| +++ b/pkg/compiler/lib/src/js_emitter/parameter_stub_generator.dart
|
| @@ -38,21 +38,22 @@ class ParameterStubGenerator {
|
| ParameterStubMethod generateParameterStub(FunctionElement member,
|
| Selector selector,
|
| Selector callSelector) {
|
| + CallStructure callStructure = selector.callStructure;
|
| FunctionSignature parameters = member.functionSignature;
|
| - int positionalArgumentCount = selector.positionalArgumentCount;
|
| + int positionalArgumentCount = callStructure.positionalArgumentCount;
|
| if (positionalArgumentCount == parameters.parameterCount) {
|
| - assert(selector.namedArgumentCount == 0);
|
| + assert(callStructure.isUnnamed);
|
| return null;
|
| }
|
| - if (parameters.optionalParametersAreNamed
|
| - && selector.namedArgumentCount == parameters.optionalParameterCount) {
|
| + if (parameters.optionalParametersAreNamed &&
|
| + callStructure.namedArgumentCount == parameters.optionalParameterCount) {
|
| // If the selector has the same number of named arguments as the element,
|
| // we don't need to add a stub. The call site will hit the method
|
| // directly.
|
| return null;
|
| }
|
| JavaScriptConstantCompiler handler = backend.constants;
|
| - List<String> names = selector.getOrderedNamedArguments();
|
| + List<String> names = callStructure.getOrderedNamedArguments();
|
|
|
| bool isInterceptedMethod = backend.isInterceptedMethod(member);
|
|
|
| @@ -186,8 +187,8 @@ class ParameterStubGenerator {
|
| // (1) foo$2(a, b) => MyClass.foo$4$c$d.call(this, a, b, null, null)
|
| // (2) foo$3$c(a, b, c) => MyClass.foo$4$c$d(this, a, b, c, null);
|
| // (3) foo$3$d(a, b, d) => MyClass.foo$4$c$d(this, a, b, null, d);
|
| - List<ParameterStubMethod> generateParameterStubs(FunctionElement member,
|
| - {bool canTearOff: true}) {
|
| + List<ParameterStubMethod> generateParameterStubs(MethodElement member,
|
| + {bool canTearOff: true}) {
|
| if (member.enclosingElement.isClosure) {
|
| ClosureClassElement cls = member.enclosingElement;
|
| if (cls.supertype.element == backend.boundClosureClass) {
|
| @@ -243,9 +244,10 @@ class ParameterStubGenerator {
|
| // Start with the callSelectors since they imply the generation of the
|
| // non-call version.
|
| for (Selector selector in callSelectors) {
|
| - Selector renamedSelector = new Selector.call(
|
| - member.name, member.library,
|
| - selector.argumentCount, selector.namedArguments);
|
| + Selector renamedSelector = new Selector(
|
| + SelectorKind.CALL,
|
| + member.memberName,
|
| + selector.callStructure);
|
| renamedCallSelectors.add(renamedSelector);
|
|
|
| if (!renamedSelector.appliesUnnamed(member, compiler.world)) continue;
|
|
|