diff --git a/src/genes/es/ExprEmitter.hx b/src/genes/es/ExprEmitter.hx index 4e0b12a..8f7850c 100644 --- a/src/genes/es/ExprEmitter.hx +++ b/src/genes/es/ExprEmitter.hx @@ -134,8 +134,8 @@ class ExprEmitter extends Emitter { case TField(x, f) if (fieldName(f) == "iterator" && isDynamicIterator(x)): switch (f) { case FStatic(c, cf): - write(c.get().name); - write(".iterator"); + emitValue(x); + emitField("iterator"); default: ctx.addFeature("use.$iterator"); write(ctx.typeAccessor(registerType)); diff --git a/tests/Set.hx b/tests/Set.hx new file mode 100644 index 0000000..a24dbd7 --- /dev/null +++ b/tests/Set.hx @@ -0,0 +1,13 @@ +package tests; + +// benmerckx/genes#82 +@:forward +abstract Set(js.lib.Set) { + public inline function new(?initial: Iterable) { + this = new js.lib.Set(); + } + + public function iterator(): js.lib.HaxeIterator { + return new js.lib.HaxeIterator(this.values()); + } +} diff --git a/tests/TestIterators.hx b/tests/TestIterators.hx index 5810d4f..cc24c1b 100644 --- a/tests/TestIterators.hx +++ b/tests/TestIterators.hx @@ -48,4 +48,16 @@ class TestIterators { final x = a.iterator; return assert(x().next() == 0); } + + // benmerckx/genes#82 + public function testIteratorWithImportAlias() { + final set = new Set(); + set.add(1); + set.add(2); + var count = 0; + for (item in set) { + count++; + } + return assert(count == 2); + } }