Files
Nim/compiler/modulegraphs.html
github-actions[bot] c7440eccf2 Deploy to GitHub pages
2025-09-27 04:02:34 +00:00

1766 lines
180 KiB
HTML

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>modulegraphs</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="nimdoc.out.css?v=2.3.1">
<!-- JS -->
<script type="text/javascript" src="dochack.js?v=2.3.1"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">modulegraphs</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#FullId" title="FullId = object
module*: int
packed*: PackedItemId">FullId</a></li>
<li><a class="reference" href="#Iface" title="Iface = object
module*: PSym ## module this &quot;Iface&quot; belongs to
converters*: seq[LazySym]
patterns*: seq[LazySym]
pureEnums*: seq[LazySym]
uniqueName*: Rope">Iface</a></li>
<li><a class="reference" href="#LazyInstantiation" title="LazyInstantiation = object
module*: int
sym*: FullId
concreteTypes*: seq[FullId]
inst*: PInstantiation">LazyInstantiation</a></li>
<li><a class="reference" href="#LazySym" title="LazySym = object
id*: FullId
sym*: PSym">LazySym</a></li>
<li><a class="reference" href="#LazyType" title="LazyType = object
id*: FullId
typ*: PType">LazyType</a></li>
<li><a class="reference" href="#ModuleGraph" title="ModuleGraph {.acyclic.} = ref object
ifaces*: seq[Iface] ## indexed by int32 fileIdx
packed*: PackedModuleGraph
encoders*: seq[PackedEncoder]
typeInstCache*: Table[ItemId, seq[LazyType]]
procInstCache*: Table[ItemId, seq[LazyInstantiation]]
attachedOps*: array[TTypeAttachedOp, Table[ItemId, LazySym]]
methodsPerGenericType*: Table[ItemId, seq[(int, LazySym)]]
memberProcsPerType*: Table[ItemId, seq[PSym]]
initializersPerType*: Table[ItemId, PNode]
enumToStringProcs*: Table[ItemId, LazySym]
emittedTypeInfo*: Table[string, FileIndex]
startupPackedConfig*: PackedConfig
packageSyms*: TStrTable
deps*: IntSet
importDeps*: Table[FileIndex, seq[FileIndex]]
suggestMode*: bool
interactive*: bool
withinSystem*: bool
inclToMod*: Table[FileIndex, FileIndex]
importStack*: seq[FileIndex]
backend*: RootRef
config*: ConfigRef
cache*: IdentCache
vm*: RootRef
repl*: RootRef
doStopCompile*: proc (): bool {.closure.}
usageSym*: PSym
owners*: seq[PSym]
suggestSymbols*: SuggestSymbolDatabase
suggestErrors*: Table[FileIndex, seq[Suggest]]
methods*: seq[tuple[methods: seq[PSym], dispatcher: PSym]]
bucketTable*: CountTable[ItemId]
objectTree*: Table[ItemId, seq[tuple[depth: int, value: PType]]]
methodsPerType*: Table[ItemId, seq[LazySym]]
dispatchers*: seq[LazySym]
systemModule*: PSym
sysTypes*: array[TTypeKind, PType]
compilerprocs*: TStrTable
exposed*: TStrTable
packageTypes*: TStrTable
emptyNode*: PNode
canonTypes*: Table[SigHash, PType]
symBodyHashes*: Table[int, SigHash]
importModuleCallback*: proc (graph: ModuleGraph; m: PSym; fileIdx: FileIndex): PSym {.
nimcall.}
includeFileCallback*: proc (graph: ModuleGraph; m: PSym; fileIdx: FileIndex): PNode {.
nimcall.}
cacheSeqs*: Table[string, PNode]
cacheCounters*: Table[string, BiggestInt]
cacheTables*: Table[string, BTree[string, PNode]]
passes*: seq[TPass]
pipelinePass*: PipelinePass
onDefinition*: proc (graph: ModuleGraph; s: PSym; info: TLineInfo) {.nimcall.}
onDefinitionResolveForward*: proc (graph: ModuleGraph; s: PSym;
info: TLineInfo) {.nimcall.}
onUsage*: proc (graph: ModuleGraph; s: PSym; info: TLineInfo) {.nimcall.}
globalDestructors*: seq[PNode]
strongSemCheck*: proc (graph: ModuleGraph; owner: PSym; body: PNode) {.nimcall.}
compatibleProps*: proc (graph: ModuleGraph; formal, actual: PType): bool {.
nimcall.}
idgen*: IdGenerator
operators*: Operators
cachedFiles*: StringTableRef
procGlobals*: seq[PNode]">ModuleGraph</a></li>
<li><a class="reference" href="#ModuleIter" title="ModuleIter = object">ModuleIter</a></li>
<li><a class="reference" href="#Operators" title="Operators = object
opNot*, opContains*, opLe*, opLt*, opAnd*, opOr*, opIsNil*, opEq*: PSym
opAdd*, opSub*, opMul*, opDiv*, opLen*: PSym">Operators</a></li>
<li><a class="reference" href="#PipelinePass" title="PipelinePass = enum
NonePass, SemPass, JSgenPass, CgenPass, NifgenPass, EvalPass, InterpreterPass,
GenDependPass, Docgen2TexPass, Docgen2JsonPass, Docgen2Pass">PipelinePass</a></li>
<li><a class="reference" href="#PPassContext" title="PPassContext = ref TPassContext">PPassContext</a></li>
<li><a class="reference" href="#SigHash" title="SigHash = distinct MD5Digest">SigHash</a></li>
<li><a class="reference" href="#TPass" title="TPass = tuple[open: TPassOpen, process: TPassProcess, close: TPassClose,
isFrontend: bool]">TPass</a></li>
<li><a class="reference" href="#TPassClose" title="TPassClose = proc (graph: ModuleGraph; p: PPassContext; n: PNode): PNode {.
nimcall.}">TPassClose</a></li>
<li><a class="reference" href="#TPassContext" title="TPassContext = object of RootObj
idgen*: IdGenerator">TPassContext</a></li>
<li><a class="reference" href="#TPassOpen" title="TPassOpen = proc (graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext {.
nimcall.}">TPassOpen</a></li>
<li><a class="reference" href="#TPassProcess" title="TPassProcess = proc (p: PPassContext; topLevelStmt: PNode): PNode {.nimcall.}">TPassProcess</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">$
<li><a class="reference" href="#%24%2CSigHash" title="`$`(u: SigHash): string">`$`(u: SigHash): string</a></li>
</ul>
<ul class="simple nested-toc-section">==
<li><a class="reference" href="#%3D%3D%2CSigHash%2CSigHash" title="`==`(a, b: SigHash): bool">`==`(a, b: SigHash): bool</a></li>
</ul>
<ul class="simple nested-toc-section">addDep
<li><a class="reference" href="#addDep%2CModuleGraph%2CPSym%2CFileIndex" title="addDep(g: ModuleGraph; m: PSym; dep: FileIndex)">addDep(g: ModuleGraph; m: PSym; dep: FileIndex)</a></li>
</ul>
<ul class="simple nested-toc-section">addDispatchers
<li><a class="reference" href="#addDispatchers%2CModuleGraph%2CPSym" title="addDispatchers(g: ModuleGraph; value: PSym)">addDispatchers(g: ModuleGraph; value: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">addIncludeDep
<li><a class="reference" href="#addIncludeDep%2CModuleGraph%2CFileIndex%2CFileIndex" title="addIncludeDep(g: ModuleGraph; module, includeFile: FileIndex)">addIncludeDep(g: ModuleGraph; module, includeFile: FileIndex)</a></li>
</ul>
<ul class="simple nested-toc-section">addMethodToGeneric
<li><a class="reference" href="#addMethodToGeneric%2CModuleGraph%2Cint%2CPType%2Cint%2CPSym" title="addMethodToGeneric(g: ModuleGraph; module: int; t: PType; col: int; m: PSym)">addMethodToGeneric(g: ModuleGraph; module: int; t: PType; col: int; m: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">belongsToStdlib
<li><a class="reference" href="#belongsToStdlib%2CModuleGraph%2CPSym" title="belongsToStdlib(graph: ModuleGraph; sym: PSym): bool">belongsToStdlib(graph: ModuleGraph; sym: PSym): bool</a></li>
</ul>
<ul class="simple nested-toc-section">closeRodFile
<li><a class="reference" href="#closeRodFile%2CModuleGraph%2CPSym" title="closeRodFile(g: ModuleGraph; m: PSym)">closeRodFile(g: ModuleGraph; m: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">completePartialOp
<li><a class="reference" href="#completePartialOp%2CModuleGraph%2Cint%2CPType%2CTTypeAttachedOp%2CPSym" title="completePartialOp(g: ModuleGraph; module: int; t: PType; op: TTypeAttachedOp;
value: PSym)">completePartialOp(g: ModuleGraph; module: int; t: PType; op: TTypeAttachedOp;
value: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">configComplete
<li><a class="reference" href="#configComplete%2CModuleGraph" title="configComplete(g: ModuleGraph)">configComplete(g: ModuleGraph)</a></li>
</ul>
<ul class="simple nested-toc-section">copyTypeProps
<li><a class="reference" href="#copyTypeProps%2CModuleGraph%2Cint%2CPType%2CPType" title="copyTypeProps(g: ModuleGraph; module: int; dest, src: PType)">copyTypeProps(g: ModuleGraph; module: int; dest, src: PType)</a></li>
</ul>
<ul class="simple nested-toc-section">createMagic
<li><a class="reference" href="#createMagic%2CModuleGraph%2CIdGenerator%2Cstring%2CTMagic" title="createMagic(g: ModuleGraph; idgen: IdGenerator; name: string; m: TMagic): PSym">createMagic(g: ModuleGraph; idgen: IdGenerator; name: string; m: TMagic): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">fileSymbols
<li><a class="reference" href="#fileSymbols%2CModuleGraph%2CFileIndex" title="fileSymbols(graph: ModuleGraph; fileIdx: FileIndex): SuggestFileSymbolDatabase">fileSymbols(graph: ModuleGraph; fileIdx: FileIndex): SuggestFileSymbolDatabase</a></li>
</ul>
<ul class="simple nested-toc-section">getAttachedOp
<li><a class="reference" href="#getAttachedOp%2CModuleGraph%2CPType%2CTTypeAttachedOp" title="getAttachedOp(g: ModuleGraph; t: PType; op: TTypeAttachedOp): PSym">getAttachedOp(g: ModuleGraph; t: PType; op: TTypeAttachedOp): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">getBody
<li><a class="reference" href="#getBody%2CModuleGraph%2CPSym" title="getBody(g: ModuleGraph; s: PSym): PNode">getBody(g: ModuleGraph; s: PSym): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">getModule
<li><a class="reference" href="#getModule%2CModuleGraph%2CFileIndex" title="getModule(g: ModuleGraph; fileIdx: FileIndex): PSym">getModule(g: ModuleGraph; fileIdx: FileIndex): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">getPackage
<li><a class="reference" href="#getPackage%2CModuleGraph%2CFileIndex" title="getPackage(graph: ModuleGraph; fileIdx: FileIndex): PSym">getPackage(graph: ModuleGraph; fileIdx: FileIndex): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">getToStringProc
<li><a class="reference" href="#getToStringProc%2CModuleGraph%2CPType" title="getToStringProc(g: ModuleGraph; t: PType): PSym">getToStringProc(g: ModuleGraph; t: PType): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">hasDisabledAsgn
<li><a class="reference" href="#hasDisabledAsgn%2CModuleGraph%2CPType" title="hasDisabledAsgn(g: ModuleGraph; t: PType): bool">hasDisabledAsgn(g: ModuleGraph; t: PType): bool</a></li>
</ul>
<ul class="simple nested-toc-section">hash
<li><a class="reference" href="#hash%2CSigHash" title="hash(u: SigHash): Hash">hash(u: SigHash): Hash</a></li>
<li><a class="reference" href="#hash%2CFileIndex" title="hash(x: FileIndex): Hash">hash(x: FileIndex): Hash</a></li>
</ul>
<ul class="simple nested-toc-section">initEncoder
<li><a class="reference" href="#initEncoder%2CModuleGraph%2CPSym" title="initEncoder(g: ModuleGraph; module: PSym)">initEncoder(g: ModuleGraph; module: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">initModuleIter
<li><a class="reference" href="#initModuleIter%2CModuleIter%2CModuleGraph%2CPSym%2CPIdent" title="initModuleIter(mi: var ModuleIter; g: ModuleGraph; m: PSym; name: PIdent): PSym">initModuleIter(mi: var ModuleIter; g: ModuleGraph; m: PSym; name: PIdent): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">initOperators
<li><a class="reference" href="#initOperators%2CModuleGraph" title="initOperators(g: ModuleGraph): Operators">initOperators(g: ModuleGraph): Operators</a></li>
</ul>
<ul class="simple nested-toc-section">initStrTables
<li><a class="reference" href="#initStrTables%2CModuleGraph%2CPSym" title="initStrTables(g: ModuleGraph; m: PSym)">initStrTables(g: ModuleGraph; m: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">isCachedModule
<li><a class="reference" href="#isCachedModule%2CModuleGraph%2CPSym" title="isCachedModule(g: ModuleGraph; m: PSym): bool">isCachedModule(g: ModuleGraph; m: PSym): bool</a></li>
</ul>
<ul class="simple nested-toc-section">isDirty
<li><a class="reference" href="#isDirty%2CModuleGraph%2CPSym" title="isDirty(g: ModuleGraph; m: PSym): bool">isDirty(g: ModuleGraph; m: PSym): bool</a></li>
</ul>
<ul class="simple nested-toc-section">loadCompilerProc
<li><a class="reference" href="#loadCompilerProc%2CModuleGraph%2Cstring" title="loadCompilerProc(g: ModuleGraph; name: string): PSym">loadCompilerProc(g: ModuleGraph; name: string): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">loadPackedSym
<li><a class="reference" href="#loadPackedSym%2CModuleGraph%2CLazySym" title="loadPackedSym(g: ModuleGraph; s: var LazySym)">loadPackedSym(g: ModuleGraph; s: var LazySym)</a></li>
</ul>
<ul class="simple nested-toc-section">markClientsDirty
<li><a class="reference" href="#markClientsDirty%2CModuleGraph%2CFileIndex" title="markClientsDirty(g: ModuleGraph; fileIdx: FileIndex)">markClientsDirty(g: ModuleGraph; fileIdx: FileIndex)</a></li>
</ul>
<ul class="simple nested-toc-section">markDirty
<li><a class="reference" href="#markDirty%2CModuleGraph%2CFileIndex" title="markDirty(g: ModuleGraph; fileIdx: FileIndex)">markDirty(g: ModuleGraph; fileIdx: FileIndex)</a></li>
</ul>
<ul class="simple nested-toc-section">moduleFromRodFile
<li><a class="reference" href="#moduleFromRodFile%2CModuleGraph%2CFileIndex%2Cseq%5BFileIndex%5D" title="moduleFromRodFile(g: ModuleGraph; fileIdx: FileIndex;
cachedModules: var seq[FileIndex]): PSym">moduleFromRodFile(g: ModuleGraph; fileIdx: FileIndex;
cachedModules: var seq[FileIndex]): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">moduleOpenForCodegen
<li><a class="reference" href="#moduleOpenForCodegen%2CModuleGraph%2CFileIndex" title="moduleOpenForCodegen(g: ModuleGraph; m: FileIndex): bool">moduleOpenForCodegen(g: ModuleGraph; m: FileIndex): bool</a></li>
</ul>
<ul class="simple nested-toc-section">needsCompilation
<li><a class="reference" href="#needsCompilation%2CModuleGraph" title="needsCompilation(g: ModuleGraph): bool">needsCompilation(g: ModuleGraph): bool</a></li>
<li><a class="reference" href="#needsCompilation%2CModuleGraph%2CFileIndex" title="needsCompilation(g: ModuleGraph; fileIdx: FileIndex): bool">needsCompilation(g: ModuleGraph; fileIdx: FileIndex): bool</a></li>
</ul>
<ul class="simple nested-toc-section">newModuleGraph
<li><a class="reference" href="#newModuleGraph%2CIdentCache%2CConfigRef" title="newModuleGraph(cache: IdentCache; config: ConfigRef): ModuleGraph">newModuleGraph(cache: IdentCache; config: ConfigRef): ModuleGraph</a></li>
</ul>
<ul class="simple nested-toc-section">nextModuleIter
<li><a class="reference" href="#nextModuleIter%2CModuleIter%2CModuleGraph" title="nextModuleIter(mi: var ModuleIter; g: ModuleGraph): PSym">nextModuleIter(mi: var ModuleIter; g: ModuleGraph): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">onProcessing
<li><a class="reference" href="#onProcessing%2CModuleGraph%2CFileIndex%2Cstring%2CPSym" title="onProcessing(graph: ModuleGraph; fileIdx: FileIndex; moduleStatus: string;
fromModule: PSym)">onProcessing(graph: ModuleGraph; fileIdx: FileIndex; moduleStatus: string;
fromModule: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">parentModule
<li><a class="reference" href="#parentModule%2CModuleGraph%2CFileIndex" title="parentModule(g: ModuleGraph; fileIdx: FileIndex): FileIndex">parentModule(g: ModuleGraph; fileIdx: FileIndex): FileIndex</a></li>
</ul>
<ul class="simple nested-toc-section">registerModule
<li><a class="reference" href="#registerModule%2CModuleGraph%2CPSym" title="registerModule(g: ModuleGraph; m: PSym)">registerModule(g: ModuleGraph; m: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">registerModuleById
<li><a class="reference" href="#registerModuleById%2CModuleGraph%2CFileIndex" title="registerModuleById(g: ModuleGraph; m: FileIndex)">registerModuleById(g: ModuleGraph; m: FileIndex)</a></li>
</ul>
<ul class="simple nested-toc-section">rememberEmittedTypeInfo
<li><a class="reference" href="#rememberEmittedTypeInfo%2CModuleGraph%2CFileIndex%2Cstring" title="rememberEmittedTypeInfo(g: ModuleGraph; m: FileIndex; ti: string)">rememberEmittedTypeInfo(g: ModuleGraph; m: FileIndex; ti: string)</a></li>
</ul>
<ul class="simple nested-toc-section">rememberFlag
<li><a class="reference" href="#rememberFlag%2CModuleGraph%2CPSym%2CModuleBackendFlag" title="rememberFlag(g: ModuleGraph; m: PSym; flag: ModuleBackendFlag)">rememberFlag(g: ModuleGraph; m: PSym; flag: ModuleBackendFlag)</a></li>
</ul>
<ul class="simple nested-toc-section">resetAllModules
<li><a class="reference" href="#resetAllModules%2CModuleGraph" title="resetAllModules(g: ModuleGraph)">resetAllModules(g: ModuleGraph)</a></li>
</ul>
<ul class="simple nested-toc-section">resetForBackend
<li><a class="reference" href="#resetForBackend%2CModuleGraph" title="resetForBackend(g: ModuleGraph)">resetForBackend(g: ModuleGraph)</a></li>
</ul>
<ul class="simple nested-toc-section">resolveAttachedOp
<li><a class="reference" href="#resolveAttachedOp%2CModuleGraph%2CLazySym" title="resolveAttachedOp(g: ModuleGraph; t: var LazySym): PSym">resolveAttachedOp(g: ModuleGraph; t: var LazySym): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">setAttachedOp
<li><a class="reference" href="#setAttachedOp%2CModuleGraph%2Cint%2CPType%2CTTypeAttachedOp%2CPSym" title="setAttachedOp(g: ModuleGraph; module: int; t: PType; op: TTypeAttachedOp;
value: PSym)">setAttachedOp(g: ModuleGraph; module: int; t: PType; op: TTypeAttachedOp;
value: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">setAttachedOpPartial
<li><a class="reference" href="#setAttachedOpPartial%2CModuleGraph%2Cint%2CPType%2CTTypeAttachedOp%2CPSym" title="setAttachedOpPartial(g: ModuleGraph; module: int; t: PType; op: TTypeAttachedOp;
value: PSym)">setAttachedOpPartial(g: ModuleGraph; module: int; t: PType; op: TTypeAttachedOp;
value: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">setMethodsPerType
<li><a class="reference" href="#setMethodsPerType%2CModuleGraph%2CItemId%2Cseq%5BLazySym%5D" title="setMethodsPerType(g: ModuleGraph; id: ItemId; methods: seq[LazySym])">setMethodsPerType(g: ModuleGraph; id: ItemId; methods: seq[LazySym])</a></li>
</ul>
<ul class="simple nested-toc-section">setToStringProc
<li><a class="reference" href="#setToStringProc%2CModuleGraph%2CPType%2CPSym" title="setToStringProc(g: ModuleGraph; t: PType; value: PSym)">setToStringProc(g: ModuleGraph; t: PType; value: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">someSym
<li><a class="reference" href="#someSym%2CModuleGraph%2CPSym%2CPIdent" title="someSym(g: ModuleGraph; m: PSym; name: PIdent): PSym">someSym(g: ModuleGraph; m: PSym; name: PIdent): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">someSymAmb
<li><a class="reference" href="#someSymAmb%2CModuleGraph%2CPSym%2CPIdent%2Cbool" title="someSymAmb(g: ModuleGraph; m: PSym; name: PIdent; amb: var bool): PSym">someSymAmb(g: ModuleGraph; m: PSym; name: PIdent; amb: var bool): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">stopCompile
<li><a class="reference" href="#stopCompile%2CModuleGraph" title="stopCompile(g: ModuleGraph): bool">stopCompile(g: ModuleGraph): bool</a></li>
</ul>
<ul class="simple nested-toc-section">strTableAdds
<li><a class="reference" href="#strTableAdds%2CModuleGraph%2CPSym%2CPSym" title="strTableAdds(g: ModuleGraph; m: PSym; s: PSym)">strTableAdds(g: ModuleGraph; m: PSym; s: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">systemModuleSym
<li><a class="reference" href="#systemModuleSym%2CModuleGraph%2CPIdent" title="systemModuleSym(g: ModuleGraph; name: PIdent): PSym">systemModuleSym(g: ModuleGraph; name: PIdent): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">uniqueModuleName
<li><a class="reference" href="#uniqueModuleName%2CConfigRef%2CPSym" title="uniqueModuleName(conf: ConfigRef; m: PSym): string">uniqueModuleName(conf: ConfigRef; m: PSym): string</a></li>
</ul>
<ul class="simple nested-toc-section">unmarkAllDirty
<li><a class="reference" href="#unmarkAllDirty%2CModuleGraph" title="unmarkAllDirty(g: ModuleGraph)">unmarkAllDirty(g: ModuleGraph)</a></li>
</ul>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#15" id="65">Iterators</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">allSyms
<li><a class="reference" href="#allSyms.i%2CModuleGraph%2CPSym" title="allSyms(g: ModuleGraph; m: PSym): PSym">allSyms(g: ModuleGraph; m: PSym): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">getDispatchers
<li><a class="reference" href="#getDispatchers.i%2CModuleGraph" title="getDispatchers(g: ModuleGraph): PSym">getDispatchers(g: ModuleGraph): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">getMethodsPerType
<li><a class="reference" href="#getMethodsPerType.i%2CModuleGraph%2CPType" title="getMethodsPerType(g: ModuleGraph; t: PType): PSym">getMethodsPerType(g: ModuleGraph; t: PType): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">methodsForGeneric
<li><a class="reference" href="#methodsForGeneric.i%2CModuleGraph%2CPType" title="methodsForGeneric(g: ModuleGraph; t: PType): (int, PSym)">methodsForGeneric(g: ModuleGraph; t: PType): (int, PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">procInstCacheItems
<li><a class="reference" href="#procInstCacheItems.i%2CModuleGraph%2CPSym" title="procInstCacheItems(g: ModuleGraph; s: PSym): PInstantiation">procInstCacheItems(g: ModuleGraph; s: PSym): PInstantiation</a></li>
</ul>
<ul class="simple nested-toc-section">suggestErrorsIter
<li><a class="reference" href="#suggestErrorsIter.i%2CModuleGraph" title="suggestErrorsIter(g: ModuleGraph): Suggest">suggestErrorsIter(g: ModuleGraph): Suggest</a></li>
</ul>
<ul class="simple nested-toc-section">suggestSymbolsIter
<li><a class="reference" href="#suggestSymbolsIter.i%2CModuleGraph" title="suggestSymbolsIter(g: ModuleGraph): SymInfoPair">suggestSymbolsIter(g: ModuleGraph): SymInfoPair</a></li>
</ul>
<ul class="simple nested-toc-section">systemModuleSyms
<li><a class="reference" href="#systemModuleSyms.i%2CModuleGraph%2CPIdent" title="systemModuleSyms(g: ModuleGraph; name: PIdent): PSym">systemModuleSyms(g: ModuleGraph; name: PIdent): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">typeInstCacheItems
<li><a class="reference" href="#typeInstCacheItems.i%2CModuleGraph%2CPSym" title="typeInstCacheItems(g: ModuleGraph; s: PSym): PType">typeInstCacheItems(g: ModuleGraph; s: PSym): PType</a></li>
</ul>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#18" id="68">Templates</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">onDef
<li><a class="reference" href="#onDef.t%2CTLineInfo%2CPSym" title="onDef(info: TLineInfo; s: PSym)">onDef(info: TLineInfo; s: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">onDefResolveForward
<li><a class="reference" href="#onDefResolveForward.t%2CTLineInfo%2CPSym" title="onDefResolveForward(info: TLineInfo; s: PSym)">onDefResolveForward(info: TLineInfo; s: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">onUse
<li><a class="reference" href="#onUse.t%2CTLineInfo%2CPSym" title="onUse(info: TLineInfo; s: PSym; isGenericInstance = false)">onUse(info: TLineInfo; s: PSym; isGenericInstance = false)</a></li>
</ul>
<ul class="simple nested-toc-section">semtabAll
<li><a class="reference" href="#semtabAll.t%2CModuleGraph%2CPSym" title="semtabAll(g: ModuleGraph; m: PSym): TStrTable">semtabAll(g: ModuleGraph; m: PSym): TStrTable</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">This module implements the module graph data structure. The module graph represents a complete Nim project. Single modules can either be kept in RAM or stored in a rod-file.</p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="ast.html">ast</a>, <a class="reference external" href="astalgo.html">astalgo</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="btrees.html">btrees</a>, <a class="reference external" href="ropes.html">ropes</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="pathutils.html">pathutils</a>, <a class="reference external" href="packages.html">packages</a>, <a class="reference external" href="suggestsymdb.html">suggestsymdb</a>, <a class="reference external" href="ic/packed_ast.html">ic/packed_ast</a>, <a class="reference external" href="ic/ic.html">ic/ic</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="FullId">
<dt><pre><a href="modulegraphs.html#FullId"><span class="Identifier">FullId</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">module</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span>
<span class="Identifier">packed</span><span class="Operator">*</span><span class="Other">:</span> <a href="ic/packed_ast.html#PackedItemId"><span class="Identifier">PackedItemId</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L44" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L44" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="Iface">
<dt><pre><a href="modulegraphs.html#Iface"><span class="Identifier">Iface</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">module</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> <span class="Comment">## module this &quot;Iface&quot; belongs to</span>
<span class="Identifier">converters</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="modulegraphs.html#LazySym"><span class="Identifier">LazySym</span></a><span class="Other">]</span>
<span class="Identifier">patterns</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="modulegraphs.html#LazySym"><span class="Identifier">LazySym</span></a><span class="Other">]</span>
<span class="Identifier">pureEnums</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="modulegraphs.html#LazySym"><span class="Identifier">LazySym</span></a><span class="Other">]</span>
<span class="Identifier">uniqueName</span><span class="Operator">*</span><span class="Other">:</span> <a href="ropes.html#Rope"><span class="Identifier">Rope</span></a></pre></dt>
<dd>
data we don't want to store directly in the ast.PSym type for s.kind == skModule
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L30" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L30" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="LazyInstantiation">
<dt><pre><a href="modulegraphs.html#LazyInstantiation"><span class="Identifier">LazyInstantiation</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">module</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span>
<span class="Identifier">sym</span><span class="Operator">*</span><span class="Other">:</span> <a href="modulegraphs.html#FullId"><span class="Identifier">FullId</span></a>
<span class="Identifier">concreteTypes</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="modulegraphs.html#FullId"><span class="Identifier">FullId</span></a><span class="Other">]</span>
<span class="Identifier">inst</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#PInstantiation"><span class="Identifier">PInstantiation</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L52" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L52" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="LazySym">
<dt><pre><a href="modulegraphs.html#LazySym"><span class="Identifier">LazySym</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">id</span><span class="Operator">*</span><span class="Other">:</span> <a href="modulegraphs.html#FullId"><span class="Identifier">FullId</span></a>
<span class="Identifier">sym</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L26" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L26" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="LazyType">
<dt><pre><a href="modulegraphs.html#LazyType"><span class="Identifier">LazyType</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">id</span><span class="Operator">*</span><span class="Other">:</span> <a href="modulegraphs.html#FullId"><span class="Identifier">FullId</span></a>
<span class="Identifier">typ</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L48" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L48" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="ModuleGraph">
<dt><pre><a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a> {.<span class="Identifier">acyclic</span>.} <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span>
<span class="Identifier">ifaces</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="modulegraphs.html#Iface"><span class="Identifier">Iface</span></a><span class="Other">]</span> <span class="Comment">## indexed by int32 fileIdx</span>
<span class="Identifier">packed</span><span class="Operator">*</span><span class="Other">:</span> <a href="ic/ic.html#PackedModuleGraph"><span class="Identifier">PackedModuleGraph</span></a>
<span class="Identifier">encoders</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="ic/ic.html#PackedEncoder"><span class="Identifier">PackedEncoder</span></a><span class="Other">]</span>
<span class="Identifier">typeInstCache</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><a href="ast.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">,</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="modulegraphs.html#LazyType"><span class="Identifier">LazyType</span></a><span class="Other">]</span><span class="Other">]</span>
<span class="Identifier">procInstCache</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><a href="ast.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">,</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="modulegraphs.html#LazyInstantiation"><span class="Identifier">LazyInstantiation</span></a><span class="Other">]</span><span class="Other">]</span>
<span class="Identifier">attachedOps</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">array</span><span class="Other">[</span><span class="Identifier">TTypeAttachedOp</span><span class="Other">,</span> <span class="Identifier">Table</span><span class="Other">[</span><a href="ast.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">,</span> <a href="modulegraphs.html#LazySym"><span class="Identifier">LazySym</span></a><span class="Other">]</span><span class="Other">]</span>
<span class="Identifier">methodsPerGenericType</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><a href="ast.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">,</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Other">(</span><span class="Identifier">int</span><span class="Other">,</span> <a href="modulegraphs.html#LazySym"><span class="Identifier">LazySym</span></a><span class="Other">)</span><span class="Other">]</span><span class="Other">]</span>
<span class="Identifier">memberProcsPerType</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><a href="ast.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">,</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">]</span><span class="Other">]</span>
<span class="Identifier">initializersPerType</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><a href="ast.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">,</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">]</span>
<span class="Identifier">enumToStringProcs</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><a href="ast.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">,</span> <a href="modulegraphs.html#LazySym"><span class="Identifier">LazySym</span></a><span class="Other">]</span>
<span class="Identifier">emittedTypeInfo</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">,</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">]</span>
<span class="Identifier">startupPackedConfig</span><span class="Operator">*</span><span class="Other">:</span> <a href="ic/ic.html#PackedConfig"><span class="Identifier">PackedConfig</span></a>
<span class="Identifier">packageSyms</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#TStrTable"><span class="Identifier">TStrTable</span></a>
<span class="Identifier">deps</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">IntSet</span>
<span class="Identifier">importDeps</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">,</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">]</span><span class="Other">]</span>
<span class="Identifier">suggestMode</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">interactive</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">withinSystem</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">inclToMod</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">,</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">]</span>
<span class="Identifier">importStack</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">]</span>
<span class="Identifier">backend</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">RootRef</span>
<span class="Identifier">config</span><span class="Operator">*</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</span></a>
<span class="Identifier">cache</span><span class="Operator">*</span><span class="Other">:</span> <a href="idents.html#IdentCache"><span class="Identifier">IdentCache</span></a>
<span class="Identifier">vm</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">RootRef</span>
<span class="Identifier">repl</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">RootRef</span>
<span class="Identifier">doStopCompile</span><span class="Operator">*</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">closure</span>.}
<span class="Identifier">usageSym</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a>
<span class="Identifier">owners</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">]</span>
<span class="Identifier">suggestSymbols</span><span class="Operator">*</span><span class="Other">:</span> <a href="suggestsymdb.html#SuggestSymbolDatabase"><span class="Identifier">SuggestSymbolDatabase</span></a>
<span class="Identifier">suggestErrors</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">,</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="options.html#Suggest"><span class="Identifier">Suggest</span></a><span class="Other">]</span><span class="Other">]</span>
<span class="Identifier">methods</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">methods</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">dispatcher</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">]</span><span class="Other">]</span>
<span class="Identifier">bucketTable</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">CountTable</span><span class="Other">[</span><a href="ast.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">]</span>
<span class="Identifier">objectTree</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><a href="ast.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">,</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">depth</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">,</span> <span class="Identifier">value</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">]</span><span class="Other">]</span><span class="Other">]</span>
<span class="Identifier">methodsPerType</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><a href="ast.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">,</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="modulegraphs.html#LazySym"><span class="Identifier">LazySym</span></a><span class="Other">]</span><span class="Other">]</span>
<span class="Identifier">dispatchers</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="modulegraphs.html#LazySym"><span class="Identifier">LazySym</span></a><span class="Other">]</span>
<span class="Identifier">systemModule</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a>
<span class="Identifier">sysTypes</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">array</span><span class="Other">[</span><span class="Identifier">TTypeKind</span><span class="Other">,</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">]</span>
<span class="Identifier">compilerprocs</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#TStrTable"><span class="Identifier">TStrTable</span></a>
<span class="Identifier">exposed</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#TStrTable"><span class="Identifier">TStrTable</span></a>
<span class="Identifier">packageTypes</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#TStrTable"><span class="Identifier">TStrTable</span></a>
<span class="Identifier">emptyNode</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a>
<span class="Identifier">canonTypes</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><a href="modulegraphs.html#SigHash"><span class="Identifier">SigHash</span></a><span class="Other">,</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">]</span>
<span class="Identifier">symBodyHashes</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">,</span> <a href="modulegraphs.html#SigHash"><span class="Identifier">SigHash</span></a><span class="Other">]</span>
<span class="Identifier">importModuleCallback</span><span class="Operator">*</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">graph</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">fileIdx</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.
<span class="Identifier">nimcall</span>.}
<span class="Identifier">includeFileCallback</span><span class="Operator">*</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">graph</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">fileIdx</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a> {.
<span class="Identifier">nimcall</span>.}
<span class="Identifier">cacheSeqs</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">,</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">]</span>
<span class="Identifier">cacheCounters</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">BiggestInt</span><span class="Other">]</span>
<span class="Identifier">cacheTables</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">,</span> <a href="btrees.html#BTree"><span class="Identifier">BTree</span></a><span class="Other">[</span><span class="Identifier">string</span><span class="Other">,</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">]</span><span class="Other">]</span>
<span class="Identifier">passes</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="modulegraphs.html#TPass"><span class="Identifier">TPass</span></a><span class="Other">]</span>
<span class="Identifier">pipelinePass</span><span class="Operator">*</span><span class="Other">:</span> <a href="modulegraphs.html#PipelinePass"><span class="Identifier">PipelinePass</span></a>
<span class="Identifier">onDefinition</span><span class="Operator">*</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">graph</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">info</span><span class="Other">:</span> <a href="lineinfos.html#TLineInfo"><span class="Identifier">TLineInfo</span></a><span class="Other">)</span> {.<span class="Identifier">nimcall</span>.}
<span class="Identifier">onDefinitionResolveForward</span><span class="Operator">*</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">graph</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span>
<span class="Identifier">info</span><span class="Other">:</span> <a href="lineinfos.html#TLineInfo"><span class="Identifier">TLineInfo</span></a><span class="Other">)</span> {.<span class="Identifier">nimcall</span>.}
<span class="Identifier">onUsage</span><span class="Operator">*</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">graph</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">info</span><span class="Other">:</span> <a href="lineinfos.html#TLineInfo"><span class="Identifier">TLineInfo</span></a><span class="Other">)</span> {.<span class="Identifier">nimcall</span>.}
<span class="Identifier">globalDestructors</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">]</span>
<span class="Identifier">strongSemCheck</span><span class="Operator">*</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">graph</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">owner</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">body</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span> {.<span class="Identifier">nimcall</span>.}
<span class="Identifier">compatibleProps</span><span class="Operator">*</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">graph</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">formal</span><span class="Other">,</span> <span class="Identifier">actual</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.
<span class="Identifier">nimcall</span>.}
<span class="Identifier">idgen</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#IdGenerator"><span class="Identifier">IdGenerator</span></a>
<span class="Identifier">operators</span><span class="Operator">*</span><span class="Other">:</span> <a href="modulegraphs.html#Operators"><span class="Identifier">Operators</span></a>
<span class="Identifier">cachedFiles</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">StringTableRef</span>
<span class="Identifier">procGlobals</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L71" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L71" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="ModuleIter">
<dt><pre><a href="modulegraphs.html#ModuleIter"><span class="Identifier">ModuleIter</span></a> <span class="Other">=</span> <span class="Keyword">object</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L238" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L238" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="Operators">
<dt><pre><a href="modulegraphs.html#Operators"><span class="Identifier">Operators</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">opNot</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">opContains</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">opLe</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">opLt</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">opAnd</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">opOr</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">opIsNil</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">opEq</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a>
<span class="Identifier">opAdd</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">opSub</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">opMul</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">opDiv</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">opLen</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L40" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L40" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="PipelinePass">
<dt><pre><a href="modulegraphs.html#PipelinePass"><span class="Identifier">PipelinePass</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">NonePass</span><span class="Other">,</span> <span class="Identifier">SemPass</span><span class="Other">,</span> <span class="Identifier">JSgenPass</span><span class="Other">,</span> <span class="Identifier">CgenPass</span><span class="Other">,</span> <span class="Identifier">NifgenPass</span><span class="Other">,</span> <span class="Identifier">EvalPass</span><span class="Other">,</span> <span class="Identifier">InterpreterPass</span><span class="Other">,</span>
<span class="Identifier">GenDependPass</span><span class="Other">,</span> <span class="Identifier">Docgen2TexPass</span><span class="Other">,</span> <span class="Identifier">Docgen2JsonPass</span><span class="Other">,</span> <span class="Identifier">Docgen2Pass</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L58" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L58" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="PPassContext">
<dt><pre><a href="modulegraphs.html#PPassContext"><span class="Identifier">PPassContext</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <a href="modulegraphs.html#TPassContext"><span class="Identifier">TPassContext</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L144" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L144" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="SigHash">
<dt><pre><a href="modulegraphs.html#SigHash"><span class="Identifier">SigHash</span></a> <span class="Other">=</span> <span class="Keyword">distinct</span> <span class="Identifier">MD5Digest</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L24" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L24" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TPass">
<dt><pre><a href="modulegraphs.html#TPass"><span class="Identifier">TPass</span></a> <span class="Other">=</span> <span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">open</span><span class="Other">:</span> <a href="modulegraphs.html#TPassOpen"><span class="Identifier">TPassOpen</span></a><span class="Other">,</span> <span class="Identifier">process</span><span class="Other">:</span> <a href="modulegraphs.html#TPassProcess"><span class="Identifier">TPassProcess</span></a><span class="Other">,</span> <span class="Identifier">close</span><span class="Other">:</span> <a href="modulegraphs.html#TPassClose"><span class="Identifier">TPassClose</span></a><span class="Other">,</span>
<span class="Identifier">isFrontend</span><span class="Other">:</span> <span class="Identifier">bool</span><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L150" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L150" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TPassClose">
<dt><pre><a href="modulegraphs.html#TPassClose"><span class="Identifier">TPassClose</span></a> <span class="Other">=</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">graph</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">p</span><span class="Other">:</span> <a href="modulegraphs.html#PPassContext"><span class="Identifier">PPassContext</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a> {.
<span class="Identifier">nimcall</span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L147" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L147" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TPassContext">
<dt><pre><a href="modulegraphs.html#TPassContext"><span class="Identifier">TPassContext</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <span class="Identifier">RootObj</span>
<span class="Identifier">idgen</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#IdGenerator"><span class="Identifier">IdGenerator</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L142" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L142" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TPassOpen">
<dt><pre><a href="modulegraphs.html#TPassOpen"><span class="Identifier">TPassOpen</span></a> <span class="Other">=</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">graph</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">module</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">idgen</span><span class="Other">:</span> <a href="ast.html#IdGenerator"><span class="Identifier">IdGenerator</span></a><span class="Other">)</span><span class="Other">:</span> <a href="modulegraphs.html#PPassContext"><span class="Identifier">PPassContext</span></a> {.
<span class="Identifier">nimcall</span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L146" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L146" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TPassProcess">
<dt><pre><a href="modulegraphs.html#TPassProcess"><span class="Identifier">TPassProcess</span></a> <span class="Other">=</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <a href="modulegraphs.html#PPassContext"><span class="Identifier">PPassContext</span></a><span class="Other">;</span> <span class="Identifier">topLevelStmt</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a> {.<span class="Identifier">nimcall</span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L148" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L148" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="$-procs-all">
<div id="$,SigHash">
<dt><pre><span class="Keyword">proc</span> <a href="#%24%2CSigHash"><span class="Identifier">`$`</span></a><span class="Other">(</span><span class="Identifier">u</span><span class="Other">:</span> <a href="modulegraphs.html#SigHash"><span class="Identifier">SigHash</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L442" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L442" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="==-procs-all">
<div id="==,SigHash,SigHash">
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2CSigHash%2CSigHash"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="modulegraphs.html#SigHash"><span class="Identifier">SigHash</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L445" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L445" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addDep-procs-all">
<div id="addDep,ModuleGraph,PSym,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#addDep%2CModuleGraph%2CPSym%2CFileIndex"><span class="Identifier">addDep</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">dep</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L650" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L650" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addDispatchers-procs-all">
<div id="addDispatchers,ModuleGraph,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#addDispatchers%2CModuleGraph%2CPSym"><span class="Identifier">addDispatchers</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">value</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L382" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L382" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addIncludeDep-procs-all">
<div id="addIncludeDep,ModuleGraph,FileIndex,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#addIncludeDep%2CModuleGraph%2CFileIndex%2CFileIndex"><span class="Identifier">addIncludeDep</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">module</span><span class="Other">,</span> <span class="Identifier">includeFile</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L658" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L658" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addMethodToGeneric-procs-all">
<div id="addMethodToGeneric,ModuleGraph,int,PType,int,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#addMethodToGeneric%2CModuleGraph%2Cint%2CPType%2Cint%2CPSym"><span class="Identifier">addMethodToGeneric</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">module</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">;</span> <span class="Identifier">col</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L411" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L411" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="belongsToStdlib-procs-all">
<div id="belongsToStdlib,ModuleGraph,PSym">
<dt><pre><span class="Keyword">func</span> <a href="#belongsToStdlib%2CModuleGraph%2CPSym"><span class="Identifier">belongsToStdlib</span></a><span class="Other">(</span><span class="Identifier">graph</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">sym</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Check if symbol belongs to the 'stdlib' package.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L767" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L767" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="closeRodFile-procs-all">
<div id="closeRodFile,ModuleGraph,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#closeRodFile%2CModuleGraph%2CPSym"><span class="Identifier">closeRodFile</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span>
<span class="Identifier">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadEnvEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L631" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L631" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="completePartialOp-procs-all">
<div id="completePartialOp,ModuleGraph,int,PType,TTypeAttachedOp,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#completePartialOp%2CModuleGraph%2Cint%2CPType%2CTTypeAttachedOp%2CPSym"><span class="Identifier">completePartialOp</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">module</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">;</span>
<span class="Identifier">op</span><span class="Other">:</span> <a href="ast.html#TTypeAttachedOp"><span class="Identifier">TTypeAttachedOp</span></a><span class="Other">;</span> <span class="Identifier">value</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L371" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L371" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="configComplete-procs-all">
<div id="configComplete,ModuleGraph">
<dt><pre><span class="Keyword">proc</span> <a href="#configComplete%2CModuleGraph"><span class="Identifier">configComplete</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L743" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L743" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="copyTypeProps-procs-all">
<div id="copyTypeProps,ModuleGraph,int,PType,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#copyTypeProps%2CModuleGraph%2Cint%2CPType%2CPType"><span class="Identifier">copyTypeProps</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">module</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">dest</span><span class="Other">,</span> <span class="Identifier">src</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L418" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L418" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="createMagic-procs-all">
<div id="createMagic,ModuleGraph,IdGenerator,string,TMagic">
<dt><pre><span class="Keyword">proc</span> <a href="#createMagic%2CModuleGraph%2CIdGenerator%2Cstring%2CTMagic"><span class="Identifier">createMagic</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">idgen</span><span class="Other">:</span> <a href="ast.html#IdGenerator"><span class="Identifier">IdGenerator</span></a><span class="Other">;</span> <span class="Identifier">name</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#TMagic"><span class="Identifier">TMagic</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L470" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L470" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="fileSymbols-procs-all">
<div id="fileSymbols,ModuleGraph,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#fileSymbols%2CModuleGraph%2CFileIndex"><span class="Identifier">fileSymbols</span></a><span class="Other">(</span><span class="Identifier">graph</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">fileIdx</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">)</span><span class="Other">:</span> <a href="suggestsymdb.html#SuggestFileSymbolDatabase"><span class="Identifier">SuggestFileSymbolDatabase</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L771" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L771" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getAttachedOp-procs-all">
<div id="getAttachedOp,ModuleGraph,PType,TTypeAttachedOp">
<dt><pre><span class="Keyword">proc</span> <a href="#getAttachedOp%2CModuleGraph%2CPType%2CTTypeAttachedOp"><span class="Identifier">getAttachedOp</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">;</span> <span class="Identifier">op</span><span class="Other">:</span> <a href="ast.html#TTypeAttachedOp"><span class="Identifier">TTypeAttachedOp</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
returns the requested attached operation for type <tt class="docutils literal"><span class="pre"><span class="Identifier">t</span></span></tt>. Can return nil if no such operation exists.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L355" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L355" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getBody-procs-all">
<div id="getBody,ModuleGraph,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#getBody%2CModuleGraph%2CPSym"><span class="Identifier">getBody</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L728" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L728" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getModule-procs-all">
<div id="getModule,ModuleGraph,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#getModule%2CModuleGraph%2CFileIndex"><span class="Identifier">getModule</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">fileIdx</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L603" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L603" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getPackage-procs-all">
<div id="getPackage,ModuleGraph,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#getPackage%2CModuleGraph%2CFileIndex"><span class="Identifier">getPackage</span></a><span class="Other">(</span><span class="Identifier">graph</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">fileIdx</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Returns a package symbol for yet to be defined module for fileIdx. The package symbol is added to the graph if it doesn't exist.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L756" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L756" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getToStringProc-procs-all">
<div id="getToStringProc,ModuleGraph,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#getToStringProc%2CModuleGraph%2CPType"><span class="Identifier">getToStringProc</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L399" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L399" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="hasDisabledAsgn-procs-all">
<div id="hasDisabledAsgn,ModuleGraph,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#hasDisabledAsgn%2CModuleGraph%2CPType"><span class="Identifier">hasDisabledAsgn</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L414" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L414" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="hash-procs-all">
<div id="hash,SigHash">
<dt><pre><span class="Keyword">proc</span> <a href="#hash%2CSigHash"><span class="Identifier">hash</span></a><span class="Other">(</span><span class="Identifier">u</span><span class="Other">:</span> <a href="modulegraphs.html#SigHash"><span class="Identifier">SigHash</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Hash</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L448" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L448" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="hash,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#hash%2CFileIndex"><span class="Identifier">hash</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Hash</span> {.<span class="Identifier">borrow</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L453" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L453" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="initEncoder-procs-all">
<div id="initEncoder,ModuleGraph,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#initEncoder%2CModuleGraph%2CPSym"><span class="Identifier">initEncoder</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">module</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L230" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L230" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="initModuleIter-procs-all">
<div id="initModuleIter,ModuleIter,ModuleGraph,PSym,PIdent">
<dt><pre><span class="Keyword">proc</span> <a href="#initModuleIter%2CModuleIter%2CModuleGraph%2CPSym%2CPIdent"><span class="Identifier">initModuleIter</span></a><span class="Other">(</span><span class="Identifier">mi</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="modulegraphs.html#ModuleIter"><span class="Identifier">ModuleIter</span></a><span class="Other">;</span> <span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">name</span><span class="Other">:</span> <a href="idents.html#PIdent"><span class="Identifier">PIdent</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L245" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L245" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="initOperators-procs-all">
<div id="initOperators,ModuleGraph">
<dt><pre><span class="Keyword">proc</span> <a href="#initOperators%2CModuleGraph"><span class="Identifier">initOperators</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">)</span><span class="Other">:</span> <a href="modulegraphs.html#Operators"><span class="Identifier">Operators</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L538" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L538" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="initStrTables-procs-all">
<div id="initStrTables,ModuleGraph,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#initStrTables%2CModuleGraph%2CPSym"><span class="Identifier">initStrTables</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L211" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L211" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isCachedModule-procs-all">
<div id="isCachedModule,ModuleGraph,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#isCachedModule%2CModuleGraph%2CPSym"><span class="Identifier">isCachedModule</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L222" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L222" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isDirty-procs-all">
<div id="isDirty,ModuleGraph,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#isDirty%2CModuleGraph%2CPSym"><span class="Identifier">isDirty</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L692" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L692" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="loadCompilerProc-procs-all">
<div id="loadCompilerProc,ModuleGraph,string">
<dt><pre><span class="Keyword">proc</span> <a href="#loadCompilerProc%2CModuleGraph%2Cstring"><span class="Identifier">loadCompilerProc</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">name</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L424" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L424" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="loadPackedSym-procs-all">
<div id="loadPackedSym,ModuleGraph,LazySym">
<dt><pre><span class="Keyword">proc</span> <a href="#loadPackedSym%2CModuleGraph%2CLazySym"><span class="Identifier">loadPackedSym</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="modulegraphs.html#LazySym"><span class="Identifier">LazySym</span></a><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L438" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L438" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="markClientsDirty-procs-all">
<div id="markClientsDirty,ModuleGraph,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#markClientsDirty%2CModuleGraph%2CFileIndex"><span class="Identifier">markClientsDirty</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">fileIdx</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L695" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L695" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="markDirty-procs-all">
<div id="markDirty,ModuleGraph,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#markDirty%2CModuleGraph%2CFileIndex"><span class="Identifier">markDirty</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">fileIdx</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L679" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L679" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="moduleFromRodFile-procs-all">
<div id="moduleFromRodFile,ModuleGraph,FileIndex,seq[FileIndex]">
<dt><pre><span class="Keyword">proc</span> <a href="#moduleFromRodFile%2CModuleGraph%2CFileIndex%2Cseq%5BFileIndex%5D"><span class="Identifier">moduleFromRodFile</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">fileIdx</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">;</span>
<span class="Identifier">cachedModules</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">ReadEnvEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">,</span>
<span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Returns 'nil' if the module needs to be recompiled.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L735" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L735" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="moduleOpenForCodegen-procs-all">
<div id="moduleOpenForCodegen,ModuleGraph,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#moduleOpenForCodegen%2CModuleGraph%2CFileIndex"><span class="Identifier">moduleOpenForCodegen</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L611" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L611" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="needsCompilation-procs-all">
<div id="needsCompilation,ModuleGraph">
<dt><pre><span class="Keyword">proc</span> <a href="#needsCompilation%2CModuleGraph"><span class="Identifier">needsCompilation</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L708" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L708" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="needsCompilation,ModuleGraph,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#needsCompilation%2CModuleGraph%2CFileIndex"><span class="Identifier">needsCompilation</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">fileIdx</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L717" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L717" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="newModuleGraph-procs-all">
<div id="newModuleGraph,IdentCache,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#newModuleGraph%2CIdentCache%2CConfigRef"><span class="Identifier">newModuleGraph</span></a><span class="Other">(</span><span class="Identifier">cache</span><span class="Other">:</span> <a href="idents.html#IdentCache"><span class="Identifier">IdentCache</span></a><span class="Other">;</span> <span class="Identifier">config</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</span></a><span class="Other">)</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L584" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L584" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="nextModuleIter-procs-all">
<div id="nextModuleIter,ModuleIter,ModuleGraph">
<dt><pre><span class="Keyword">proc</span> <a href="#nextModuleIter%2CModuleIter%2CModuleGraph"><span class="Identifier">nextModuleIter</span></a><span class="Other">(</span><span class="Identifier">mi</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="modulegraphs.html#ModuleIter"><span class="Identifier">ModuleIter</span></a><span class="Other">;</span> <span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L255" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L255" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="onProcessing-procs-all">
<div id="onProcessing,ModuleGraph,FileIndex,string,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#onProcessing%2CModuleGraph%2CFileIndex%2Cstring%2CPSym"><span class="Identifier">onProcessing</span></a><span class="Other">(</span><span class="Identifier">graph</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">fileIdx</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">;</span> <span class="Identifier">moduleStatus</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">fromModule</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span>
<span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span>
<span class="Identifier">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span>
<span class="Identifier">ReadEnvEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L746" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L746" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="parentModule-procs-all">
<div id="parentModule,ModuleGraph,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#parentModule%2CModuleGraph%2CFileIndex"><span class="Identifier">parentModule</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">fileIdx</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">)</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
returns 'fileIdx' if the file belonging to this index is directly used as a module or else the module that first references this include file.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L661" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L661" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="registerModule-procs-all">
<div id="registerModule,ModuleGraph,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#registerModule%2CModuleGraph%2CPSym"><span class="Identifier">registerModule</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L521" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L521" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="registerModuleById-procs-all">
<div id="registerModuleById,ModuleGraph,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#registerModuleById%2CModuleGraph%2CFileIndex"><span class="Identifier">registerModuleById</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L535" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L535" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="rememberEmittedTypeInfo-procs-all">
<div id="rememberEmittedTypeInfo,ModuleGraph,FileIndex,string">
<dt><pre><span class="Keyword">proc</span> <a href="#rememberEmittedTypeInfo%2CModuleGraph%2CFileIndex%2Cstring"><span class="Identifier">rememberEmittedTypeInfo</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">;</span> <span class="Identifier">ti</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L617" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L617" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="rememberFlag-procs-all">
<div id="rememberFlag,ModuleGraph,PSym,ModuleBackendFlag">
<dt><pre><span class="Keyword">proc</span> <a href="#rememberFlag%2CModuleGraph%2CPSym%2CModuleBackendFlag"><span class="Identifier">rememberFlag</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">flag</span><span class="Other">:</span> <a href="ic/ic.html#ModuleBackendFlag"><span class="Identifier">ModuleBackendFlag</span></a><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L625" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L625" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="resetAllModules-procs-all">
<div id="resetAllModules,ModuleGraph">
<dt><pre><span class="Keyword">proc</span> <a href="#resetAllModules%2CModuleGraph"><span class="Identifier">resetAllModules</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L590" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L590" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="resetForBackend-procs-all">
<div id="resetForBackend,ModuleGraph">
<dt><pre><span class="Keyword">proc</span> <a href="#resetForBackend%2CModuleGraph"><span class="Identifier">resetForBackend</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L155" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L155" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="resolveAttachedOp-procs-all">
<div id="resolveAttachedOp,ModuleGraph,LazySym">
<dt><pre><span class="Keyword">proc</span> <a href="#resolveAttachedOp%2CModuleGraph%2CLazySym"><span class="Identifier">resolveAttachedOp</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="modulegraphs.html#LazySym"><span class="Identifier">LazySym</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L335" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L335" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="setAttachedOp-procs-all">
<div id="setAttachedOp,ModuleGraph,int,PType,TTypeAttachedOp,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#setAttachedOp%2CModuleGraph%2Cint%2CPType%2CTTypeAttachedOp%2CPSym"><span class="Identifier">setAttachedOp</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">module</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">;</span> <span class="Identifier">op</span><span class="Other">:</span> <a href="ast.html#TTypeAttachedOp"><span class="Identifier">TTypeAttachedOp</span></a><span class="Other">;</span>
<span class="Identifier">value</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
we also need to record this to the packed module.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L363" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L363" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="setAttachedOpPartial-procs-all">
<div id="setAttachedOpPartial,ModuleGraph,int,PType,TTypeAttachedOp,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#setAttachedOpPartial%2CModuleGraph%2Cint%2CPType%2CTTypeAttachedOp%2CPSym"><span class="Identifier">setAttachedOpPartial</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">module</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">;</span>
<span class="Identifier">op</span><span class="Other">:</span> <a href="ast.html#TTypeAttachedOp"><span class="Identifier">TTypeAttachedOp</span></a><span class="Other">;</span> <span class="Identifier">value</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
we also need to record this to the packed module.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L367" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L367" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="setMethodsPerType-procs-all">
<div id="setMethodsPerType,ModuleGraph,ItemId,seq[LazySym]">
<dt><pre><span class="Keyword">proc</span> <a href="#setMethodsPerType%2CModuleGraph%2CItemId%2Cseq%5BLazySym%5D"><span class="Identifier">setMethodsPerType</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">id</span><span class="Other">:</span> <a href="ast.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">;</span> <span class="Identifier">methods</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="modulegraphs.html#LazySym"><span class="Identifier">LazySym</span></a><span class="Other">]</span><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L390" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L390" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="setToStringProc-procs-all">
<div id="setToStringProc,ModuleGraph,PType,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#setToStringProc%2CModuleGraph%2CPType%2CPSym"><span class="Identifier">setToStringProc</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">;</span> <span class="Identifier">value</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L403" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L403" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="someSym-procs-all">
<div id="someSym,ModuleGraph,PSym,PIdent">
<dt><pre><span class="Keyword">proc</span> <a href="#someSym%2CModuleGraph%2CPSym%2CPIdent"><span class="Identifier">someSym</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">name</span><span class="Other">:</span> <a href="idents.html#PIdent"><span class="Identifier">PIdent</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L274" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L274" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="someSymAmb-procs-all">
<div id="someSymAmb,ModuleGraph,PSym,PIdent,bool">
<dt><pre><span class="Keyword">proc</span> <a href="#someSymAmb%2CModuleGraph%2CPSym%2CPIdent%2Cbool"><span class="Identifier">someSymAmb</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">name</span><span class="Other">:</span> <a href="idents.html#PIdent"><span class="Identifier">PIdent</span></a><span class="Other">;</span> <span class="Identifier">amb</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">bool</span><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L281" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L281" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="stopCompile-procs-all">
<div id="stopCompile,ModuleGraph">
<dt><pre><span class="Keyword">proc</span> <a href="#stopCompile%2CModuleGraph"><span class="Identifier">stopCompile</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L467" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L467" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="strTableAdds-procs-all">
<div id="strTableAdds,ModuleGraph,PSym,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#strTableAdds%2CModuleGraph%2CPSym%2CPSym"><span class="Identifier">strTableAdds</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L215" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L215" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="systemModuleSym-procs-all">
<div id="systemModuleSym,ModuleGraph,PIdent">
<dt><pre><span class="Keyword">proc</span> <a href="#systemModuleSym%2CModuleGraph%2CPIdent"><span class="Identifier">systemModuleSym</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">name</span><span class="Other">:</span> <a href="idents.html#PIdent"><span class="Identifier">PIdent</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L300" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L300" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="uniqueModuleName-procs-all">
<div id="uniqueModuleName,ConfigRef,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#uniqueModuleName%2CConfigRef%2CPSym"><span class="Identifier">uniqueModuleName</span></a><span class="Other">(</span><span class="Identifier">conf</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
The unique module name is guaranteed to only contain {'A'..'Z', 'a'..'z', '0'..'9', '_'} so that it is useful as a C identifier snippet.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L478" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L478" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="unmarkAllDirty-procs-all">
<div id="unmarkAllDirty,ModuleGraph">
<dt><pre><span class="Keyword">proc</span> <a href="#unmarkAllDirty%2CModuleGraph"><span class="Identifier">unmarkAllDirty</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L686" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L686" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
</dl>
</div>
<div class="section" id="15">
<h1><a class="toc-backref" href="#15">Iterators</a></h1>
<dl class="item">
<div id="allSyms-iterators-all">
<div id="allSyms.i,ModuleGraph,PSym">
<dt><pre><span class="Keyword">iterator</span> <a href="#allSyms.i%2CModuleGraph%2CPSym"><span class="Identifier">allSyms</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L261" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L261" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getDispatchers-iterators-all">
<div id="getDispatchers.i,ModuleGraph">
<dt><pre><span class="Keyword">iterator</span> <a href="#getDispatchers.i%2CModuleGraph"><span class="Identifier">getDispatchers</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L378" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L378" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getMethodsPerType-iterators-all">
<div id="getMethodsPerType.i,ModuleGraph,PType">
<dt><pre><span class="Keyword">iterator</span> <a href="#getMethodsPerType.i%2CModuleGraph%2CPType"><span class="Identifier">getMethodsPerType</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L394" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L394" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="methodsForGeneric-iterators-all">
<div id="methodsForGeneric.i,ModuleGraph,PType">
<dt><pre><span class="Keyword">iterator</span> <a href="#methodsForGeneric.i%2CModuleGraph%2CPType"><span class="Identifier">methodsForGeneric</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Other">(</span><span class="Identifier">int</span><span class="Other">,</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L406" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L406" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="procInstCacheItems-iterators-all">
<div id="procInstCacheItems.i,ModuleGraph,PSym">
<dt><pre><span class="Keyword">iterator</span> <a href="#procInstCacheItems.i%2CModuleGraph%2CPSym"><span class="Identifier">procInstCacheItems</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PInstantiation"><span class="Identifier">PInstantiation</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L348" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L348" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="suggestErrorsIter-iterators-all">
<div id="suggestErrorsIter.i,ModuleGraph">
<dt><pre><span class="Keyword">iterator</span> <a href="#suggestErrorsIter.i%2CModuleGraph"><span class="Identifier">suggestErrorsIter</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">)</span><span class="Other">:</span> <a href="options.html#Suggest"><span class="Identifier">Suggest</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L780" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L780" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="suggestSymbolsIter-iterators-all">
<div id="suggestSymbolsIter.i,ModuleGraph">
<dt><pre><span class="Keyword">iterator</span> <a href="#suggestSymbolsIter.i%2CModuleGraph"><span class="Identifier">suggestSymbolsIter</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">)</span><span class="Other">:</span> <a href="suggestsymdb.html#SymInfoPair"><span class="Identifier">SymInfoPair</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L775" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L775" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="systemModuleSyms-iterators-all">
<div id="systemModuleSyms.i,ModuleGraph,PIdent">
<dt><pre><span class="Keyword">iterator</span> <a href="#systemModuleSyms.i%2CModuleGraph%2CPIdent"><span class="Identifier">systemModuleSyms</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">name</span><span class="Other">:</span> <a href="idents.html#PIdent"><span class="Identifier">PIdent</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L303" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L303" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="typeInstCacheItems-iterators-all">
<div id="typeInstCacheItems.i,ModuleGraph,PSym">
<dt><pre><span class="Keyword">iterator</span> <a href="#typeInstCacheItems.i%2CModuleGraph%2CPSym"><span class="Identifier">typeInstCacheItems</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L342" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L342" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
</dl>
</div>
<div class="section" id="18">
<h1><a class="toc-backref" href="#18">Templates</a></h1>
<dl class="item">
<div id="onDef-templates-all">
<div id="onDef.t,TLineInfo,PSym">
<dt><pre><span class="Keyword">template</span> <a href="#onDef.t%2CTLineInfo%2CPSym"><span class="Identifier">onDef</span></a><span class="Other">(</span><span class="Identifier">info</span><span class="Other">:</span> <a href="lineinfos.html#TLineInfo"><span class="Identifier">TLineInfo</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L464" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L464" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="onDefResolveForward-templates-all">
<div id="onDefResolveForward.t,TLineInfo,PSym">
<dt><pre><span class="Keyword">template</span> <a href="#onDefResolveForward.t%2CTLineInfo%2CPSym"><span class="Identifier">onDefResolveForward</span></a><span class="Other">(</span><span class="Identifier">info</span><span class="Other">:</span> <a href="lineinfos.html#TLineInfo"><span class="Identifier">TLineInfo</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L465" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L465" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="onUse-templates-all">
<div id="onUse.t,TLineInfo,PSym">
<dt><pre><span class="Keyword">template</span> <a href="#onUse.t%2CTLineInfo%2CPSym"><span class="Identifier">onUse</span></a><span class="Other">(</span><span class="Identifier">info</span><span class="Other">:</span> <a href="lineinfos.html#TLineInfo"><span class="Identifier">TLineInfo</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">isGenericInstance</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">)</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L463" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L463" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="semtabAll-templates-all">
<div id="semtabAll.t,ModuleGraph,PSym">
<dt><pre><span class="Keyword">template</span> <a href="#semtabAll.t%2CModuleGraph%2CPSym"><span class="Identifier">semtabAll</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#TStrTable"><span class="Identifier">TStrTable</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/modulegraphs.nim#L208" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/modulegraphs.nim#L208" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2025-09-27 04:02:28 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>