diff options
-rw-r--r-- | compiler/jsgen.nim | 2 | ||||
-rw-r--r-- | tests/concepts/tusertypeclasses2.nim | 16 |
2 files changed, 13 insertions, 5 deletions
diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index baebfe188..129dc32bb 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -1456,7 +1456,7 @@ proc genArrayAddr(p: PProc, n: PNode, r: var TCompRes) = r.kind = resExpr proc genArrayAccess(p: PProc, n: PNode, r: var TCompRes) = - var ty = skipTypes(n[0].typ, abstractVarRange) + var ty = skipTypes(n[0].typ, abstractVarRange+tyUserTypeClasses) if ty.kind in {tyRef, tyPtr, tyLent, tyOwned}: ty = skipTypes(ty.elementType, abstractVarRange) case ty.kind of tyArray, tyOpenArray, tySequence, tyString, tyCstring, tyVarargs: diff --git a/tests/concepts/tusertypeclasses2.nim b/tests/concepts/tusertypeclasses2.nim index 0f5c737e8..6132bc2d8 100644 --- a/tests/concepts/tusertypeclasses2.nim +++ b/tests/concepts/tusertypeclasses2.nim @@ -48,8 +48,16 @@ block: foo4(x) block: # bug #9550 - type Foo = concept c - for v in c: (v is char) + block: + type Foo = concept c + for v in c: (v is char) - func foo(c: Foo) = (for v in c: discard) - foo @['a', 'b' ,'c'] + func foo(c: Foo) = (for v in c: discard) + foo @['a', 'b' ,'c'] + + block: + type Foo = concept c + for v in c: (v is char) + + func foo(c: Foo) = (for v in c: discard) + foo ['a', 'b' ,'c'] |