compiler/modulepaths

  Source   Edit

Procs

proc checkModuleName(conf: ConfigRef; n: PNode; doLocalError = true): FileIndex {....raises: [
    OSError, Exception, ValueError, KeyError, IOError, ERecoverableError], tags: [
    ReadEnvEffect, ReadIOEffect, RootEffect, ReadDirEffect, WriteIOEffect].}
  Source   Edit
proc demangleModuleName(path: string): string {....raises: [], tags: [].}
Demangle a relative module path.   Source   Edit
proc getModuleName(conf: ConfigRef; n: PNode): string {....raises: [OSError,
    Exception, ValueError, KeyError, IOError, ERecoverableError], tags: [
    ReadEnvEffect, ReadIOEffect, RootEffect, ReadDirEffect, WriteIOEffect].}
  Source   Edit
proc mangleModuleName(conf: ConfigRef; path: AbsoluteFile): string {.
    ...raises: [Exception], tags: [RootEffect].}

Mangle a relative module path to avoid path and symbol collisions.

Used by backends that need to generate intermediary files from Nim modules. This is needed because the compiler uses a flat cache file hierarchy.

Example: foo-#head/../bar becomes @foo-@hhead@s..@sbar

  Source   Edit