summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJuan M Gómez <info@jmgomez.me>2024-05-07 22:03:53 +0100
committerGitHub <noreply@github.com>2024-05-07 15:03:53 -0600
commit3b4078a7f8a3bfd4f0047ed0b843e5485b08ffde (patch)
treea1d73b8d7851d6416476ca4f0824c8ddd2921b66
parent78d70d5fdf68fff8345b80ddc6419d5fbe8bd877 (diff)
downloadNim-3b4078a7f8a3bfd4f0047ed0b843e5485b08ffde.tar.gz
Skips generic owner when mangling instances (#23563)
-rw-r--r--compiler/ccgutils.nim2
-rw-r--r--tests/codegen/titaniummangle.nim9
2 files changed, 6 insertions, 5 deletions
diff --git a/compiler/ccgutils.nim b/compiler/ccgutils.nim
index da55df45d..6b106984c 100644
--- a/compiler/ccgutils.nim
+++ b/compiler/ccgutils.nim
@@ -122,7 +122,7 @@ proc encodeSym*(m: BModule; s: PSym; makeUnique: bool = false): string =
   var name = s.name.s
   if makeUnique:
     name = makeUnique(m, s, name)
-  "N" & encodeName(s.owner.name.s) & encodeName(name) & "E"
+  "N" & encodeName(s.skipGenericOwner.name.s) & encodeName(name) & "E"
 
 proc encodeType*(m: BModule; t: PType): string =
   result = ""
diff --git a/tests/codegen/titaniummangle.nim b/tests/codegen/titaniummangle.nim
index 5ab4e3410..4b45e59ae 100644
--- a/tests/codegen/titaniummangle.nim
+++ b/tests/codegen/titaniummangle.nim
@@ -5,11 +5,11 @@ discard """
   ccodecheck: "'_ZN14titaniummangle8testFuncE6stringN14titaniummangle3FooE'"
   ccodecheck: "'_ZN14titaniummangle8testFuncE3int7varargsI6stringE'"
   ccodecheck: "'_ZN14titaniummangle8testFuncEN14titaniummangle3BooE'"
-  ccodecheck: "'_ZN8testFunc8testFuncE8typeDescIN14titaniummangle17EnumAnotherSampleEE'"
+  ccodecheck: "'_ZN14titaniummangle8testFuncE8typeDescIN14titaniummangle17EnumAnotherSampleEE'"
   ccodecheck: "'_ZN14titaniummangle8testFuncE3ptrI14uncheckedArrayI3intEE'"
   ccodecheck: "'_ZN14titaniummangle8testFuncE3setIN14titaniummangle10EnumSampleEE'"
   ccodecheck: "'_ZN14titaniummangle8testFuncE4procI6string6stringE'"
-  ccodecheck: "'_ZN8testFunc8testFuncE3intN10Comparable10ComparableE'"
+  ccodecheck: "'_ZN14titaniummangle8testFuncE3intN10Comparable10ComparableE'"
   ccodecheck: "'_ZN14titaniummangle8testFuncE3int3int'"
   ccodecheck: "'_ZN14titaniummangle8testFuncEN14titaniummangle10EnumSampleE'"
   ccodecheck: "'_ZN14titaniummangle8testFuncEN14titaniummangle17EnumAnotherSampleE'"
@@ -37,7 +37,6 @@ type
   Comparable = concept x, y
     (x < y) is bool
 
-type 
   Foo = object
     a: int32
     b: int32
@@ -45,8 +44,10 @@ type
   FooTuple = tuple
     a: int
     b: int
+
   Container[T] = object
-    data: T  
+    data: T
+      
   Container2[T, T2] = object
     data: T
     data2: T2