bugfix: name mangling of field names
This commit is contained in:
parent
39235e21f5
commit
540e244cf7
1 changed files with 23 additions and 2 deletions
|
|
@ -11,6 +11,27 @@
|
||||||
|
|
||||||
# ------------------------- Name Mangling --------------------------------
|
# ------------------------- Name Mangling --------------------------------
|
||||||
|
|
||||||
|
proc mangleField(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(1, len(name) - 1):
|
||||||
|
case name[i]
|
||||||
|
of 'A'..'Z':
|
||||||
|
add(result, chr(ord(name[i]) - ord('A') + ord('a')))
|
||||||
|
of '_':
|
||||||
|
nil
|
||||||
|
of 'a'..'z', '0'..'9':
|
||||||
|
add(result, name[i])
|
||||||
|
else:
|
||||||
|
add(result, "HEX")
|
||||||
|
add(result, toHex(ord(name[i]), 2))
|
||||||
|
|
||||||
proc mangle(name: string): string =
|
proc mangle(name: string): string =
|
||||||
when false:
|
when false:
|
||||||
case name[0]
|
case name[0]
|
||||||
|
|
@ -373,8 +394,8 @@ proc mangleRecFieldName(field: PSym, rectype: PType): PRope =
|
||||||
if (rectype.sym != nil) and
|
if (rectype.sym != nil) and
|
||||||
({sfImportc, sfExportc} * rectype.sym.flags != {}):
|
({sfImportc, sfExportc} * rectype.sym.flags != {}):
|
||||||
result = field.loc.r
|
result = field.loc.r
|
||||||
else:
|
else:
|
||||||
result = toRope(mangle(field.name.s))
|
result = toRope(mangleField(field.name.s))
|
||||||
if result == nil: InternalError(field.info, "mangleRecFieldName")
|
if result == nil: InternalError(field.info, "mangleRecFieldName")
|
||||||
|
|
||||||
proc genRecordFieldsAux(m: BModule, n: PNode,
|
proc genRecordFieldsAux(m: BModule, n: PNode,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue