| Index: pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
|
| diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
|
| index da33e20a879efdc0181f2ecbe62fe2a23b419979..039f33331b15417eca7e42926491e21c93ebc26e 100644
|
| --- a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
|
| +++ b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
|
| @@ -323,6 +323,9 @@ class ProgramBuilder {
|
| }
|
|
|
| void _addJsInteropStubs(LibrariesMap librariesMap) {
|
| + // TODO(26456): we should be using codegenWorld instead of resolverWorld
|
| + // to determine what invocations could be live but codegenWorld has a bug
|
| + // resulting in it missing some invocations.
|
| if (_classes.containsKey(_compiler.coreClasses.objectClass)) {
|
| var toStringInvocation = namer.invocationName(Selectors.toString_);
|
| // TODO(jacobr): register toString as used so that it is always accessible
|
| @@ -348,7 +351,7 @@ class ProgramBuilder {
|
| if (!member.isInstanceMember) return;
|
| if (member.isGetter || member.isField || member.isFunction) {
|
| var selectors =
|
| - _compiler.codegenWorld.getterInvocationsByName(member.name);
|
| + _compiler.resolverWorld.getterInvocationsByName(member.name);
|
| if (selectors != null && !selectors.isEmpty) {
|
| for (var selector in selectors.keys) {
|
| var stubName = namer.invocationName(selector);
|
| @@ -363,7 +366,7 @@ class ProgramBuilder {
|
|
|
| if (member.isSetter || (member.isField && !member.isConst)) {
|
| var selectors =
|
| - _compiler.codegenWorld.setterInvocationsByName(member.name);
|
| + _compiler.resolverWorld.setterInvocationsByName(member.name);
|
| if (selectors != null && !selectors.isEmpty) {
|
| var stubName = namer.setterForElement(member);
|
| if (stubNames.add(stubName.key)) {
|
| @@ -419,12 +422,14 @@ class ProgramBuilder {
|
| maxArgs = 32767;
|
| }
|
| var selectors =
|
| - _compiler.codegenWorld.invocationsByName(member.name);
|
| + _compiler.resolverWorld.invocationsByName(member.name);
|
| +
|
| // Named arguments are not yet supported. In the future we
|
| // may want to map named arguments to an object literal containing
|
| // all named arguments.
|
| if (selectors != null && !selectors.isEmpty) {
|
| for (var selector in selectors.keys) {
|
| +
|
| // Check whether the arity matches this member.
|
| var argumentCount = selector.argumentCount;
|
| // JS interop does not support named arguments.
|
|
|