diff --git a/compiler/ccgtypes.nim b/compiler/ccgtypes.nim index a173095e8c..aa0b983ffb 100644 --- a/compiler/ccgtypes.nim +++ b/compiler/ccgtypes.nim @@ -116,16 +116,18 @@ proc mangleName(m: BModule; s: PSym): Rope = add(result, m.idOrSig(s)) s.loc.r = result -proc typeName(typ: PType): Rope = - result = if typ.sym != nil and typ.kind in {tyObject, tyEnum}: - typ.sym.name.s.mangle.rope - else: - ~"TY" const irrelevantForBackend = {tyGenericBody, tyGenericInst, tyGenericInvocation, tyDistinct, tyRange, tyStatic, tyAlias} +proc typeName(typ: PType): Rope = + let typ = typ.skipTypes(irrelevantForBackend) + result = if typ.sym != nil and typ.kind in {tyObject, tyEnum}: + typ.sym.name.s.mangle.rope + else: + ~"TY" + proc getTypeName(m: BModule; typ: PType; sig: SigHash): Rope = var t = typ while true: diff --git a/tests/cpp/tembarrassing_generic_failure.nim b/tests/cpp/tembarrassing_generic_failure.nim new file mode 100644 index 0000000000..3c31dcdb89 --- /dev/null +++ b/tests/cpp/tembarrassing_generic_failure.nim @@ -0,0 +1,8 @@ +discard """ + cmd: "nim cpp --threads:on $file" +""" + +# bug #5142 + +var ci: Channel[int] +ci.open