bugfixes for the symbol mangling; implements #129

This commit is contained in:
Araq 2012-07-19 17:38:52 +02:00
commit 39235e21f5
5 changed files with 58 additions and 21 deletions

View file

@ -12,15 +12,17 @@
# ------------------------- Name Mangling --------------------------------
proc mangle(name: string): string =
case name[0]
of 'a'..'z':
result = ""
add(result, chr(ord(name[0]) - ord('a') + ord('A')))
of '0'..'9', 'A'..'Z':
result = ""
add(result, name[0])
else: result = "HEX" & toHex(ord(name[0]), 2)
for i in countup(0 + 1, len(name) + 0 - 1):
when false:
case name[0]
of 'a'..'z':
result = ""
add(result, chr(ord(name[0]) - ord('a') + ord('A')))
of '0'..'9', 'A'..'Z':
result = ""
add(result, name[0])
else: result = "HEX" & toHex(ord(name[0]), 2)
result = ""
for i in countup(0, len(name) - 1):
case name[i]
of 'A'..'Z':
add(result, chr(ord(name[i]) - ord('A') + ord('a')))
@ -103,7 +105,7 @@ proc mangleName(s: PSym): PRope =
# These are not properly scoped now - we need to add blocks
# around for loops in transf
if keepOrigName:
result = s.name.s.toRope
result = s.name.s.mangle.toRope
else:
app(result, toRope(mangle(s.name.s)))
app(result, "_")
@ -120,7 +122,7 @@ proc isCompileTimeOnly(t: PType): bool =
var anonTypeName = toRope"TY"
proc typeName(typ: PType): PRope =
result = if typ.sym != nil: typ.sym.name.s.toRope
result = if typ.sym != nil: typ.sym.name.s.mangle.toRope
else: anonTypeName
proc getTypeName(typ: PType): PRope =