diff options
author | Araq <rumpf_a@web.de> | 2016-12-23 12:27:14 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2016-12-23 12:27:14 +0100 |
commit | 93fb8b67b96e7df58fea34d1edfa800ff5dffd12 (patch) | |
tree | 626b7652ec61302af92e3702f12647a859ff106d | |
parent | 77d5d0cdfe5ac1dfbf590beb10d0ab1d84b14b3a (diff) | |
download | Nim-93fb8b67b96e7df58fea34d1edfa800ff5dffd12.tar.gz |
fixes #5142
-rw-r--r-- | compiler/ccgtypes.nim | 10 | ||||
-rw-r--r-- | tests/cpp/tembarrassing_generic_failure.nim | 8 |
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 |