at 23.11-beta 1.8 kB view raw
1diff --git a/compiler/modulepaths.nim b/compiler/modulepaths.nim 2index e80ea3fa6..8ecf27a85 100644 3--- a/compiler/modulepaths.nim 4+++ b/compiler/modulepaths.nim 5@@ -70,6 +70,13 @@ proc checkModuleName*(conf: ConfigRef; n: PNode; doLocalError=true): FileIndex = 6 else: 7 result = fileInfoIdx(conf, fullPath) 8 9+proc rot13(result: var string) = 10+ for i, c in result: 11+ case c 12+ of 'a'..'m', 'A'..'M': result[i] = char(c.uint8 + 13) 13+ of 'n'..'z', 'N'..'Z': result[i] = char(c.uint8 - 13) 14+ else: discard 15+ 16 proc mangleModuleName*(conf: ConfigRef; path: AbsoluteFile): string = 17 ## Mangle a relative module path to avoid path and symbol collisions. 18 ## 19@@ -78,9 +85,11 @@ proc mangleModuleName*(conf: ConfigRef; path: AbsoluteFile): string = 20 ## 21 ## Example: 22 ## `foo-#head/../bar` becomes `@foo-@hhead@s..@sbar` 23- "@m" & relativeTo(path, conf.projectPath).string.multiReplace( 24+ result = "@m" & relativeTo(path, conf.projectPath).string.multiReplace( 25 {$os.DirSep: "@s", $os.AltSep: "@s", "#": "@h", "@": "@@", ":": "@c"}) 26+ rot13(result) 27 28 proc demangleModuleName*(path: string): string = 29 ## Demangle a relative module path. 30 result = path.multiReplace({"@@": "@", "@h": "#", "@s": "/", "@m": "", "@c": ":"}) 31+ rot13(result) 32diff --git a/compiler/msgs.nim b/compiler/msgs.nim 33index 3f386cc61..054f7f647 100644 34--- a/compiler/msgs.nim 35+++ b/compiler/msgs.nim 36@@ -659,8 +659,10 @@ proc uniqueModuleName*(conf: ConfigRef; fid: FileIndex): string = 37 for i in 0..<trunc: 38 let c = rel[i] 39 case c 40- of 'a'..'z': 41- result.add c 42+ of 'a'..'m': 43+ result.add char(c.uint8 + 13) 44+ of 'n'..'z': 45+ result.add char(c.uint8 - 13) 46 of {os.DirSep, os.AltSep}: 47 result.add 'Z' # because it looks a bit like '/' 48 of '.':