diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index cf5eac56cc..2add4a162e 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -59,7 +59,7 @@ proc genLiteral(p: BProc, n: PNode, ty: PType): Rope = else: result = rope("NIM_NIL") of nkStrLit..nkTripleStrLit: - case skipTypes(ty, abstractVarRange + {tyStatic}).kind + case skipTypes(ty, abstractVarRange + {tyStatic, tyUserTypeClass, tyUserTypeClassInst}).kind of tyNil: result = genNilStringLiteral(p.module, n.info) of tyString: diff --git a/tests/concepts/tusertypeclasses.nim b/tests/concepts/tusertypeclasses.nim index 533bd528d3..3ea10569f1 100644 --- a/tests/concepts/tusertypeclasses.nim +++ b/tests/concepts/tusertypeclasses.nim @@ -4,6 +4,7 @@ Sortable Container TObj int +111 111 ''' """ @@ -25,7 +26,7 @@ type C.len is Ordinal for v in items(C): v.type is tuple|object - + proc foo(c: ObjectContainer) = echo "Container" @@ -94,6 +95,15 @@ proc to(x: TObj, t: type JSonValue) = discard proc testFoo(x: TFoo) = echo x.TypeName echo x.MappedType.name - + testFoo(TObj(x: 10)) +# bug #7092 + +type stringTest = concept x + x is string + +let usedToFail: stringTest = "111" +let working: string = "111" + +echo usedToFail, " ", working