Support multi byte characters in module names (#7916)

This commit is contained in:
Oscar Nihlgård 2018-05-31 09:38:43 +02:00 • committed by Dmitry Atamanov
commit eb8f15d97c
3 changed files with 10 additions and 2 deletions

View file

@ -1099,7 +1099,7 @@ proc getSomeInitName(m: PSym, suffix: string): Rope =
if {sfSystemModule, sfMainModule} * m.flags == {}: if {sfSystemModule, sfMainModule} * m.flags == {}:
result = m.owner.name.s.mangle.rope result = m.owner.name.s.mangle.rope
result.add "_" result.add "_"
result.add m.name.s result.add m.name.s.mangle
result.add suffix result.add suffix
proc getInitName(m: PSym): Rope = proc getInitName(m: PSym): Rope =

8
tests/misc/åäö.nim Normal file
View file

@ -0,0 +1,8 @@
discard """
action: run
"""
# Tests that module names can contain multi byte characters
let a = 1
doAssert åäö.a == 1

View file

@ -79,7 +79,7 @@ proc nimcacheDir(filename, options: string, target: TTarget): string =
proc callCompiler(cmdTemplate, filename, options: string, proc callCompiler(cmdTemplate, filename, options: string,
target: TTarget, extraOptions=""): TSpec = target: TTarget, extraOptions=""): TSpec =
let nimcache = nimcacheDir(filename, options, target) let nimcache = nimcacheDir(filename, options, target)
let options = options & " --nimCache:" & nimcache.quoteShell & extraOptions let options = options & " " & ("--nimCache:" & nimcache).quoteShell & extraOptions
let c = parseCmdLine(cmdTemplate % ["target", targetToCmd[target], let c = parseCmdLine(cmdTemplate % ["target", targetToCmd[target],
"options", options, "file", filename.quoteShell, "options", options, "file", filename.quoteShell,
"filedir", filename.getFileDir()]) "filedir", filename.getFileDir()])