| Index: lib/compiler/implementation/resolver.dart
|
| diff --git a/lib/compiler/implementation/resolver.dart b/lib/compiler/implementation/resolver.dart
|
| index 06f4b3fcc148b0531c57660a4d57940a20fb1ad7..4d48866514c95619f2f715eece5cae4ee62aa3b9 100644
|
| --- a/lib/compiler/implementation/resolver.dart
|
| +++ b/lib/compiler/implementation/resolver.dart
|
| @@ -1751,10 +1751,7 @@ class ResolverVisitor extends CommonResolverVisitor<Element> {
|
| }
|
|
|
| visitStringInterpolationPart(StringInterpolationPart node) {
|
| - SourceString name = const SourceString('toString');
|
| - LibraryElement library = enclosingElement.getLibrary();
|
| - Selector selector = new Selector.call(name, library, 0);
|
| - world.registerDynamicInvocation(name, selector);
|
| + registerImplicitInvocation(const SourceString('toString'), 0);
|
| node.visitChildren(this);
|
| }
|
|
|
| @@ -1815,7 +1812,18 @@ class ResolverVisitor extends CommonResolverVisitor<Element> {
|
| mapping[node] = target;
|
| }
|
|
|
| + registerImplicitInvocation(SourceString name, int arity) {
|
| + Selector selector = new Selector.call(name, null, arity);
|
| + world.registerDynamicInvocation(name, selector);
|
| + }
|
| +
|
| visitForIn(ForIn node) {
|
| + for (final name in const [
|
| + const SourceString('iterator'),
|
| + const SourceString('next'),
|
| + const SourceString('hasNext')]) {
|
| + registerImplicitInvocation(name, 0);
|
| + }
|
| visit(node.expression);
|
| Scope blockScope = new BlockScope(scope);
|
| Node declaration = node.declaredIdentifier;
|
|
|