summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/ccgtypes.nim10
-rw-r--r--tests/cpp/tembarrassing_generic_failure.nim8
2 files changed, 14 insertions, 4 deletions
diff --git a/compiler/ccgtypes.nim b/compiler/ccgtypes.nim
index a173095e8..aa0b983ff 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
 
+
+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"
 
-const
-  irrelevantForBackend = {tyGenericBody, tyGenericInst, tyGenericInvocation,
-                          tyDistinct, tyRange, tyStatic, tyAlias}
-
 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 000000000..3c31dcdb8
--- /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