summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/jsgen.nim2
-rw-r--r--tests/concepts/tusertypeclasses2.nim16
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']