diff options
-rw-r--r-- | compiler/jsgen.nim | 2 | ||||
-rw-r--r-- | tests/concepts/tusertypeclasses2.nim | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index 37db6f74f..25871b8d3 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -1552,7 +1552,7 @@ proc genAddr(p: PProc, n: PNode, r: var TCompRes) = if ty.kind in MappedToObject: gen(p, n[0], r) else: - let kindOfIndexedExpr = skipTypes(n[0][0].typ, abstractVarRange).kind + let kindOfIndexedExpr = skipTypes(n[0][0].typ, abstractVarRange+tyUserTypeClasses).kind case kindOfIndexedExpr of tyArray, tyOpenArray, tySequence, tyString, tyCstring, tyVarargs: genArrayAddr(p, n[0], r) diff --git a/tests/concepts/tusertypeclasses2.nim b/tests/concepts/tusertypeclasses2.nim index c9978f6ef..2d4688265 100644 --- a/tests/concepts/tusertypeclasses2.nim +++ b/tests/concepts/tusertypeclasses2.nim @@ -1,3 +1,7 @@ +discard """ + target: "c js" +""" + block: type hasFieldX = concept z @@ -42,3 +46,10 @@ block: foo2(x) foo3(x) foo4(x) + +block: # bug #9550 + type Foo = concept c + for v in c: (v is char) + + func foo(c: Foo) = (for v in c: discard) + foo @['a', 'b' ,'c'] |