Deploy to GitHub pages

This commit is contained in:
github-actions[bot]
2026-07-10 18:29:17 +00:00
committed by GitHub
commit b657a89fb8
882 changed files with 354213 additions and 0 deletions

223
compiler/aliasanalysis.html Normal file
View File

@@ -0,0 +1,223 @@
<?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>aliasanalysis</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">aliasanalysis</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="#AliasKind" title="AliasKind = enum
yes, no, maybe">AliasKind</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#10" id="60">Consts</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#PathKinds0" title="PathKinds0 = {nkDotExpr, nkCheckedFieldExpr, nkBracketExpr, nkDerefExpr,
nkHiddenDeref, nkAddr, nkHiddenAddr, nkObjDownConv, nkObjUpConv}">PathKinds0</a></li>
<li><a class="reference" href="#PathKinds1" title="PathKinds1 = {nkHiddenStdConv, nkHiddenSubConv}">PathKinds1</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">aliases
<li><a class="reference" href="#aliases%2CPNode%2CPNode" title="aliases(obj, field: PNode): AliasKind">aliases(obj, field: PNode): AliasKind</a></li>
</ul>
<ul class="simple nested-toc-section">isAnalysableFieldAccess
<li><a class="reference" href="#isAnalysableFieldAccess%2CPNode%2CPSym" title="isAnalysableFieldAccess(orig: PNode; owner: PSym): bool">isAnalysableFieldAccess(orig: PNode; owner: PSym): bool</a></li>
</ul>
<ul class="simple nested-toc-section">skipConvDfa
<li><a class="reference" href="#skipConvDfa%2CPNode" title="skipConvDfa(n: PNode): PNode">skipConvDfa(n: PNode): PNode</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/aliasanalysis.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/aliasanalysis.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></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>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="AliasKind">
<dt><pre><a href="#AliasKind"><span class="Identifier">AliasKind</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">yes</span><span class="Other">,</span> <span class="Identifier">no</span><span class="Other">,</span> <span class="Identifier">maybe</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/aliasanalysis.nim#L56" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/aliasanalysis.nim#L56" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</dl>
</div>
<div class="section" id="10">
<h1><a class="toc-backref" href="#10">Consts</a></h1>
<dl class="item">
<div id="PathKinds0">
<dt><pre><a href="#PathKinds0"><span class="Identifier">PathKinds0</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">nkDotExpr</span><span class="Other">,</span> <span class="DecNumber">nkCheckedFieldExpr</span><span class="Other">,</span> <span class="DecNumber">nkBracketExpr</span><span class="Other">,</span> <span class="DecNumber">nkDerefExpr</span><span class="Other">,</span>
<span class="DecNumber">nkHiddenDeref</span><span class="Other">,</span> <span class="DecNumber">nkAddr</span><span class="Other">,</span> <span class="DecNumber">nkHiddenAddr</span><span class="Other">,</span> <span class="DecNumber">nkObjDownConv</span><span class="Other">,</span> <span class="DecNumber">nkObjUpConv</span><span class="Other">}</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/aliasanalysis.nim#L7" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/aliasanalysis.nim#L7" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="PathKinds1">
<dt><pre><a href="#PathKinds1"><span class="Identifier">PathKinds1</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">nkHiddenStdConv</span><span class="Other">,</span> <span class="DecNumber">nkHiddenSubConv</span><span class="Other">}</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/aliasanalysis.nim#L11" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/aliasanalysis.nim#L11" 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="aliases-procs-all">
<div id="aliases,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#aliases%2CPNode%2CPNode"><span class="Identifier">aliases</span></a><span class="Other">(</span><span class="Identifier">obj</span><span class="Other">,</span> <span class="Identifier">field</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="#AliasKind"><span class="Identifier">AliasKind</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/aliasanalysis.nim#L59" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/aliasanalysis.nim#L59" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isAnalysableFieldAccess-procs-all">
<div id="isAnalysableFieldAccess,PNode,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#isAnalysableFieldAccess%2CPNode%2CPSym"><span class="Identifier">isAnalysableFieldAccess</span></a><span class="Other">(</span><span class="Identifier">orig</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">owner</span><span class="Other">:</span> <a href="astdef.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="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/aliasanalysis.nim#L23" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/aliasanalysis.nim#L23" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="skipConvDfa-procs-all">
<div id="skipConvDfa,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#skipConvDfa%2CPNode"><span class="Identifier">skipConvDfa</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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/aliasanalysis.nim#L13" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/aliasanalysis.nim#L13" 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: 2026-07-10 18:29:09 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

View File

@@ -0,0 +1,10 @@
nimTitle aliasanalysis aliasanalysis.html module aliasanalysis 0
nim PathKinds0 aliasanalysis.html#PathKinds0 const PathKinds0 7
nim PathKinds1 aliasanalysis.html#PathKinds1 const PathKinds1 11
nim skipConvDfa aliasanalysis.html#skipConvDfa,PNode proc skipConvDfa(n: PNode): PNode 13
nim isAnalysableFieldAccess aliasanalysis.html#isAnalysableFieldAccess,PNode,PSym proc isAnalysableFieldAccess(orig: PNode; owner: PSym): bool 23
nim yes aliasanalysis.html#yes AliasKind.yes 56
nim no aliasanalysis.html#no AliasKind.no 56
nim maybe aliasanalysis.html#maybe AliasKind.maybe 56
nim AliasKind aliasanalysis.html#AliasKind enum AliasKind 56
nim aliases aliasanalysis.html#aliases,PNode,PNode proc aliases(obj, field: PNode): AliasKind 59

169
compiler/aliases.html Normal file
View File

@@ -0,0 +1,169 @@
<?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>aliases</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">aliases</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="#TAnalysisResult" title="TAnalysisResult = enum
arNo, arMaybe, arYes">TAnalysisResult</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">isPartOf
<li><a class="reference" href="#isPartOf%2CPNode%2CPNode" title="isPartOf(a, b: PNode): TAnalysisResult">isPartOf(a, b: PNode): TAnalysisResult</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/aliases.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/aliases.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">Simple alias analysis for the HLO and the code generators.</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="types.html">types</a>, <a class="reference external" href="trees.html">trees</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="TAnalysisResult">
<dt><pre><a href="#TAnalysisResult"><span class="Identifier">TAnalysisResult</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">arNo</span><span class="Other">,</span> <span class="Identifier">arMaybe</span><span class="Other">,</span> <span class="Identifier">arYes</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/aliases.nim#L21" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/aliases.nim#L21" 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="isPartOf-procs-all">
<div id="isPartOf,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#isPartOf%2CPNode%2CPNode"><span class="Identifier">isPartOf</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="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="#TAnalysisResult"><span class="Identifier">TAnalysisResult</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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>
<p>checks if location <tt class="docutils literal"><span class="pre"><span class="Identifier">a</span></span></tt> can be part of location <tt class="docutils literal"><span class="pre"><span class="Identifier">b</span></span></tt>. We treat seqs and strings as pointers because the code gen often just passes them as such.</p>
<p>Note: <tt class="docutils literal"><span class="pre"><span class="Identifier">a</span></span></tt> can only be part of <tt class="docutils literal"><span class="pre"><span class="Identifier">b</span></span></tt>, if <tt class="docutils literal"><span class="pre"><span class="Identifier">a</span></span></tt>'s type can be part of <tt class="docutils literal"><span class="pre"><span class="Identifier">b</span></span></tt>'s type. Since however type analysis is more expensive, we perform it only if necessary.</p>
<p>cases:</p>
<p>YES-cases:</p>
<p><pre class="listing"><span class="Identifier">x</span> <span class="Operator">&lt;|</span> <span class="Identifier">x</span> <span class="Comment"># for general trees</span>
<span class="Identifier">x</span><span class="Punctuation">[</span><span class="Punctuation">]</span> <span class="Operator">&lt;|</span> <span class="Identifier">x</span>
<span class="Identifier">x</span><span class="Punctuation">[</span><span class="Identifier">i</span><span class="Punctuation">]</span> <span class="Operator">&lt;|</span> <span class="Identifier">x</span>
<span class="Identifier">x</span><span class="Operator">.</span><span class="Identifier">f</span> <span class="Operator">&lt;|</span> <span class="Identifier">x</span></pre></p>
<p>NO-cases:</p>
<p><pre class="listing"><span class="Identifier">x</span> <span class="Operator">!&lt;|</span> <span class="Identifier">y</span> <span class="Comment"># depending on type and symbol kind</span>
<span class="Identifier">x</span><span class="Punctuation">[</span><span class="Identifier">constA</span><span class="Punctuation">]</span> <span class="Operator">!&lt;|</span> <span class="Identifier">x</span><span class="Punctuation">[</span><span class="Identifier">constB</span><span class="Punctuation">]</span>
<span class="Identifier">x</span><span class="Operator">.</span><span class="Identifier">f</span> <span class="Operator">!&lt;|</span> <span class="Identifier">x</span><span class="Operator">.</span><span class="Identifier">g</span>
<span class="Identifier">x</span><span class="Operator">.</span><span class="Identifier">f</span> <span class="Operator">!&lt;|</span> <span class="Identifier">y</span><span class="Operator">.</span><span class="Identifier">f</span> <span class="Identifier">iff</span> <span class="Identifier">x</span> <span class="Operator">!&lt;=</span> <span class="Identifier">y</span></pre></p>
<p>MAYBE-cases:</p>
<p><pre class="listing"><span class="Identifier">x</span><span class="Punctuation">[</span><span class="Punctuation">]</span> <span class="Operator">?&lt;|</span> <span class="Identifier">y</span><span class="Punctuation">[</span><span class="Punctuation">]</span> <span class="Identifier">iff</span> <span class="Identifier">compatible</span> <span class="Keyword">type</span>
<span class="Identifier">x</span><span class="Punctuation">[</span><span class="Punctuation">]</span> <span class="Operator">?&lt;|</span> <span class="Identifier">y</span> <span class="Identifier">depending</span> <span class="Identifier">on</span> <span class="Keyword">type</span></pre></p>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/aliases.nim#L73" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/aliases.nim#L73" 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: 2026-07-10 18:29:10 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

6
compiler/aliases.idx Normal file
View File

@@ -0,0 +1,6 @@
nimTitle aliases aliases.html module aliases 0
nim arNo aliases.html#arNo TAnalysisResult.arNo 21
nim arMaybe aliases.html#arMaybe TAnalysisResult.arMaybe 21
nim arYes aliases.html#arYes TAnalysisResult.arYes 21
nim TAnalysisResult aliases.html#TAnalysisResult enum TAnalysisResult 21
nim isPartOf aliases.html#isPartOf,PNode,PNode proc isPartOf(a, b: PNode): TAnalysisResult 73

5240
compiler/ast.html Normal file

File diff suppressed because one or more lines are too long

312
compiler/ast.idx Normal file
View File

@@ -0,0 +1,312 @@
nimTitle ast ast.html module ast 0
nim program ast.html#program var program 33
nim setupProgram ast.html#setupProgram,ConfigRef,IdentCache proc setupProgram(config: ConfigRef; cache: IdentCache) 35
nim setIcMainModule ast.html#setIcMainModule,FileIndex proc setIcMainModule(fileIdx: FileIndex) 39
nim loadSymCallback ast.html#loadSymCallback,PSym proc loadSymCallback(s: PSym) 56
nim loadTypeCallback ast.html#loadTypeCallback,PType proc loadTypeCallback(t: PType) 59
nim ensureMutable ast.html#ensureMutable,PSym proc ensureMutable(s: PSym) 62
nim ensureMutable ast.html#ensureMutable,PType proc ensureMutable(t: PType) 66
nim backendEnsureMutable ast.html#backendEnsureMutable,PSym proc backendEnsureMutable(s: PSym) 70
nim backendEnsureMutable ast.html#backendEnsureMutable,PType proc backendEnsureMutable(t: PType) 75
nim unsealForTransform ast.html#unsealForTransform,PType proc unsealForTransform(t: PType) 80
nim owner ast.html#owner,PSym proc owner(s: PSym): PSym 90
nim owner ast.html#owner,PType proc owner(s: PType): PSym 94
nim setOwner ast.html#setOwner,PSym,PSym proc setOwner(s: PSym; owner: PSym) 98
nim setOwner ast.html#setOwner,PType,PSym proc setOwner(s: PType; owner: PSym) 103
nim kind ast.html#kind,PSym proc kind(s: PSym): TSymKind 108
nim kind= ast.html#kind=,PSym,TSymKind proc kind=(s: PSym; val: TSymKind) 112
nim gcUnsafetyReason ast.html#gcUnsafetyReason,PSym proc gcUnsafetyReason(s: PSym): PSym 117
nim gcUnsafetyReason= ast.html#gcUnsafetyReason=,PSym,PSym proc gcUnsafetyReason=(s: PSym; val: PSym) 121
nim transformedBody ast.html#transformedBody,PSym proc transformedBody(s: PSym): PNode 126
nim transformedBody= ast.html#transformedBody=,PSym,PNode proc transformedBody=(s: PSym; val: PNode) 130
nim guard ast.html#guard,PSym proc guard(s: PSym): PSym 136
nim guard= ast.html#guard=,PSym,PSym proc guard=(s: PSym; val: PSym) 140
nim bitsize ast.html#bitsize,PSym proc bitsize(s: PSym): int 145
nim bitsize= ast.html#bitsize=,PSym,int proc bitsize=(s: PSym; val: int) 149
nim alignment ast.html#alignment,PSym proc alignment(s: PSym): int 154
nim alignment= ast.html#alignment=,PSym,int proc alignment=(s: PSym; val: int) 158
nim magic ast.html#magic,PSym proc magic(s: PSym): TMagic 163
nim magic= ast.html#magic=,PSym,TMagic proc magic=(s: PSym; val: TMagic) 167
nim typ ast.html#typ,PSym proc typ(s: PSym): PType 172
nim typ= ast.html#typ=,PSym,PType proc typ=(s: PSym; val: PType) 176
nim info ast.html#info,PSym proc info(s: PSym): TLineInfo 181
nim info= ast.html#info=,PSym,TLineInfo proc info=(s: PSym; val: TLineInfo) 185
nim flags ast.html#flags,PSym proc flags(s: PSym): TSymFlags 209
nim flags= ast.html#flags=,PSym,TSymFlags proc flags=(s: PSym; val: TSymFlags) 213
nim ast ast.html#ast,PSym proc ast(s: PSym): PNode 218
nim ast= ast.html#ast=,PSym,PNode proc ast=(s: PSym; val: PNode) 222
nim options ast.html#options,PSym proc options(s: PSym): TOptions 227
nim options= ast.html#options=,PSym,TOptions proc options=(s: PSym; val: TOptions) 231
nim position ast.html#position,PSym proc position(s: PSym): int 236
nim position= ast.html#position=,PSym,int proc position=(s: PSym; val: int) 240
nim offset ast.html#offset,PSym proc offset(s: PSym): int32 248
nim offset= ast.html#offset=,PSym,int32 proc offset=(s: PSym; val: int32) 252
nim loc ast.html#loc,PSym proc loc(s: PSym): TLoc 257
nim loc= ast.html#loc=,PSym,TLoc proc loc=(s: PSym; val: TLoc) 261
nim annex ast.html#annex,PSym proc annex(s: PSym): PLib 266
nim annex= ast.html#annex=,PSym,PLib proc annex=(s: PSym; val: PLib) 270
nim constraint ast.html#constraint,PSym proc constraint(s: PSym): PNode 285
nim constraint= ast.html#constraint=,PSym,PNode proc constraint=(s: PSym; val: PNode) 289
nim instantiatedFrom ast.html#instantiatedFrom,PSym proc instantiatedFrom(s: PSym): PSym 294
nim instantiatedFrom= ast.html#instantiatedFrom=,PSym,PSym proc instantiatedFrom=(s: PSym; val: PSym) 298
nim setSnippet ast.html#setSnippet,PSym,sinkstring proc setSnippet(s: PSym; val: sink string) 303
nim incl ast.html#incl,PSym,TSymFlag proc incl(s: PSym; flag: TSymFlag) 308
nim incl ast.html#incl,PSym,set[TSymFlag] proc incl(s: PSym; flags: set[TSymFlag]) 313
nim incl ast.html#incl,PSym,TLocFlag proc incl(s: PSym; flag: TLocFlag) 318
nim excl ast.html#excl,PSym,TSymFlag proc excl(s: PSym; flag: TSymFlag) 324
nim callConv ast.html#callConv,PType proc callConv(t: PType): TCallingConvention 343
nim callConv= ast.html#callConv=,PType,TCallingConvention proc callConv=(t: PType; val: TCallingConvention) 347
nim flags ast.html#flags,PType proc flags(t: PType): TTypeFlags 352
nim flags= ast.html#flags=,PType,TTypeFlags proc flags=(t: PType; val: TTypeFlags) 356
nim sons ast.html#sons,PType proc sons(t: PType): var TTypeSeq 361
nim sons= ast.html#sons=,PType,sinkTTypeSeq proc sons=(t: PType; val: sink TTypeSeq) 365
nim n ast.html#n,PType proc n(t: PType): PNode 370
nim n= ast.html#n=,PType,PNode proc n=(t: PType; val: PNode) 374
nim sym ast.html#sym,PType proc sym(t: PType): PSym 379
nim sym= ast.html#sym=,PType,PSym proc sym=(t: PType; val: PSym) 383
nim size ast.html#size,PType proc size(t: PType): BiggestInt 388
nim size= ast.html#size=,PType,BiggestInt proc size=(t: PType; val: BiggestInt) 392
nim align ast.html#align,PType proc align(t: PType): int16 396
nim align= ast.html#align=,PType,int16 proc align=(t: PType; val: int16) 400
nim paddingAtEnd ast.html#paddingAtEnd,PType proc paddingAtEnd(t: PType): int16 404
nim paddingAtEnd= ast.html#paddingAtEnd=,PType,int16 proc paddingAtEnd=(t: PType; val: int16) 408
nim loc ast.html#loc,PType proc loc(t: PType): TLoc 412
nim loc= ast.html#loc=,PType,TLoc proc loc=(t: PType; val: TLoc) 416
nim typeInst ast.html#typeInst,PType proc typeInst(t: PType): PType 421
nim typeInst= ast.html#typeInst=,PType,PType proc typeInst=(t: PType; val: PType) 425
nim incl ast.html#incl,PType,TTypeFlag proc incl(t: PType; flag: TTypeFlag) 430
nim incl ast.html#incl,PType,set[TTypeFlag] proc incl(t: PType; flags: set[TTypeFlag]) 435
nim excl ast.html#excl,PType,TTypeFlag proc excl(t: PType; flag: TTypeFlag) 440
nim excl ast.html#excl,PType,set[TTypeFlag] proc excl(t: PType; flags: set[TTypeFlag]) 445
nim typ ast.html#typ,PNode proc typ(n: PNode): PType 450
nim typ= ast.html#typ=,PNode,sinkPType proc typ=(n: PNode; val: sink PType) 455
nim setUseIc ast.html#setUseIc,bool proc setUseIc(useIc: bool) 468
nim comment ast.html#comment,PNode proc comment(n: PNode): string 470
nim comment= ast.html#comment=,PNode,string proc comment=(n: PNode; a: string) 483
nim getPIdent ast.html#getPIdent,PNode proc getPIdent(a: PNode): PIdent 504
nim id ast.html#id.t template id(a: PType | PSym): int 512
nim IdGenerator ast.html#IdGenerator type IdGenerator 515
nim idGeneratorFromModule ast.html#idGeneratorFromModule,PSym proc idGeneratorFromModule(m: PSym): IdGenerator 523
nim idGeneratorForBackend ast.html#idGeneratorForBackend,PSym proc idGeneratorForBackend(m: PSym): IdGenerator 528
nim idGeneratorForPackage ast.html#idGeneratorForPackage,int32 proc idGeneratorForPackage(nextIdWillBe: int32): IdGenerator 544
nim nextTypeId ast.html#nextTypeId,IdGenerator proc nextTypeId(x: IdGenerator): ItemId 561
nim ggDebug ast.html#ggDebug var ggDebug 590
nim isCallExpr ast.html#isCallExpr,PNode proc isCallExpr(n: PNode): bool 592
nim discardSons ast.html#discardSons,PNode proc discardSons(father: PNode) 595
nim safeArrLen ast.html#safeArrLen,PNode proc safeArrLen(n: PNode): int 597
nim add ast.html#add,PNode,PNode proc add(father, son: PNode) 603
nim addAllowNil ast.html#addAllowNil,PNode,PNode proc addAllowNil(father, son: PNode) 607
nim add ast.html#add,PType,PType proc add(father, son: PType) 610
nim addAllowNil ast.html#addAllowNil,PType,PType proc addAllowNil(father, son: PType) 616
nim `[]` ast.html#[],PType,int proc `[]`(n: PType; i: int): PType 621
nim `[]=` ast.html#[]=,PType,int,PType proc `[]=`(n: PType; i: int; x: PType) 629
nim `[]` ast.html#[],PType,BackwardsIndex proc `[]`(n: PType; i: BackwardsIndex): PType 637
nim `[]=` ast.html#[]=,PType,BackwardsIndex,PType proc `[]=`(n: PType; i: BackwardsIndex; x: PType) 641
nim getDeclPragma ast.html#getDeclPragma,PNode proc getDeclPragma(n: PNode): PNode 645
nim extractPragma ast.html#extractPragma,PSym proc extractPragma(s: PSym): PNode 679
nim skipPragmaExpr ast.html#skipPragmaExpr,PNode proc skipPragmaExpr(n: PNode): PNode 701
nim setInfoRecursive ast.html#setInfoRecursive,PNode,TLineInfo proc setInfoRecursive(n: PNode; info: TLineInfo) 709
nim newAtom ast.html#newAtom,PIdent,TLineInfo proc newAtom(ident: PIdent; info: TLineInfo): PNode 715
nim newAtom ast.html#newAtom,TNodeKind,BiggestInt,TLineInfo proc newAtom(kind: TNodeKind; intVal: BiggestInt; info: TLineInfo): PNode 719
nim newAtom ast.html#newAtom,TNodeKind,BiggestFloat,TLineInfo proc newAtom(kind: TNodeKind; floatVal: BiggestFloat; info: TLineInfo): PNode 723
nim newAtom ast.html#newAtom,TNodeKind,sinkstring,TLineInfo proc newAtom(kind: TNodeKind; strVal: sink string; info: TLineInfo): PNode 727
nim newTree ast.html#newTree,TNodeKind,TLineInfo,varargs[PNode] proc newTree(kind: TNodeKind; info: TLineInfo; children: varargs[PNode]): PNode 731
nim newTree ast.html#newTree,TNodeKind,varargs[PNode] proc newTree(kind: TNodeKind; children: varargs[PNode]): PNode 737
nim newTreeI ast.html#newTreeI,TNodeKind,TLineInfo,varargs[PNode] proc newTreeI(kind: TNodeKind; info: TLineInfo; children: varargs[PNode]): PNode 743
nim newTreeIT ast.html#newTreeIT,TNodeKind,TLineInfo,PType,varargs[PNode] proc newTreeIT(kind: TNodeKind; info: TLineInfo; typ: PType; children: varargs[PNode]): PNode 749
nim previouslyInferred ast.html#previouslyInferred.t,PType template previouslyInferred(t: PType): PType 755
nim newSym ast.html#newSym,TSymKind,PIdent,IdGenerator,PSym,TLineInfo,TOptions proc newSym(symKind: TSymKind; name: PIdent; idgen: IdGenerator; owner: PSym;\n info: TLineInfo; options: TOptions = {}): PSym 767
nim astdef ast.html#astdef,PSym proc astdef(s: PSym): PNode 782
nim isMetaType ast.html#isMetaType,PType proc isMetaType(t: PType): bool 790
nim isUnresolvedStatic ast.html#isUnresolvedStatic,PType proc isUnresolvedStatic(t: PType): bool 795
nim linkTo ast.html#linkTo,PType,PSym proc linkTo(t: PType; s: PSym): PType 798
nim linkTo ast.html#linkTo,PSym,PType proc linkTo(s: PSym; t: PType): PSym 803
nim fileIdx ast.html#fileIdx.t,PSym template fileIdx(c: PSym): FileIndex 808
nim filename ast.html#filename.t,PSym template filename(c: PSym): string 812
nim appendToModule ast.html#appendToModule,PSym,PNode proc appendToModule(m: PSym; n: PNode) 816
nim copyStrTable ast.html#copyStrTable,TStrTable,TStrTable proc copyStrTable(dest: var TStrTable; src: TStrTable) 825
nim copyIdTable ast.html#copyIdTable,TIdTable[T],TIdTable[T] proc copyIdTable[T](dest: var TIdTable[T]; src: TIdTable[T]) 830
nim copyObjectSet ast.html#copyObjectSet,TObjectSet,TObjectSet proc copyObjectSet(dest: var TObjectSet; src: TObjectSet) 835
nim withInfo ast.html#withInfo,PNode,TLineInfo proc withInfo(n: PNode; info: TLineInfo): PNode 843
nim newSymNode ast.html#newSymNode,PSym proc newSymNode(sym: PSym): PNode 848
nim newOpenSym ast.html#newOpenSym,PNode proc newOpenSym(n: PNode): PNode 858
nim newIntNode ast.html#newIntNode,TNodeKind,BiggestInt proc newIntNode(kind: TNodeKind; intVal: BiggestInt): PNode 861
nim newIntNode ast.html#newIntNode,TNodeKind,Int128 proc newIntNode(kind: TNodeKind; intVal: Int128): PNode 865
nim lastSon ast.html#lastSon,PNode proc lastSon(n: PNode): PNode 869
nim setLastSon ast.html#setLastSon.t,PNode,PNode template setLastSon(n: PNode; s: PNode) 870
nim firstSon ast.html#firstSon.t,PNode template firstSon(n: PNode): PNode 872
nim secondSon ast.html#secondSon.t,PNode template secondSon(n: PNode): PNode 873
nim hasSon ast.html#hasSon.t,PNode template hasSon(n: PNode): bool 875
nim has2Sons ast.html#has2Sons.t,PNode template has2Sons(n: PNode): bool 876
nim replaceFirstSon ast.html#replaceFirstSon,PNode,PNode proc replaceFirstSon(n, newson: PNode) 878
nim replaceSon ast.html#replaceSon,PNode,int,PNode proc replaceSon(n: PNode; i: int; newson: PNode) 881
nim last ast.html#last,PType proc last(n: PType): PType 884
nim elementType ast.html#elementType,PType proc elementType(n: PType): PType 891
nim skipModifier ast.html#skipModifier,PType proc skipModifier(n: PType): PType 895
nim indexType ast.html#indexType,PType proc indexType(n: PType): PType 899
nim baseClass ast.html#baseClass,PType proc baseClass(n: PType): PType 903
nim base ast.html#base,PType proc base(t: PType): PType 907
nim returnType ast.html#returnType,PType proc returnType(n: PType): PType 911
nim setReturnType ast.html#setReturnType,PType,PType proc setReturnType(n, r: PType) 915
nim setIndexType ast.html#setIndexType,PType,PType proc setIndexType(n, idx: PType) 919
nim firstParamType ast.html#firstParamType,PType proc firstParamType(n: PType): PType 923
nim firstGenericParam ast.html#firstGenericParam,PType proc firstGenericParam(n: PType): PType 930
nim typeBodyImpl ast.html#typeBodyImpl,PType proc typeBodyImpl(n: PType): PType 934
nim genericHead ast.html#genericHead,PType proc genericHead(n: PType): PType 938
nim skipTypes ast.html#skipTypes,PType,TTypeKinds proc skipTypes(t: PType; kinds: TTypeKinds): PType 942
nim newIntTypeNode ast.html#newIntTypeNode,BiggestInt,PType proc newIntTypeNode(intVal: BiggestInt; typ: PType): PNode 950
nim newIntTypeNode ast.html#newIntTypeNode,Int128,PType proc newIntTypeNode(intVal: Int128; typ: PType): PNode 973
nim newFloatNode ast.html#newFloatNode,TNodeKind,BiggestFloat proc newFloatNode(kind: TNodeKind; floatVal: BiggestFloat): PNode 977
nim newProcNode ast.html#newProcNode,TNodeKind,TLineInfo,PNode,PNode,PNode,PNode,PNode,PNode,PNode proc newProcNode(kind: TNodeKind; info: TLineInfo; body: PNode;\n params, name, pattern, genericParams, pragmas, exceptions: PNode): PNode 981
nim AttachedOpToStr ast.html#AttachedOpToStr const AttachedOpToStr 990
nim `$` ast.html#$,PSym proc `$`(s: PSym): string 993
nim len ast.html#len,PType proc len(n: PType): int 999
nim sameTupleLengths ast.html#sameTupleLengths,PType,PType proc sameTupleLengths(a, b: PType): bool 1006
nim tupleTypePairs ast.html#tupleTypePairs.i,PType,PType iterator tupleTypePairs(a, b: PType): (int, PType, PType) 1009
nim underspecifiedPairs ast.html#underspecifiedPairs.i,PType,PType,int,int iterator underspecifiedPairs(a, b: PType; start = 0; without = 0): (PType, PType) 1013
nim signatureLen ast.html#signatureLen,PType proc signatureLen(t: PType): int 1018
nim paramsLen ast.html#paramsLen,PType proc paramsLen(t: PType): int 1021
nim genericParamsLen ast.html#genericParamsLen,PType proc genericParamsLen(t: PType): int 1024
nim genericInvocationParamsLen ast.html#genericInvocationParamsLen,PType proc genericInvocationParamsLen(t: PType): int 1028
nim kidsLen ast.html#kidsLen,PType proc kidsLen(t: PType): int 1032
nim genericParamHasConstraints ast.html#genericParamHasConstraints,PType proc genericParamHasConstraints(t: PType): bool 1035
nim hasElementType ast.html#hasElementType,PType proc hasElementType(t: PType): bool 1037
nim isEmptyTupleType ast.html#isEmptyTupleType,PType proc isEmptyTupleType(t: PType): bool 1038
nim isSingletonTupleType ast.html#isSingletonTupleType,PType proc isSingletonTupleType(t: PType): bool 1039
nim genericConstraint ast.html#genericConstraint,PType proc genericConstraint(t: PType): PType 1041
nim genericInstParams ast.html#genericInstParams.i,PType iterator genericInstParams(t: PType): (bool, PType) 1043
nim genericInstParamPairs ast.html#genericInstParamPairs.i,PType,PType iterator genericInstParamPairs(a, b: PType): (int, PType, PType) 1047
nim genericInvocationParams ast.html#genericInvocationParams.i,PType iterator genericInvocationParams(t: PType): (bool, PType) 1051
nim genericInvocationAndBodyElements ast.html#genericInvocationAndBodyElements.i,PType,PType iterator genericInvocationAndBodyElements(a, b: PType): (PType, PType) 1055
nim genericInvocationParamPairs ast.html#genericInvocationParamPairs.i,PType,PType iterator genericInvocationParamPairs(a, b: PType): (bool, PType, PType) 1059
nim genericBodyParams ast.html#genericBodyParams.i,PType iterator genericBodyParams(t: PType): (int, PType) 1066
nim userTypeClassInstParams ast.html#userTypeClassInstParams.i,PType iterator userTypeClassInstParams(t: PType): (bool, PType) 1070
nim ikids ast.html#ikids.i,PType iterator ikids(t: PType): (int, PType) 1074
nim FirstParamAt ast.html#FirstParamAt const FirstParamAt 1078
nim FirstGenericParamAt ast.html#FirstGenericParamAt const FirstGenericParamAt 1079
nim paramTypes ast.html#paramTypes.i,PType iterator paramTypes(t: PType): (int, PType) 1081
nim paramTypePairs ast.html#paramTypePairs.i,PType,PType iterator paramTypePairs(a, b: PType): (PType, PType) 1084
nim paramTypeToNodeIndex ast.html#paramTypeToNodeIndex.t,int template paramTypeToNodeIndex(x: int): int 1087
nim kids ast.html#kids.i,PType iterator kids(t: PType): PType 1089
nim signature ast.html#signature.i,PType iterator signature(t: PType): PType 1092
nim newType ast.html#newType,TTypeKind,IdGenerator,PSym,sinkPType proc newType(kind: TTypeKind; idgen: IdGenerator; owner: PSym; son: sink PType = nil): PType 1096
nim setSons ast.html#setSons,PType,sinkseq[PType] proc setSons(dest: PType; sons: sink seq[PType]) 1114
nim setSon ast.html#setSon,PType,sinkPType proc setSon(dest: PType; son: sink PType) 1117
nim setSonsLen ast.html#setSonsLen,PType,int proc setSonsLen(dest: PType; len: int) 1119
nim newSons ast.html#newSons,PNode,int proc newSons(father: PNode; length: int) 1130
nim newSons ast.html#newSons,PType,int proc newSons(father: PType; length: int) 1133
nim truncateInferredTypeCandidates ast.html#truncateInferredTypeCandidates,PType proc truncateInferredTypeCandidates(t: PType) 1137
nim assignType ast.html#assignType,PType,PType proc assignType(dest, src: PType) 1142
nim copyType ast.html#copyType,PType,IdGenerator,PSym proc copyType(t: PType; idgen: IdGenerator; owner: PSym): PType 1170
nim exactReplica ast.html#exactReplica,PType,IdGenerator proc exactReplica(t: PType; idgen: IdGenerator): PType 1175
nim copySym ast.html#copySym,PSym,IdGenerator proc copySym(s: PSym; idgen: IdGenerator): PSym 1191
nim createModuleAlias ast.html#createModuleAlias,PSym,IdGenerator,PIdent,TLineInfo,TOptions proc createModuleAlias(s: PSym; idgen: IdGenerator; newIdent: PIdent;\n info: TLineInfo; options: TOptions): PSym 1207
nim initStrTable ast.html#initStrTable proc initStrTable(): TStrTable 1219
nim initIdTable ast.html#initIdTable proc initIdTable[T](): TIdTable[T] 1223
nim resetIdTable ast.html#resetIdTable,TIdTable[T] proc resetIdTable[T](x: var TIdTable[T]) 1227
nim initObjectSet ast.html#initObjectSet proc initObjectSet(): TObjectSet 1233
nim initNodeTable ast.html#initNodeTable proc initNodeTable(ignoreTypes = false): TNodeTable 1237
nim skipTypes ast.html#skipTypes,PType,TTypeKinds,int proc skipTypes(t: PType; kinds: TTypeKinds; maxIters: int): PType 1241
nim skipTypesOrNil ast.html#skipTypesOrNil,PType,TTypeKinds proc skipTypesOrNil(t: PType; kinds: TTypeKinds): PType 1249
nim isGCedMem ast.html#isGCedMem,PType proc isGCedMem(t: PType): bool 1257
nim propagateToOwner ast.html#propagateToOwner,PType,PType proc propagateToOwner(owner, elem: PType; propagateHasAsgn = true) 1261
nim rawAddSon ast.html#rawAddSon,PType,PType proc rawAddSon(father, son: PType; propagateHasAsgn = true) 1291
nim addSonNilAllowed ast.html#addSonNilAllowed,PNode,PNode proc addSonNilAllowed(father, son: PNode) 1297
nim delSon ast.html#delSon,PNode,int proc delSon(father: PNode; idx: int) 1300
nim copyNode ast.html#copyNode,PNode proc copyNode(src: PNode): PNode 1305
nim transitionSonsKind ast.html#transitionSonsKind,PNode,range[] proc transitionSonsKind(n: PNode; kind: range[nkComesFrom .. nkTupleConstr]) 1334
nim transitionIntKind ast.html#transitionIntKind,PNode,range[] proc transitionIntKind(n: PNode; kind: range[nkCharLit .. nkUInt64Lit]) 1338
nim transitionIntToFloatKind ast.html#transitionIntToFloatKind,PNode,range[] proc transitionIntToFloatKind(n: PNode; kind: range[nkFloatLit .. nkFloat128Lit]) 1342
nim transitionNoneToSym ast.html#transitionNoneToSym,PNode proc transitionNoneToSym(n: PNode) 1346
nim transitionSymKindCommon ast.html#transitionSymKindCommon.t,TSymKind template transitionSymKindCommon(k: TSymKind) 1349
nim transitionGenericParamToType ast.html#transitionGenericParamToType,PSym proc transitionGenericParamToType(s: PSym) 1364
nim transitionRoutineSymKind ast.html#transitionRoutineSymKind,PSym,range[] proc transitionRoutineSymKind(s: PSym; kind: range[skProc .. skTemplate]) 1367
nim transitionToLet ast.html#transitionToLet,PSym proc transitionToLet(s: PSym) 1372
nim shallowCopy ast.html#shallowCopy,PNode proc shallowCopy(src: PNode): PNode 1398
nim copyTree ast.html#copyTree,PNode proc copyTree(src: PNode): PNode 1403
nim copyTreeWithoutNode ast.html#copyTreeWithoutNode,PNode,PNode proc copyTreeWithoutNode(src, skippedNode: PNode): PNode 1410
nim hasSonWith ast.html#hasSonWith,PNode,TNodeKind proc hasSonWith(n: PNode; kind: TNodeKind): bool 1417
nim hasNilSon ast.html#hasNilSon,PNode proc hasNilSon(n: PNode): bool 1423
nim containsNode ast.html#containsNode,PNode,TNodeKinds proc containsNode(n: PNode; kinds: TNodeKinds): bool 1431
nim hasSubnodeWith ast.html#hasSubnodeWith,PNode,TNodeKind proc hasSubnodeWith(n: PNode; kind: TNodeKind): bool 1440
nim getInt ast.html#getInt,PNode proc getInt(a: PNode): Int128 1449
nim getInt64 ast.html#getInt64,PNode proc getInt64(a: PNode): int64 1462
nim getFloat ast.html#getFloat,PNode proc getFloat(a: PNode): BiggestFloat 1469
nim getStr ast.html#getStr,PNode proc getStr(a: PNode): string 1480
nim getStrOrChar ast.html#getStrOrChar,PNode proc getStrOrChar(a: PNode): string 1492
nim isGenericParams ast.html#isGenericParams,PNode proc isGenericParams(n: PNode): bool 1502
nim isGenericRoutine ast.html#isGenericRoutine,PNode proc isGenericRoutine(n: PNode): bool 1506
nim isGenericRoutineStrict ast.html#isGenericRoutineStrict,PSym proc isGenericRoutineStrict(s: PSym): bool 1509
nim isGenericRoutine ast.html#isGenericRoutine,PSym proc isGenericRoutine(s: PSym): bool 1515
nim skipGenericOwner ast.html#skipGenericOwner,PSym proc skipGenericOwner(s: PSym): PSym 1529
nim originatingModule ast.html#originatingModule,PSym proc originatingModule(s: PSym): PSym 1540
nim isRoutine ast.html#isRoutine,PSym proc isRoutine(s: PSym): bool 1544
nim isCompileTimeProc ast.html#isCompileTimeProc,PSym proc isCompileTimeProc(s: PSym): bool 1547
nim hasPattern ast.html#hasPattern,PSym proc hasPattern(s: PSym): bool 1551
nim pairs ast.html#pairs.i,PNode iterator pairs(n: PNode): tuple[i: int, n: PNode] 1554
nim isAtom ast.html#isAtom,PNode proc isAtom(n: PNode): bool 1557
nim isEmptyType ast.html#isEmptyType,PType proc isEmptyType(t: PType): bool 1560
nim makeStmtList ast.html#makeStmtList,PNode proc makeStmtList(n: PNode): PNode 1564
nim skipStmtList ast.html#skipStmtList,PNode proc skipStmtList(n: PNode): PNode 1571
nim toVar ast.html#toVar,PType,TTypeKind,IdGenerator proc toVar(typ: PType; kind: TTypeKind; idgen: IdGenerator): PType 1579
nim toRef ast.html#toRef,PType,IdGenerator proc toRef(typ: PType; idgen: IdGenerator): PType 1586
nim toObject ast.html#toObject,PType proc toObject(typ: PType): PType 1593
nim toObjectFromRefPtrGeneric ast.html#toObjectFromRefPtrGeneric,PType proc toObjectFromRefPtrGeneric(typ: PType): PType 1601
nim isImportedException ast.html#isImportedException,PType,ConfigRef proc isImportedException(t: PType; conf: ConfigRef): bool 1621
nim isInfixAs ast.html#isInfixAs,PNode proc isInfixAs(n: PNode): bool 1630
nim skipColon ast.html#skipColon,PNode proc skipColon(n: PNode): PNode 1633
nim findUnresolvedStatic ast.html#findUnresolvedStatic,PNode proc findUnresolvedStatic(n: PNode): PNode 1638
nim hasDestructor ast.html#hasDestructor.t,PType template hasDestructor(t: PType): bool 1659
nim incompleteType ast.html#incompleteType.t,PType template incompleteType(t: PType): bool 1661
nim typeCompleted ast.html#typeCompleted.t,PSym template typeCompleted(s: PSym) 1664
nim detailedInfo ast.html#detailedInfo.t,PSym template detailedInfo(sym: PSym): string 1667
nim isInlineIterator ast.html#isInlineIterator,PType proc isInlineIterator(typ: PType): bool 1670
nim isIterator ast.html#isIterator,PType proc isIterator(typ: PType): bool 1673
nim isClosureIterator ast.html#isClosureIterator,PType proc isClosureIterator(typ: PType): bool 1676
nim isClosure ast.html#isClosure,PType proc isClosure(typ: PType): bool 1679
nim isNimcall ast.html#isNimcall,PSym proc isNimcall(s: PSym): bool 1682
nim isExplicitCallConv ast.html#isExplicitCallConv,PSym proc isExplicitCallConv(s: PSym): bool 1685
nim isSinkParam ast.html#isSinkParam,PSym proc isSinkParam(s: PSym): bool 1688
nim isSinkType ast.html#isSinkType,PType proc isSinkType(t: PType): bool 1691
nim newProcType ast.html#newProcType,TLineInfo,IdGenerator,PSym proc newProcType(info: TLineInfo; idgen: IdGenerator; owner: PSym): PType 1694
nim addParam ast.html#addParam,PType,PSym proc addParam(procType: PType; param: PSym) 1703
nim canRaiseConservative ast.html#canRaiseConservative,PNode proc canRaiseConservative(fn: PNode): bool 1711
nim canRaise ast.html#canRaise,PNode proc canRaise(fn: PNode): bool 1717
nim toHumanStr ast.html#toHumanStr,TSymKind proc toHumanStr(kind: TSymKind): string 1744
nim toHumanStr ast.html#toHumanStr,TTypeKind proc toHumanStr(kind: TTypeKind): string 1748
nim skipHiddenAddr ast.html#skipHiddenAddr,PNode proc skipHiddenAddr(n: PNode): PNode 1752
nim isNewStyleConcept ast.html#isNewStyleConcept,PNode proc isNewStyleConcept(n: PNode): bool 1755
nim isOutParam ast.html#isOutParam,PType proc isOutParam(t: PType): bool 1759
nim nodesToIgnoreSet ast.html#nodesToIgnoreSet const nodesToIgnoreSet 1762
nim isTrue ast.html#isTrue,PNode proc isTrue(n: PNode): bool 1769
nim TypeMapping ast.html#TypeMapping type TypeMapping 1774
nim SymMapping ast.html#SymMapping type SymMapping 1775
nim initSymMapping ast.html#initSymMapping.t template initSymMapping(): SymMapping 1777
nim initTypeMapping ast.html#initTypeMapping.t template initTypeMapping(): TypeMapping 1778
nim sameModules ast.html#sameModules,PSym,PSym proc sameModules(a, b: PSym): bool 1780
nim sameOwners ast.html#sameOwners,PSym,PSym proc sameOwners(a, b: PSym): bool 1784
nimgrp addallownil ast.html#addAllowNil-procs-all proc 607
nimgrp isgenericroutine ast.html#isGenericRoutine-procs-all proc 1506
nimgrp newintnode ast.html#newIntNode-procs-all proc 861
nimgrp newinttypenode ast.html#newIntTypeNode-procs-all proc 950
nimgrp loc ast.html#loc-procs-all proc 257
nimgrp newtree ast.html#newTree-procs-all proc 731
nimgrp []= ast.html#[]=-procs-all proc 629
nimgrp add ast.html#add-procs-all proc 603
nimgrp tohumanstr ast.html#toHumanStr-procs-all proc 1744
nimgrp linkto ast.html#linkTo-procs-all proc 798
nimgrp newatom ast.html#newAtom-procs-all proc 715
nimgrp [] ast.html#[]-procs-all proc 621
nimgrp newsons ast.html#newSons-procs-all proc 1130
nimgrp owner ast.html#owner-procs-all proc 90
nimgrp skiptypes ast.html#skipTypes-procs-all proc 942
nimgrp setowner ast.html#setOwner-procs-all proc 98
nimgrp ensuremutable ast.html#ensureMutable-procs-all proc 62
nimgrp excl ast.html#excl-procs-all proc 324
nimgrp loc= ast.html#loc=-procs-all proc 261
nimgrp backendensuremutable ast.html#backendEnsureMutable-procs-all proc 70
nimgrp flags= ast.html#flags=-procs-all proc 213
nimgrp typ ast.html#typ-procs-all proc 172
nimgrp incl ast.html#incl-procs-all proc 308
nimgrp flags ast.html#flags-procs-all proc 209
nimgrp typ= ast.html#typ=-procs-all proc 176

875
compiler/ast2nif.html Normal file
View File

@@ -0,0 +1,875 @@
<?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>ast2nif</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">ast2nif</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="#DecodeContext" title="DecodeContext = object">DecodeContext</a></li>
<li><a class="reference" href="#LoadFlag" title="LoadFlag = enum
LoadFullAst, AlwaysLoadInterface">LoadFlag</a></li>
<li><a class="reference" href="#ModuleSuffix" title="ModuleSuffix = distinct string">ModuleSuffix</a></li>
<li><a class="reference" href="#ParsedSymName" title="ParsedSymName = object
name*: string
module*: string
count*: int">ParsedSymName</a></li>
<li><a class="reference" href="#PrecompiledModule" title="PrecompiledModule = object
topLevel*: PNode
deps*: seq[ModuleSuffix]
logOps*: seq[LogEntry]
module*: PSym
reexportedModules*: seq[(string, string)]
genericOffers*: seq[tuple[generic, inst: PSym, concreteTypes: seq[PType],
genericParamsCount: int]] ## generic instances this module created; modulegraphs.nim rebuilds
## `procInstCache` from them so a consumer reuses the instance instead of
## re-instantiating it in its own (operator-blind) module scope.
typeOffers*: seq[tuple[generic: PSym, inst: PType]] ## generic TYPE instances this module created; modulegraphs.nim rebuilds
## `typeInstCache` from them so a consumer reuses the baked instance
## (e.g. a `mixin`/`compiles()`-dependent array bound) instead of
## re-instantiating it with a different bound in its own scope.
includes*: seq[string]">PrecompiledModule</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#10" id="60">Consts</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#BackendLocalMarker" title="BackendLocalMarker = &quot;@bk&quot;">BackendLocalMarker</a></li>
<li><a class="reference" href="#SysModuleSuffix" title="SysModuleSuffix = &quot;@sys&quot;">SysModuleSuffix</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">createDecodeContext
<li><a class="reference" href="#createDecodeContext%2CConfigRef%2CIdentCache" title="createDecodeContext(config: ConfigRef; cache: IdentCache): DecodeContext">createDecodeContext(config: ConfigRef; cache: IdentCache): DecodeContext</a></li>
</ul>
<ul class="simple nested-toc-section">firstSon
<li><a class="reference" href="#firstSon%2CCursor" title="firstSon(n: Cursor): Cursor">firstSon(n: Cursor): Cursor</a></li>
</ul>
<ul class="simple nested-toc-section">getMainModuleSuffix
<li><a class="reference" href="#getMainModuleSuffix%2CDecodeContext" title="getMainModuleSuffix(c: DecodeContext): string">getMainModuleSuffix(c: DecodeContext): string</a></li>
</ul>
<ul class="simple nested-toc-section">globalName
<li><a class="reference" href="#globalName%2CPSym%2CConfigRef" title="globalName(sym: PSym; config: ConfigRef): string">globalName(sym: PSym; config: ConfigRef): string</a></li>
</ul>
<ul class="simple nested-toc-section">icNifTypeName
<li><a class="reference" href="#icNifTypeName%2CPType%2CConfigRef" title="icNifTypeName(typ: PType; config: ConfigRef): string">icNifTypeName(typ: PType; config: ConfigRef): string</a></li>
</ul>
<ul class="simple nested-toc-section">isStub
<li><a class="reference" href="#isStub%2CPSym" title="isStub(s: PSym): bool">isStub(s: PSym): bool</a></li>
<li><a class="reference" href="#isStub%2CPType" title="isStub(t: PType): bool">isStub(t: PType): bool</a></li>
</ul>
<ul class="simple nested-toc-section">loadedModuleTypes
<li><a class="reference" href="#loadedModuleTypes%2CDecodeContext%2CFileIndex" title="loadedModuleTypes(c: var DecodeContext; module: FileIndex): seq[PType]">loadedModuleTypes(c: var DecodeContext; module: FileIndex): seq[PType]</a></li>
</ul>
<ul class="simple nested-toc-section">loadNifModule
<li><a class="reference" href="#loadNifModule%2CDecodeContext%2CFileIndex%2CTStrTable%2CTStrTable%2Cset%5BLoadFlag%5D" title="loadNifModule(c: var DecodeContext; f: FileIndex;
interf, interfHidden: var TStrTable; flags: set[LoadFlag] = {}): PrecompiledModule">loadNifModule(c: var DecodeContext; f: FileIndex;
interf, interfHidden: var TStrTable; flags: set[LoadFlag] = {}): PrecompiledModule</a></li>
<li><a class="reference" href="#loadNifModule%2CDecodeContext%2CModuleSuffix%2CTStrTable%2CTStrTable%2Cset%5BLoadFlag%5D" title="loadNifModule(c: var DecodeContext; suffix: ModuleSuffix;
interf, interfHidden: var TStrTable; flags: set[LoadFlag] = {}): PrecompiledModule">loadNifModule(c: var DecodeContext; suffix: ModuleSuffix;
interf, interfHidden: var TStrTable; flags: set[LoadFlag] = {}): PrecompiledModule</a></li>
</ul>
<ul class="simple nested-toc-section">loadSym
<li><a class="reference" href="#loadSym%2CDecodeContext%2CPSym" title="loadSym(c: var DecodeContext; s: PSym)">loadSym(c: var DecodeContext; s: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">loadType
<li><a class="reference" href="#loadType%2CDecodeContext%2CPType" title="loadType(c: var DecodeContext; t: PType)">loadType(c: var DecodeContext; t: PType)</a></li>
</ul>
<ul class="simple nested-toc-section">materializeLazyBody
<li><a class="reference" href="#materializeLazyBody%2CDecodeContext%2CPNode" title="materializeLazyBody(c: var DecodeContext; node: PNode)">materializeLazyBody(c: var DecodeContext; node: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">moduleSymbolStubs
<li><a class="reference" href="#moduleSymbolStubs%2CDecodeContext%2CFileIndex" title="moduleSymbolStubs(c: var DecodeContext; module: FileIndex): seq[PSym]">moduleSymbolStubs(c: var DecodeContext; module: FileIndex): seq[PSym]</a></li>
</ul>
<ul class="simple nested-toc-section">nextBackendSymItem
<li><a class="reference" href="#nextBackendSymItem%2CDecodeContext%2Cint32" title="nextBackendSymItem(c: var DecodeContext; module: int32): int32">nextBackendSymItem(c: var DecodeContext; module: int32): int32</a></li>
</ul>
<ul class="simple nested-toc-section">nextBackendTypeItem
<li><a class="reference" href="#nextBackendTypeItem%2CDecodeContext%2Cint32" title="nextBackendTypeItem(c: var DecodeContext; module: int32): int32">nextBackendTypeItem(c: var DecodeContext; module: int32): int32</a></li>
</ul>
<ul class="simple nested-toc-section">nifModuleHasIncludes
<li><a class="reference" href="#nifModuleHasIncludes%2CConfigRef%2CFileIndex" title="nifModuleHasIncludes(config: ConfigRef; fileIdx: FileIndex): bool">nifModuleHasIncludes(config: ConfigRef; fileIdx: FileIndex): bool</a></li>
</ul>
<ul class="simple nested-toc-section">parseSymName
<li><a class="reference" href="#parseSymName%2Cstring" title="parseSymName(s: string): ParsedSymName">parseSymName(s: string): ParsedSymName</a></li>
</ul>
<ul class="simple nested-toc-section">registerNifAstTags
<li><a class="reference" href="#registerNifAstTags" title="registerNifAstTags()">registerNifAstTags()</a></li>
</ul>
<ul class="simple nested-toc-section">resolveHookSym
<li><a class="reference" href="#resolveHookSym%2CDecodeContext%2Cstring" title="resolveHookSym(c: var DecodeContext; name: string): PSym">resolveHookSym(c: var DecodeContext; name: string): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">scanIncludeGraph
<li><a class="reference" href="#scanIncludeGraph%2CConfigRef" title="scanIncludeGraph(config: ConfigRef): seq[
tuple[includer: string, includes: seq[string]]]">scanIncludeGraph(config: ConfigRef): seq[
tuple[includer: string, includes: seq[string]]]</a></li>
</ul>
<ul class="simple nested-toc-section">sealLoadedRoutines
<li><a class="reference" href="#sealLoadedRoutines%2CDecodeContext" title="sealLoadedRoutines(c: var DecodeContext)">sealLoadedRoutines(c: var DecodeContext)</a></li>
</ul>
<ul class="simple nested-toc-section">setMainModule
<li><a class="reference" href="#setMainModule%2CDecodeContext%2CFileIndex" title="setMainModule(c: var DecodeContext; fileIdx: FileIndex)">setMainModule(c: var DecodeContext; fileIdx: FileIndex)</a></li>
</ul>
<ul class="simple nested-toc-section">toClassSymId
<li><a class="reference" href="#toClassSymId%2CConfigRef%2CItemId" title="toClassSymId(config: ConfigRef; typeId: ItemId): nifstreams.SymId">toClassSymId(config: ConfigRef; typeId: ItemId): nifstreams.SymId</a></li>
</ul>
<ul class="simple nested-toc-section">toConverterIndexEntry
<li><a class="reference" href="#toConverterIndexEntry%2CConfigRef%2CPSym" title="toConverterIndexEntry(config: ConfigRef; converterSym: PSym): (nifstreams.SymId,
nifstreams.SymId)">toConverterIndexEntry(config: ConfigRef; converterSym: PSym): (nifstreams.SymId,
nifstreams.SymId)</a></li>
</ul>
<ul class="simple nested-toc-section">toHookIndexEntry
<li><a class="reference" href="#toHookIndexEntry%2CConfigRef%2CItemId%2CPSym" title="toHookIndexEntry(config: ConfigRef; typeId: ItemId; hookSym: PSym): HookIndexEntry">toHookIndexEntry(config: ConfigRef; typeId: ItemId; hookSym: PSym): HookIndexEntry</a></li>
</ul>
<ul class="simple nested-toc-section">toMethodIndexEntry
<li><a class="reference" href="#toMethodIndexEntry%2CConfigRef%2CPSym%2Cstring" title="toMethodIndexEntry(config: ConfigRef; methodSym: PSym; signature: string): (
nifstreams.SymId, nifstreams.StrId)">toMethodIndexEntry(config: ConfigRef; methodSym: PSym; signature: string): (
nifstreams.SymId, nifstreams.StrId)</a></li>
</ul>
<ul class="simple nested-toc-section">toNifFilename
<li><a class="reference" href="#toNifFilename%2CConfigRef%2CFileIndex" title="toNifFilename(conf: ConfigRef; f: FileIndex): string">toNifFilename(conf: ConfigRef; f: FileIndex): string</a></li>
</ul>
<ul class="simple nested-toc-section">tryResolveCompilerProc
<li><a class="reference" href="#tryResolveCompilerProc%2CDecodeContext%2Cstring%2CFileIndex" title="tryResolveCompilerProc(c: var DecodeContext; name: string;
moduleFileIdx: FileIndex): PSym">tryResolveCompilerProc(c: var DecodeContext; name: string;
moduleFileIdx: FileIndex): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">writeLoweredModule
<li><a class="reference" href="#writeLoweredModule%2CDecodeContext%2CConfigRef%2CPrecompiledModule%2CopenArray%5BLogEntry%5D%2Cstring" title="writeLoweredModule(c: var DecodeContext; config: ConfigRef;
precomp: PrecompiledModule; hooks: openArray[LogEntry];
outfile: string)">writeLoweredModule(c: var DecodeContext; config: ConfigRef;
precomp: PrecompiledModule; hooks: openArray[LogEntry];
outfile: string)</a></li>
</ul>
<ul class="simple nested-toc-section">writeNifModule
<li><a class="reference" href="#writeNifModule%2CConfigRef%2Cint32%2CPNode%2Cseq%5BLogEntry%5D%2Cseq%5BPNode%5D%2Cseq%5Bint%5D%2Cseq%5B%5D%2Cseq%5Btuple%5BPSym%2CPSym%2Cseq%5BPType%5D%2Cint%5D%5D%2Cseq%5Btuple%5BPSym%2CPType%5D%5D%2Cseq%5BFileIndex%5D%2Cint32%2Cseq%5B%5D" title="writeNifModule(config: ConfigRef; thisModule: int32; n: PNode;
opsLog: seq[LogEntry]; replayActions: seq[PNode] = @[];
implDeps: seq[int] = @[];
reexportedModules: seq[(string, string)] = @[]; genericOffers: seq[tuple[
generic, inst: PSym, concreteTypes: seq[PType], genericParamsCount: int]] = @[];
typeOffers: seq[tuple[generic: PSym, inst: PType]] = @[];
resolvedImportDeps: seq[FileIndex] = @[];
firstUnusedId: int32 = 0;
expansions: seq[(PSym, TLineInfo)] = @[])">writeNifModule(config: ConfigRef; thisModule: int32; n: PNode;
opsLog: seq[LogEntry]; replayActions: seq[PNode] = @[];
implDeps: seq[int] = @[];
reexportedModules: seq[(string, string)] = @[]; genericOffers: seq[tuple[
generic, inst: PSym, concreteTypes: seq[PType], genericParamsCount: int]] = @[];
typeOffers: seq[tuple[generic: PSym, inst: PType]] = @[];
resolvedImportDeps: seq[FileIndex] = @[];
firstUnusedId: int32 = 0;
expansions: seq[(PSym, TLineInfo)] = @[])</a></li>
</ul>
<ul class="simple nested-toc-section">writeSemDeps
<li><a class="reference" href="#writeSemDeps%2CConfigRef%2Cint32%2Cseq%5Bstring%5D" title="writeSemDeps(config: ConfigRef; thisModule: int32; importPaths: seq[string])">writeSemDeps(config: ConfigRef; thisModule: int32; importPaths: seq[string])</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/ast2nif.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">AST to NIF bridge.</p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="astdef.html">astdef</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="pathutils.html">pathutils</a>, <a class="reference external" href="icmodnames.html">icmodnames</a>, <a class="reference external" href="typekeys.html">typekeys</a>, <a class="reference external" href="icnifcore.html">icnifcore</a>, <a class="reference external" href="ic/enum2nif.html">ic/enum2nif</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="DecodeContext">
<dt><pre><a href="#DecodeContext"><span class="Identifier">DecodeContext</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/ast2nif.nim#L1901" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L1901" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="LoadFlag">
<dt><pre><a href="#LoadFlag"><span class="Identifier">LoadFlag</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">LoadFullAst</span><span class="Other">,</span> <span class="Identifier">AlwaysLoadInterface</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L2030" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L2030" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="ModuleSuffix">
<dt><pre><a href="#ModuleSuffix"><span class="Identifier">ModuleSuffix</span></a> <span class="Other">=</span> <span class="Keyword">distinct</span> <span class="Identifier">string</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L3095" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L3095" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="ParsedSymName">
<dt><pre><a href="#ParsedSymName"><span class="Identifier">ParsedSymName</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">name</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">module</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">count</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L353" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L353" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="PrecompiledModule">
<dt><pre><a href="#PrecompiledModule"><span class="Identifier">PrecompiledModule</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">topLevel</span><span class="Operator">*</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a>
<span class="Identifier">deps</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="#ModuleSuffix"><span class="Identifier">ModuleSuffix</span></a><span class="Other">]</span>
<span class="Identifier">logOps</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="astdef.html#LogEntry"><span class="Identifier">LogEntry</span></a><span class="Other">]</span>
<span class="Identifier">module</span><span class="Operator">*</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a>
<span class="Identifier">reexportedModules</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Other">(</span><span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">]</span>
<span class="Identifier">genericOffers</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">generic</span><span class="Other">,</span> <span class="Identifier">inst</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">,</span> <span class="Identifier">concreteTypes</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="astdef.html#PType"><span class="Identifier">PType</span></a><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">genericParamsCount</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span> <span class="Comment">## generic instances this module created; modulegraphs.nim rebuilds</span>
<span class="Comment">## `procInstCache` from them so a consumer reuses the instance instead of</span>
<span class="Comment">## re-instantiating it in its own (operator-blind) module scope.</span>
<span class="Identifier">typeOffers</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">generic</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">,</span> <span class="Identifier">inst</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</span></a><span class="Other">]</span><span class="Other">]</span> <span class="Comment">## generic TYPE instances this module created; modulegraphs.nim rebuilds</span>
<span class="Comment">## `typeInstCache` from them so a consumer reuses the baked instance</span>
<span class="Comment">## (e.g. a `mixin`/`compiles()`-dependent array bound) instead of</span>
<span class="Comment">## re-instantiating it with a different bound in its own scope.</span>
<span class="Identifier">includes</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L3096" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L3096" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</dl>
</div>
<div class="section" id="10">
<h1><a class="toc-backref" href="#10">Consts</a></h1>
<dl class="item">
<div id="BackendLocalMarker">
<dt><pre><a href="#BackendLocalMarker"><span class="Identifier">BackendLocalMarker</span></a> <span class="Other">=</span> <span class="StringLit">&quot;@bk&quot;</span></pre></dt>
<dd>
Suffix marker for a PROCESS-LOCAL backend-minted entity (a closure <tt class="docutils literal"><span class="pre"><span class="Punctuation">:</span><span class="Identifier">env</span></span></tt> type/obj/field/hidden-param minted while the VM compiles a routine body to run a macro). Such entities have no stable cross-process identity, so each module that references one emits its OWN module-local def named <tt class="docutils literal"><span class="pre"><span class="Identifier"></span><span class="Operator">&lt;</span><span class="Identifier">thisModuleSuffix</span><span class="Operator">&gt;@</span><span class="Identifier">bk</span></span></tt> and the loader homes it to the reading module with a <tt class="docutils literal"><span class="pre"><span class="Identifier">backendItemId</span></span></tt> (disjoint from real ids). See transf.transformBody. Reserved module-suffix sentinel for module-less magic singleton types — the <tt class="docutils literal"><span class="pre"><span class="Keyword">nil</span></span></tt> type is created via <tt class="docutils literal"><span class="pre"><span class="Identifier">newSysType</span></span></tt> with the graph idgen, whose <tt class="docutils literal"><span class="pre"><span class="Identifier">module</span></span></tt> can be <tt class="docutils literal"><span class="pre"><span class="Operator">-</span><span class="DecNumber">1</span></span></tt> (e.g. during VM const-eval before a real module is current), so its <tt class="docutils literal"><span class="pre"><span class="Identifier">uniqueId</span><span class="Operator">.</span><span class="Identifier">module</span></span></tt> is unresolvable. Such a type has no fields and an identity that is fully captured by its kind, so we serialize it with this sentinel and reconstruct it on load (see <tt class="docutils literal"><span class="pre"><span class="Identifier">createTypeStub</span></span></tt>) without ever touching a <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">nif</span></span></tt> file. A real <tt class="docutils literal"><span class="pre"><span class="Identifier">moduleSuffix</span></span></tt> never starts with '@'.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L39" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L39" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="SysModuleSuffix">
<dt><pre><a href="#SysModuleSuffix"><span class="Identifier">SysModuleSuffix</span></a> <span class="Other">=</span> <span class="StringLit">&quot;@sys&quot;</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L38" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L38" 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="createDecodeContext-procs-all">
<div id="createDecodeContext,ConfigRef,IdentCache">
<dt><pre><span class="Keyword">proc</span> <a href="#createDecodeContext%2CConfigRef%2CIdentCache"><span class="Identifier">createDecodeContext</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="Identifier">cache</span><span class="Other">:</span> <a href="idents.html#IdentCache"><span class="Identifier">IdentCache</span></a><span class="Other">)</span><span class="Other">:</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</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>
Supposed to be a global variable
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L1919" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L1919" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="firstSon-procs-all">
<div id="firstSon,Cursor">
<dt><pre><span class="Keyword">proc</span> <a href="#firstSon%2CCursor"><span class="Identifier">firstSon</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <span class="Identifier">Cursor</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Cursor</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>
Non-consuming peek at the first child of a TagLit. The <tt class="docutils literal"><span class="pre"><span class="Identifier">inc</span></span></tt> is on a copy, so it never advances the caller's cursor.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L1859" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L1859" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getMainModuleSuffix-procs-all">
<div id="getMainModuleSuffix,DecodeContext">
<dt><pre><span class="Keyword">proc</span> <a href="#getMainModuleSuffix%2CDecodeContext"><span class="Identifier">getMainModuleSuffix</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</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/ast2nif.nim#L2006" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L2006" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="globalName-procs-all">
<div id="globalName,PSym,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#globalName%2CPSym%2CConfigRef"><span class="Identifier">globalName</span></a><span class="Other">(</span><span class="Identifier">sym</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</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> <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/ast2nif.nim#L337" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L337" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="icNifTypeName-procs-all">
<div id="icNifTypeName,PType,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#icNifTypeName%2CPType%2CConfigRef"><span class="Identifier">icNifTypeName</span></a><span class="Other">(</span><span class="Identifier">typ</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</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> <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>
The serialized NIF name of a type, recorded next to RTTI data definitions in the cnif artifact so a later run can re-demand the typeinfo when a reused TU still references it (the def-retention check). Backend-minted types have no NIF name.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L68" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L68" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isStub-procs-all">
<div id="isStub,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#isStub%2CPSym"><span class="Identifier">isStub</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="astdef.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/ast2nif.nim#L2415" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L2415" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="isStub,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#isStub%2CPType"><span class="Identifier">isStub</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</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/ast2nif.nim#L2414" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L2414" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="loadedModuleTypes-procs-all">
<div id="loadedModuleTypes,DecodeContext,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#loadedModuleTypes%2CDecodeContext%2CFileIndex"><span class="Identifier">loadedModuleTypes</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</span></a><span class="Other">;</span> <span class="Identifier">module</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">seq</span><span class="Other">[</span><a href="astdef.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">OSError</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">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="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>
Stubs for every TYPE this module owns — but, unlike before, WITHOUT force- loading them. <tt class="docutils literal"><span class="pre"><span class="Identifier">writeLoweredModule</span></span></tt> emits a real def into the <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">t</span><span class="Operator">.</span><span class="Identifier">bif</span></span></tt> only for the ones already <tt class="docutils literal"><span class="pre"><span class="Identifier">Complete</span></span></tt> (= the lower stage actually loaded, hence possibly MUTATED — lambda-lifting flips a proc type to <tt class="docutils literal"><span class="pre"><span class="Identifier">ccClosure</span></span></tt> and grows env types with captured fields). Every untouched type stays <tt class="docutils literal"><span class="pre"><span class="Identifier">Partial</span></span></tt>, so a reference to it serializes as a <tt class="docutils literal"><span class="pre"><span class="Identifier">SymUse</span></span></tt> that a cg/emit consumer resolves from the <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">s</span><span class="Operator">.</span><span class="Identifier">bif</span></span></tt> (loader fallback <tt class="docutils literal"><span class="pre"><span class="Identifier">typeCursor</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">ensureSemBuf</span></span></tt>) — the lower stage leaves those defs unchanged, so re-emitting them into <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">t</span><span class="Operator">.</span><span class="Identifier">bif</span></span></tt> was pure cost. Collect names first: <tt class="docutils literal"><span class="pre"><span class="Identifier">createTypeStub</span></span></tt> may register modules / mutate <tt class="docutils literal"><span class="pre"><span class="Identifier">c</span><span class="Operator">.</span><span class="Identifier">types</span></span></tt>, which must not invalidate the index iterator.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L2989" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L2989" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="loadNifModule-procs-all">
<div id="loadNifModule,DecodeContext,FileIndex,TStrTable,TStrTable,set[LoadFlag]">
<dt><pre><span class="Keyword">proc</span> <a href="#loadNifModule%2CDecodeContext%2CFileIndex%2CTStrTable%2CTStrTable%2Cset%5BLoadFlag%5D"><span class="Identifier">loadNifModule</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</span></a><span class="Other">;</span> <span class="Identifier">f</span><span class="Other">:</span> <a href="lineinfos.html#FileIndex"><span class="Identifier">FileIndex</span></a><span class="Other">;</span>
<span class="Identifier">interf</span><span class="Other">,</span> <span class="Identifier">interfHidden</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="astdef.html#TStrTable"><span class="Identifier">TStrTable</span></a><span class="Other">;</span>
<span class="Identifier">flags</span><span class="Other">:</span> <span class="Identifier">set</span><span class="Other">[</span><a href="#LoadFlag"><span class="Identifier">LoadFlag</span></a><span class="Other">]</span> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <a href="#PrecompiledModule"><span class="Identifier">PrecompiledModule</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">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="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">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/ast2nif.nim#L3394" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L3394" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="loadNifModule,DecodeContext,ModuleSuffix,TStrTable,TStrTable,set[LoadFlag]">
<dt><pre><span class="Keyword">proc</span> <a href="#loadNifModule%2CDecodeContext%2CModuleSuffix%2CTStrTable%2CTStrTable%2Cset%5BLoadFlag%5D"><span class="Identifier">loadNifModule</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</span></a><span class="Other">;</span> <span class="Identifier">suffix</span><span class="Other">:</span> <a href="#ModuleSuffix"><span class="Identifier">ModuleSuffix</span></a><span class="Other">;</span>
<span class="Identifier">interf</span><span class="Other">,</span> <span class="Identifier">interfHidden</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="astdef.html#TStrTable"><span class="Identifier">TStrTable</span></a><span class="Other">;</span>
<span class="Identifier">flags</span><span class="Other">:</span> <span class="Identifier">set</span><span class="Other">[</span><a href="#LoadFlag"><span class="Identifier">LoadFlag</span></a><span class="Other">]</span> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <a href="#PrecompiledModule"><span class="Identifier">PrecompiledModule</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">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="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">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/ast2nif.nim#L3372" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L3372" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="loadSym-procs-all">
<div id="loadSym,DecodeContext,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#loadSym%2CDecodeContext%2CPSym"><span class="Identifier">loadSym</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/ast2nif.nim#L2622" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L2622" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="loadType-procs-all">
<div id="loadType,DecodeContext,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#loadType%2CDecodeContext%2CPType"><span class="Identifier">loadType</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</span></a><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="astdef.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">OSError</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">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="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/ast2nif.nim#L2498" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L2498" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="materializeLazyBody-procs-all">
<div id="materializeLazyBody,DecodeContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#materializeLazyBody%2CDecodeContext%2CPNode"><span class="Identifier">materializeLazyBody</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</span></a><span class="Other">;</span> <span class="Identifier">node</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">ValueError</span><span class="Other">,</span> <span class="Identifier">OSError</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="Identifier">ReadEnvEffect</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>
Fill a <tt class="docutils literal"><span class="pre"><span class="Identifier">nfLazyBody</span></span></tt> placeholder's children in place (identity-preserving: callers already hold <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt>). Decodes the deferred body from the stashed cursor with the enclosing def's <tt class="docutils literal"><span class="pre"><span class="Identifier">localSyms</span></span></tt> so param/local refs resolve to the SAME PSyms the signature created.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L2892" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L2892" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="moduleSymbolStubs-procs-all">
<div id="moduleSymbolStubs,DecodeContext,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#moduleSymbolStubs%2CDecodeContext%2CFileIndex"><span class="Identifier">moduleSymbolStubs</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</span></a><span class="Other">;</span> <span class="Identifier">module</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">seq</span><span class="Other">[</span><a href="astdef.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">OSError</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">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="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>
<p>Stubs for every non-type symbol serialized in <tt class="docutils literal"><span class="pre"><span class="Identifier">module</span></span></tt>'s NIF index. The per-module backend uses this to emit the routines a module OWNS: procs are serialized as <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">sd</span> <span class="Operator">...</span><span class="Punctuation">)</span></span></tt> symbol-defs and loaded lazily, never as <tt class="docutils literal"><span class="pre"><span class="Identifier">nkProcDef</span></span></tt> statements in the top-level stmt list, so <tt class="docutils literal"><span class="pre"><span class="Identifier">genTopLevelStmt</span></span></tt> alone never reaches them — without this, a routine called only from other modules would be emitted by nobody once the demanding module merely prototypes it.</p>
<p>Returns lazy stubs: the index table is moved out while iterating (loading a symbol can register new modules and invalidate the iterator), so the caller forces full load (<tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">kind</span></span></tt>, <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">ast</span></span></tt>) and filters AFTER this returns, with the index back in place.</p>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L2966" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L2966" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="nextBackendSymItem-procs-all">
<div id="nextBackendSymItem,DecodeContext,int32">
<dt><pre><span class="Keyword">proc</span> <a href="#nextBackendSymItem%2CDecodeContext%2Cint32"><span class="Identifier">nextBackendSymItem</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</span></a><span class="Other">;</span> <span class="Identifier">module</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int32</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="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>
Allocate the next backend-minted SYM item for <tt class="docutils literal"><span class="pre"><span class="Identifier">module</span></span></tt> from the SAME per-module counter the loader uses when it re-homes <tt class="docutils literal"><span class="pre"><span class="Operator">@</span><span class="Identifier">bk</span></span></tt> syms loaded from the module's <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">t</span><span class="Operator">.</span><span class="Identifier">bif</span></span></tt> (loadSymStub/extractLocalSymsFromTree). The <tt class="docutils literal"><span class="pre"><span class="Identifier">lower</span></span></tt> stage serializes its lifted hooks/temps as <tt class="docutils literal"><span class="pre"><span class="Operator">@</span><span class="Identifier">bk</span></span></tt> syms, and cg mints MORE backend syms (RTTI destroy wrappers, ...) into the same module. Both are keyed by <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">id</span></span></tt> (= <tt class="docutils literal"><span class="pre"><span class="Identifier">toId</span><span class="Punctuation">(</span><span class="Identifier">itemId</span><span class="Punctuation">)</span></span></tt>) in <tt class="docutils literal"><span class="pre"><span class="Identifier">declaredThings</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">declaredProtos</span></span></tt>, so if the two id producers (the loader's <tt class="docutils literal"><span class="pre"><span class="Identifier">symCounter</span></span></tt> and cg's idgen) ran independently they could mint the same item: e.g. a <tt class="docutils literal"><span class="pre"><span class="Identifier">rttiDestroy</span></span></tt> wrapper and the very <tt class="docutils literal"><span class="pre"><span class="Operator">=</span><span class="Identifier">destroy</span></span></tt> hook it wraps both land on backend item 21 -&gt; one masks the other in <tt class="docutils literal"><span class="pre"><span class="Identifier">declaredThings</span></span></tt> -&gt; the hook's body is never emitted -&gt; &quot;undefined reference&quot; at link. Drawing every backend sym from this one counter keeps them disjoint. Returns -1 if the module is not loaded yet (then the caller falls back to the idgen's own counter — only reachable for sem-time <tt class="docutils literal"><span class="pre"><span class="Operator">@</span><span class="Identifier">bk</span></span></tt> minting, whose module is never loaded in that process).
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L1967" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L1967" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="nextBackendTypeItem-procs-all">
<div id="nextBackendTypeItem,DecodeContext,int32">
<dt><pre><span class="Keyword">proc</span> <a href="#nextBackendTypeItem%2CDecodeContext%2Cint32"><span class="Identifier">nextBackendTypeItem</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</span></a><span class="Other">;</span> <span class="Identifier">module</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int32</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="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>
TYPE analogue of <tt class="docutils literal"><span class="pre"><span class="Identifier">nextBackendSymItem</span></span></tt>: the <tt class="docutils literal"><span class="pre"><span class="Identifier">lower</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">cg</span></span></tt> stages mint fresh backend TYPES (closure-env objects, ptr wrappers) whose itemId must not collide with the module's loaded types. Drawn from the per-module <tt class="docutils literal"><span class="pre"><span class="Identifier">typeCounter</span></span></tt>, which <tt class="docutils literal"><span class="pre"><span class="Identifier">moduleId</span></span></tt> seeds from the file's <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">unusedid</span><span class="Punctuation">)</span></span></tt> so the first minted type sits ABOVE every frontend/lowered type item. Returns -1 if the module is not loaded (caller falls back to the idgen's own counter).
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L1988" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L1988" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="nifModuleHasIncludes-procs-all">
<div id="nifModuleHasIncludes,ConfigRef,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#nifModuleHasIncludes%2CConfigRef%2CFileIndex"><span class="Identifier">nifModuleHasIncludes</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="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="Identifier">OSError</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">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="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>
Cheap header-only check: does the module's <tt class="docutils literal"><span class="pre"><span class="Operator">&lt;</span><span class="Identifier">suffix</span><span class="Operator">&gt;.</span><span class="Identifier">nif</span></span></tt> contain an <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Keyword">include</span> <span class="Operator">...</span><span class="Punctuation">)</span></span></tt> record? Used by nimsuggest (<tt class="docutils literal"><span class="pre"><span class="Identifier">moduleFromNifFile</span></span></tt>) to refuse to NIF-serve modules that <tt class="docutils literal"><span class="pre"><span class="Keyword">include</span></span></tt> files, so the includer is source-compiled and the included symbols never round-trip through NIF (which mishandles their owner/line-info on reload).
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L3182" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L3182" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="parseSymName-procs-all">
<div id="parseSymName,string">
<dt><pre><span class="Keyword">proc</span> <a href="#parseSymName%2Cstring"><span class="Identifier">parseSymName</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="#ParsedSymName"><span class="Identifier">ParsedSymName</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/ast2nif.nim#L358" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L358" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="registerNifAstTags-procs-all">
<div id="registerNifAstTags">
<dt><pre><span class="Keyword">proc</span> <a href="#registerNifAstTags"><span class="Identifier">registerNifAstTags</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>
(Re)registers ast2nif's NIF tags explicitly. The top-level <tt class="docutils literal"><span class="pre"><span class="Identifier">registerTag</span></span></tt> initializers above depend on <tt class="docutils literal"><span class="pre"><span class="Identifier">nifstreams</span><span class="Operator">.</span><span class="Identifier">pool</span></span></tt> having been initialized FIRST (<tt class="docutils literal"><span class="pre"><span class="Identifier">pool</span> <span class="Operator">=</span> <span class="Identifier">createLiterals</span><span class="Punctuation">(</span><span class="Identifier">TagData</span><span class="Punctuation">)</span></span></tt> in nifstreams' module init) — an inter-module init-order requirement. The IC-built compiler currently emits module init calls in a different order, so the initializers registered into a pool that was subsequently replaced: the tag ids then denoted builtin tags (<tt class="docutils literal"><span class="pre"><span class="Identifier">replay</span></span></tt> came out as <tt class="docutils literal"><span class="pre"><span class="Identifier">deref</span></span></tt>, <tt class="docutils literal"><span class="pre"><span class="Identifier">repdestroy</span></span></tt> as <tt class="docutils literal"><span class="pre"><span class="Identifier">pat</span></span></tt>, ...) and every written NIF was silently corrupted. Called from <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span><span class="Operator">.</span><span class="Identifier">nim</span></span></tt> before any command runs; idempotent (<tt class="docutils literal"><span class="pre"><span class="Identifier">getOrIncl</span></span></tt> by name).
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L915" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L915" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="resolveHookSym-procs-all">
<div id="resolveHookSym,DecodeContext,string">
<dt><pre><span class="Keyword">proc</span> <a href="#resolveHookSym%2CDecodeContext%2Cstring"><span class="Identifier">resolveHookSym</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</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="astdef.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">Exception</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">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="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/ast2nif.nim#L2667" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L2667" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="scanIncludeGraph-procs-all">
<div id="scanIncludeGraph,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#scanIncludeGraph%2CConfigRef"><span class="Identifier">scanIncludeGraph</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> <span class="Identifier">seq</span><span class="Other">[</span>
<span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">includer</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">includes</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><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="Identifier">OSError</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">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="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>
<p>Standalone &quot;full table&quot; scan of every <tt class="docutils literal"><span class="pre"><span class="Operator">&lt;</span><span class="Identifier">suffix</span><span class="Operator">&gt;.</span><span class="Identifier">nif</span></span></tt> in the nimcache: reads only each module's header records — <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">modulesrc</span> <span class="StringLit">&quot;path&quot;</span><span class="Punctuation">)</span></span></tt> (the includer's own source) and <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Keyword">include</span> <span class="Operator">.</span> <span class="Operator">.</span> <span class="StringLit">&quot;path&quot;</span><span class="Operator">...</span><span class="Punctuation">)</span></span></tt> (resolved included files) — and returns (includerSource, includedSources) pairs for the modules that <tt class="docutils literal"><span class="pre"><span class="Keyword">include</span></span></tt> anything. No <tt class="docutils literal"><span class="pre"><span class="Identifier">DecodeContext</span></span></tt>, no symbol/index loading: it parses the few dep tokens at the top of the file and stops at the first non-dep node.</p>
<p>Used by nimsuggest to answer, for a cold-opened <em>include</em> file, &quot;which module includes me?&quot; without NIF-loading that module — so the includer can be <em>source</em>-compiled (modules that <tt class="docutils literal"><span class="pre"><span class="Keyword">include</span></span></tt> files are never served from NIF).</p>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L3136" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L3136" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="sealLoadedRoutines-procs-all">
<div id="sealLoadedRoutines,DecodeContext">
<dt><pre><span class="Keyword">proc</span> <a href="#sealLoadedRoutines%2CDecodeContext"><span class="Identifier">sealLoadedRoutines</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</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>
Before <tt class="docutils literal"><span class="pre"><span class="Identifier">writeLoweredModule</span></span></tt> re-serializes the lowered module, seal ONLY the module's ROUTINE syms. A <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">t</span><span class="Operator">.</span><span class="Identifier">nif</span></span></tt> written by <tt class="docutils literal"><span class="pre"><span class="Identifier">writeLoweredModule</span></span></tt> is the SOLE source the <tt class="docutils literal"><span class="pre"><span class="Identifier">cg</span></span></tt> stage loads (there is no <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">s</span><span class="Operator">.</span><span class="Identifier">nif</span></span></tt> fallback for its bodies), so every type, global, param and local must still emit a REAL def in it — only cross-routine references may be <tt class="docutils literal"><span class="pre"><span class="Identifier">SymUse</span></span></tt>s (each routine's def is emitted once, at module scope, by the explicit stub loop). Types/globals stay <tt class="docutils literal"><span class="pre"><span class="Identifier">Complete</span></span></tt> so <tt class="docutils literal"><span class="pre"><span class="Identifier">writeType</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">writeGlobals</span></span></tt> emit them; routines become <tt class="docutils literal"><span class="pre"><span class="Identifier">Sealed</span></span></tt> so a body referencing another routine writes a <tt class="docutils literal"><span class="pre"><span class="Identifier">SymUse</span></span></tt> resolved through the module index.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L2653" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L2653" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="setMainModule-procs-all">
<div id="setMainModule,DecodeContext,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#setMainModule%2CDecodeContext%2CFileIndex"><span class="Identifier">setMainModule</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</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>
Records the module that is being compiled fresh so that re-exports of its own symbols by dependencies are not turned into duplicate stubs.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L2001" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L2001" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="toClassSymId-procs-all">
<div id="toClassSymId,ConfigRef,ItemId">
<dt><pre><span class="Keyword">proc</span> <a href="#toClassSymId%2CConfigRef%2CItemId"><span class="Identifier">toClassSymId</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="Identifier">typeId</span><span class="Other">:</span> <a href="itemids.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">nifstreams</span><span class="Other">.</span><span class="Identifier">SymId</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>
Converts a type ItemId to its SymId for the class index.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L112" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L112" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="toConverterIndexEntry-procs-all">
<div id="toConverterIndexEntry,ConfigRef,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#toConverterIndexEntry%2CConfigRef%2CPSym"><span class="Identifier">toConverterIndexEntry</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="Identifier">converterSym</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Other">(</span>
<span class="Identifier">nifstreams</span><span class="Other">.</span><span class="Identifier">SymId</span><span class="Other">,</span> <span class="Identifier">nifstreams</span><span class="Other">.</span><span class="Identifier">SymId</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>
Converts a converter symbol to an index entry (destType, converterSym). Returns the destination type's SymId and the converter's SymId.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L89" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L89" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="toHookIndexEntry-procs-all">
<div id="toHookIndexEntry,ConfigRef,ItemId,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#toHookIndexEntry%2CConfigRef%2CItemId%2CPSym"><span class="Identifier">toHookIndexEntry</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="Identifier">typeId</span><span class="Other">:</span> <a href="itemids.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">;</span> <span class="Identifier">hookSym</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">HookIndexEntry</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>
Converts a type ItemId and hook symbol to a HookIndexEntry for the NIF index.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L78" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L78" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="toMethodIndexEntry-procs-all">
<div id="toMethodIndexEntry,ConfigRef,PSym,string">
<dt><pre><span class="Keyword">proc</span> <a href="#toMethodIndexEntry%2CConfigRef%2CPSym%2Cstring"><span class="Identifier">toMethodIndexEntry</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="Identifier">methodSym</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">signature</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Other">(</span>
<span class="Identifier">nifstreams</span><span class="Other">.</span><span class="Identifier">SymId</span><span class="Other">,</span> <span class="Identifier">nifstreams</span><span class="Other">.</span><span class="Identifier">StrId</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>
Converts a method symbol/signature to a method index entry.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L104" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L104" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="toNifFilename-procs-all">
<div id="toNifFilename,ConfigRef,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#toNifFilename%2CConfigRef%2CFileIndex"><span class="Identifier">toNifFilename</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">f</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">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">OSError</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">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/ast2nif.nim#L3009" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L3009" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="tryResolveCompilerProc-procs-all">
<div id="tryResolveCompilerProc,DecodeContext,string,FileIndex">
<dt><pre><span class="Keyword">proc</span> <a href="#tryResolveCompilerProc%2CDecodeContext%2Cstring%2CFileIndex"><span class="Identifier">tryResolveCompilerProc</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</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">moduleFileIdx</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="astdef.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">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="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">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>
Tries to resolve a compiler proc from a module by checking the NIF index. Returns nil if the symbol doesn't exist. The NIF disamb is mint order, so <tt class="docutils literal"><span class="pre"><span class="Identifier">name</span><span class="Operator">.</span><span class="FloatNumber">0.</span></span></tt> can be any of the overloads sharing the name — for <tt class="docutils literal"><span class="pre"><span class="Identifier">newSeq</span></span></tt> it is the generic magic, not the RTL proc (a refc build then demands codegen of the generic and dies on <tt class="docutils literal"><span class="pre"><span class="Identifier">seq</span><span class="Punctuation">[</span><span class="Identifier">T</span><span class="Punctuation">]</span></span></tt>): enumerate the index entries with this basename and pick the one that carries <tt class="docutils literal"><span class="pre"><span class="Identifier">sfCompilerProc</span></span></tt>.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L3054" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L3054" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="writeLoweredModule-procs-all">
<div id="writeLoweredModule,DecodeContext,ConfigRef,PrecompiledModule,openArray[LogEntry],string">
<dt><pre><span class="Keyword">proc</span> <a href="#writeLoweredModule%2CDecodeContext%2CConfigRef%2CPrecompiledModule%2CopenArray%5BLogEntry%5D%2Cstring"><span class="Identifier">writeLoweredModule</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#DecodeContext"><span class="Identifier">DecodeContext</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="Identifier">precomp</span><span class="Other">:</span> <a href="#PrecompiledModule"><span class="Identifier">PrecompiledModule</span></a><span class="Other">;</span> <span class="Identifier">hooks</span><span class="Other">:</span> <span class="Identifier">openArray</span><span class="Other">[</span><a href="astdef.html#LogEntry"><span class="Identifier">LogEntry</span></a><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">outfile</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="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</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="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">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="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>
Re-serialize a backend-loaded module as a FULL module NIF (<tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">t</span><span class="Operator">.</span><span class="Identifier">nif</span></span></tt>) whose routine <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">sd</span><span class="Punctuation">)</span></span></tt> entries carry their TRANSFORMED bodies (the <tt class="docutils literal"><span class="pre"><span class="Identifier">lower</span></span></tt> stage set them, recursively lifting nested closures — including the async state-machine procs whose inner closure the per-<tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">lowered</span><span class="Punctuation">)</span></span></tt>-entry path failed to cross) and whose lambda-lift-minted entities (closure-env types/syms, lifted nested procs) are real, indexed defs. The <tt class="docutils literal"><span class="pre"><span class="Identifier">cg</span></span></tt> stage then loads it through the normal module loader (<tt class="docutils literal"><span class="pre"><span class="Identifier">moduleFromNifFile</span></span></tt>), so a transformed body arrives via <tt class="docutils literal"><span class="pre"><span class="Identifier">loadSymFromCursor</span></span></tt>'s Step-A 2-way-body slot WITH the lifted signature — no <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">lowered</span><span class="Punctuation">)</span></span></tt> side-car, no <tt class="docutils literal"><span class="pre"><span class="Punctuation">:</span><span class="Identifier">envP</span></span></tt> re-weld. This realizes <tt class="docutils literal"><span class="pre"><span class="Identifier">ic_ideas</span><span class="Operator">.</span><span class="Identifier">md</span></span></tt>'s eager two-way body whole-module.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L3399" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L3399" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="writeNifModule-procs-all">
<div id="writeNifModule,ConfigRef,int32,PNode,seq[LogEntry],seq[PNode],seq[int],seq[],seq[tuple[PSym,PSym,seq[PType],int]],seq[tuple[PSym,PType]],seq[FileIndex],int32,seq[]">
<dt><pre><span class="Keyword">proc</span> <a href="#writeNifModule%2CConfigRef%2Cint32%2CPNode%2Cseq%5BLogEntry%5D%2Cseq%5BPNode%5D%2Cseq%5Bint%5D%2Cseq%5B%5D%2Cseq%5Btuple%5BPSym%2CPSym%2Cseq%5BPType%5D%2Cint%5D%5D%2Cseq%5Btuple%5BPSym%2CPType%5D%5D%2Cseq%5BFileIndex%5D%2Cint32%2Cseq%5B%5D"><span class="Identifier">writeNifModule</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="Identifier">thisModule</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span>
<span class="Identifier">opsLog</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="astdef.html#LogEntry"><span class="Identifier">LogEntry</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">replayActions</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">]</span> <span class="Other">=</span> <span class="Operator">@</span><span class="Other">[</span><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">implDeps</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> <span class="Other">=</span> <span class="Operator">@</span><span class="Other">[</span><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">reexportedModules</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Other">(</span><span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">]</span> <span class="Other">=</span> <span class="Operator">@</span><span class="Other">[</span><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">genericOffers</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">generic</span><span class="Other">,</span> <span class="Identifier">inst</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">,</span> <span class="Identifier">concreteTypes</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="astdef.html#PType"><span class="Identifier">PType</span></a><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">genericParamsCount</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span> <span class="Other">=</span> <span class="Operator">@</span><span class="Other">[</span><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">typeOffers</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">generic</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">,</span> <span class="Identifier">inst</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</span></a><span class="Other">]</span><span class="Other">]</span> <span class="Other">=</span> <span class="Operator">@</span><span class="Other">[</span><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">resolvedImportDeps</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="Other">=</span> <span class="Operator">@</span><span class="Other">[</span><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">firstUnusedId</span><span class="Other">:</span> <span class="Identifier">int32</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">;</span>
<span class="Identifier">expansions</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Other">(</span><a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">,</span> <a href="lineinfos.html#TLineInfo"><span class="Identifier">TLineInfo</span></a><span class="Other">)</span><span class="Other">]</span> <span class="Other">=</span> <span class="Operator">@</span><span class="Other">[</span><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="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</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">ValueError</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">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">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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L1623" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L1623" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="writeSemDeps-procs-all">
<div id="writeSemDeps,ConfigRef,int32,seq[string]">
<dt><pre><span class="Keyword">proc</span> <a href="#writeSemDeps%2CConfigRef%2Cint32%2Cseq%5Bstring%5D"><span class="Identifier">writeSemDeps</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="Identifier">thisModule</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">;</span> <span class="Identifier">importPaths</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><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="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="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">WriteIOEffect</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="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>The module's REAL direct imports as <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">m</span></span></tt> sem resolved them — static plus any a macro generated — recorded as full source paths. <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">ic</span></span></tt> reads this <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">s</span><span class="Operator">.</span><span class="Identifier">deps</span><span class="Operator">.</span><span class="Identifier">nif</span></span></tt> to re-derive the build graph: imports the static scanner missed become new nodes (replacing the old build-failure discovery loop), and <tt class="docutils literal"><span class="pre"><span class="Keyword">when</span> <span class="Identifier">false</span></span></tt> imports the scanner over-included are pruned. Always written so it is current after every successful sem (like <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">edges</span></span></tt>).</p>
<p>Ported to nifcore: delegates to <tt class="docutils literal"><span class="pre"><span class="Identifier">icnifcore</span><span class="Operator">.</span><span class="Identifier">writeSemDeps</span></span></tt> (Stage 1 of the NIF-stack migration; see doc/ic_nifcore_port.md). Output is byte-identical to the previous <tt class="docutils literal"><span class="pre"><span class="Identifier">nifstreams</span></span></tt> writer.</p>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ast2nif.nim#L1610" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ast2nif.nim#L1610" 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: 2026-07-10 18:29:07 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

44
compiler/ast2nif.idx Normal file
View File

@@ -0,0 +1,44 @@
nimTitle ast2nif ast2nif.html module ast2nif 0
nim SysModuleSuffix ast2nif.html#SysModuleSuffix const SysModuleSuffix 38
nim BackendLocalMarker ast2nif.html#BackendLocalMarker const BackendLocalMarker 39
nim icNifTypeName ast2nif.html#icNifTypeName,PType,ConfigRef proc icNifTypeName(typ: PType; config: ConfigRef): string 68
nim toHookIndexEntry ast2nif.html#toHookIndexEntry,ConfigRef,ItemId,PSym proc toHookIndexEntry(config: ConfigRef; typeId: ItemId; hookSym: PSym): HookIndexEntry 78
nim toConverterIndexEntry ast2nif.html#toConverterIndexEntry,ConfigRef,PSym proc toConverterIndexEntry(config: ConfigRef; converterSym: PSym): (nifstreams.SymId,\n nifstreams.SymId) 89
nim toMethodIndexEntry ast2nif.html#toMethodIndexEntry,ConfigRef,PSym,string proc toMethodIndexEntry(config: ConfigRef; methodSym: PSym; signature: string): (\n nifstreams.SymId, nifstreams.StrId) 104
nim toClassSymId ast2nif.html#toClassSymId,ConfigRef,ItemId proc toClassSymId(config: ConfigRef; typeId: ItemId): nifstreams.SymId 112
nim globalName ast2nif.html#globalName,PSym,ConfigRef proc globalName(sym: PSym; config: ConfigRef): string 337
nim ParsedSymName ast2nif.html#ParsedSymName object ParsedSymName 353
nim parseSymName ast2nif.html#parseSymName,string proc parseSymName(s: string): ParsedSymName 358
nim registerNifAstTags ast2nif.html#registerNifAstTags proc registerNifAstTags() 915
nim writeSemDeps ast2nif.html#writeSemDeps,ConfigRef,int32,seq[string] proc writeSemDeps(config: ConfigRef; thisModule: int32; importPaths: seq[string]) 1610
nim writeNifModule ast2nif.html#writeNifModule,ConfigRef,int32,PNode,seq[LogEntry],seq[PNode],seq[int],seq[],seq[tuple[PSym,PSym,seq[PType],int]],seq[tuple[PSym,PType]],seq[FileIndex],int32,seq[] proc writeNifModule(config: ConfigRef; thisModule: int32; n: PNode;\n opsLog: seq[LogEntry]; replayActions: seq[PNode] = @[];\n implDeps: seq[int] = @[];\n reexportedModules: seq[(string, string)] = @[]; genericOffers: seq[tuple[\n generic, inst: PSym, concreteTypes: seq[PType], genericParamsCount: int]] = @[];\n typeOffers: seq[tuple[generic: PSym, inst: PType]] = @[];\n resolvedImportDeps: seq[FileIndex] = @[];\n firstUnusedId: int32 = 0;\n expansions: seq[(PSym, TLineInfo)] = @[]) 1623
nim firstSon ast2nif.html#firstSon,Cursor proc firstSon(n: Cursor): Cursor 1859
nim DecodeContext ast2nif.html#DecodeContext object DecodeContext 1901
nim createDecodeContext ast2nif.html#createDecodeContext,ConfigRef,IdentCache proc createDecodeContext(config: ConfigRef; cache: IdentCache): DecodeContext 1919
nim nextBackendSymItem ast2nif.html#nextBackendSymItem,DecodeContext,int32 proc nextBackendSymItem(c: var DecodeContext; module: int32): int32 1967
nim nextBackendTypeItem ast2nif.html#nextBackendTypeItem,DecodeContext,int32 proc nextBackendTypeItem(c: var DecodeContext; module: int32): int32 1988
nim setMainModule ast2nif.html#setMainModule,DecodeContext,FileIndex proc setMainModule(c: var DecodeContext; fileIdx: FileIndex) 2001
nim getMainModuleSuffix ast2nif.html#getMainModuleSuffix,DecodeContext proc getMainModuleSuffix(c: DecodeContext): string 2006
nim LoadFullAst ast2nif.html#LoadFullAst LoadFlag.LoadFullAst 2030
nim AlwaysLoadInterface ast2nif.html#AlwaysLoadInterface LoadFlag.AlwaysLoadInterface 2030
nim LoadFlag ast2nif.html#LoadFlag enum LoadFlag 2030
nim isStub ast2nif.html#isStub,PType proc isStub(t: PType): bool 2414
nim isStub ast2nif.html#isStub,PSym proc isStub(s: PSym): bool 2415
nim loadType ast2nif.html#loadType,DecodeContext,PType proc loadType(c: var DecodeContext; t: PType) 2498
nim loadSym ast2nif.html#loadSym,DecodeContext,PSym proc loadSym(c: var DecodeContext; s: PSym) 2622
nim sealLoadedRoutines ast2nif.html#sealLoadedRoutines,DecodeContext proc sealLoadedRoutines(c: var DecodeContext) 2653
nim resolveHookSym ast2nif.html#resolveHookSym,DecodeContext,string proc resolveHookSym(c: var DecodeContext; name: string): PSym 2667
nim materializeLazyBody ast2nif.html#materializeLazyBody,DecodeContext,PNode proc materializeLazyBody(c: var DecodeContext; node: PNode) 2892
nim moduleSymbolStubs ast2nif.html#moduleSymbolStubs,DecodeContext,FileIndex proc moduleSymbolStubs(c: var DecodeContext; module: FileIndex): seq[PSym] 2966
nim loadedModuleTypes ast2nif.html#loadedModuleTypes,DecodeContext,FileIndex proc loadedModuleTypes(c: var DecodeContext; module: FileIndex): seq[PType] 2989
nim toNifFilename ast2nif.html#toNifFilename,ConfigRef,FileIndex proc toNifFilename(conf: ConfigRef; f: FileIndex): string 3009
nim tryResolveCompilerProc ast2nif.html#tryResolveCompilerProc,DecodeContext,string,FileIndex proc tryResolveCompilerProc(c: var DecodeContext; name: string;\n moduleFileIdx: FileIndex): PSym 3054
nim ModuleSuffix ast2nif.html#ModuleSuffix type ModuleSuffix 3095
nim PrecompiledModule ast2nif.html#PrecompiledModule object PrecompiledModule 3096
nim scanIncludeGraph ast2nif.html#scanIncludeGraph,ConfigRef proc scanIncludeGraph(config: ConfigRef): seq[\n tuple[includer: string, includes: seq[string]]] 3136
nim nifModuleHasIncludes ast2nif.html#nifModuleHasIncludes,ConfigRef,FileIndex proc nifModuleHasIncludes(config: ConfigRef; fileIdx: FileIndex): bool 3182
nim loadNifModule ast2nif.html#loadNifModule,DecodeContext,ModuleSuffix,TStrTable,TStrTable,set[LoadFlag] proc loadNifModule(c: var DecodeContext; suffix: ModuleSuffix;\n interf, interfHidden: var TStrTable; flags: set[LoadFlag] = {}): PrecompiledModule 3372
nim loadNifModule ast2nif.html#loadNifModule,DecodeContext,FileIndex,TStrTable,TStrTable,set[LoadFlag] proc loadNifModule(c: var DecodeContext; f: FileIndex;\n interf, interfHidden: var TStrTable; flags: set[LoadFlag] = {}): PrecompiledModule 3394
nim writeLoweredModule ast2nif.html#writeLoweredModule,DecodeContext,ConfigRef,PrecompiledModule,openArray[LogEntry],string proc writeLoweredModule(c: var DecodeContext; config: ConfigRef;\n precomp: PrecompiledModule; hooks: openArray[LogEntry];\n outfile: string) 3399
nimgrp isstub ast2nif.html#isStub-procs-all proc 2414
nimgrp loadnifmodule ast2nif.html#loadNifModule-procs-all proc 3372

893
compiler/astalgo.html Normal file
View File

@@ -0,0 +1,893 @@
<?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>astalgo</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">astalgo</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="#TIdentIter" title="TIdentIter = object
h*: Hash
name*: PIdent">TIdentIter</a></li>
<li><a class="reference" href="#TIIPair" title="TIIPair {.final.} = object
key*, val*: int">TIIPair</a></li>
<li><a class="reference" href="#TIIPairSeq" title="TIIPairSeq = seq[TIIPair]">TIIPairSeq</a></li>
<li><a class="reference" href="#TIITable" title="TIITable {.final.} = object
counter*: int
data*: TIIPairSeq">TIITable</a></li>
<li><a class="reference" href="#TTabIter" title="TTabIter = object">TTabIter</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#10" id="60">Consts</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#InvalidKey" title="InvalidKey = -9223372036854775808">InvalidKey</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="#%5B%5D%3D%2CTIdTable%5BT%5D%2CItemId%2CT" title="`[]=`[T](t: var TIdTable[T]; key: ItemId; val: T)">`[]=`[T](t: var TIdTable[T]; key: ItemId; val: T)</a></li>
</ul>
<ul class="simple nested-toc-section">debug
<li><a class="reference" href="#debug%2CPNode%2CConfigRef" title="debug(n: PNode; conf: ConfigRef = nil)">debug(n: PNode; conf: ConfigRef = nil)</a></li>
<li><a class="reference" href="#debug%2CPSym%2CConfigRef" title="debug(n: PSym; conf: ConfigRef = nil)">debug(n: PSym; conf: ConfigRef = nil)</a></li>
<li><a class="reference" href="#debug%2CPType%2CConfigRef" title="debug(n: PType; conf: ConfigRef = nil)">debug(n: PType; conf: ConfigRef = nil)</a></li>
</ul>
<ul class="simple nested-toc-section">firstIdentExcluding
<li><a class="reference" href="#firstIdentExcluding%2CTIdentIter%2CTStrTable%2CPIdent%2CIntSet" title="firstIdentExcluding(ti: var TIdentIter; tab: TStrTable; s: PIdent;
excluding: IntSet): PSym">firstIdentExcluding(ti: var TIdentIter; tab: TStrTable; s: PIdent;
excluding: IntSet): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">fromSystem
<li><a class="reference" href="#fromSystem%2CPSym" title="fromSystem(op: PSym): bool">fromSystem(op: PSym): bool</a></li>
</ul>
<ul class="simple nested-toc-section">getModule
<li><a class="reference" href="#getModule%2CPSym" title="getModule(s: PSym): PSym">getModule(s: PSym): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">getNamedParamFromList
<li><a class="reference" href="#getNamedParamFromList%2CPNode%2CPIdent" title="getNamedParamFromList(list: PNode; ident: PIdent): PSym">getNamedParamFromList(list: PNode; ident: PIdent): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">getOrDefault
<li><a class="reference" href="#getOrDefault%2CTIdTable%5BT%5D%2CItemId" title="getOrDefault[T](t: TIdTable[T]; key: ItemId): T">getOrDefault[T](t: TIdTable[T]; key: ItemId): T</a></li>
</ul>
<ul class="simple nested-toc-section">getSymFromList
<li><a class="reference" href="#getSymFromList%2CPNode%2CPIdent%2Cint" title="getSymFromList(list: PNode; ident: PIdent; start: int = 0): PSym">getSymFromList(list: PNode; ident: PIdent; start: int = 0): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">hashNode
<li><a class="reference" href="#hashNode%2CRootRef" title="hashNode(p: RootRef): Hash">hashNode(p: RootRef): Hash</a></li>
</ul>
<ul class="simple nested-toc-section">iiTableGet
<li><a class="reference" href="#iiTableGet%2CTIITable%2Cint" title="iiTableGet(t: TIITable; key: int): int">iiTableGet(t: TIITable; key: int): int</a></li>
</ul>
<ul class="simple nested-toc-section">iiTablePut
<li><a class="reference" href="#iiTablePut%2CTIITable%2Cint%2Cint" title="iiTablePut(t: var TIITable; key, val: int)">iiTablePut(t: var TIITable; key, val: int)</a></li>
</ul>
<ul class="simple nested-toc-section">initIdentIter
<li><a class="reference" href="#initIdentIter%2CTIdentIter%2CTStrTable%2CPIdent" title="initIdentIter(ti: var TIdentIter; tab: TStrTable; s: PIdent): PSym">initIdentIter(ti: var TIdentIter; tab: TStrTable; s: PIdent): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">initIITable
<li><a class="reference" href="#initIITable%2CTIITable" title="initIITable(x: var TIITable)">initIITable(x: var TIITable)</a></li>
</ul>
<ul class="simple nested-toc-section">initTabIter
<li><a class="reference" href="#initTabIter%2CTTabIter%2CTStrTable" title="initTabIter(ti: var TTabIter; tab: TStrTable): PSym">initTabIter(ti: var TTabIter; tab: TStrTable): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">isDiscriminantField
<li><a class="reference" href="#isDiscriminantField%2CPNode" title="isDiscriminantField(n: PNode): bool">isDiscriminantField(n: PNode): bool</a></li>
</ul>
<ul class="simple nested-toc-section">leValue
<li><a class="reference" href="#leValue%2CPNode%2CPNode" title="leValue(a, b: PNode): bool">leValue(a, b: PNode): bool</a></li>
</ul>
<ul class="simple nested-toc-section">listSymbolNames
<li><a class="reference" href="#listSymbolNames%2CopenArray%5BPSym%5D" title="listSymbolNames(symbols: openArray[PSym]): string">listSymbolNames(symbols: openArray[PSym]): string</a></li>
</ul>
<ul class="simple nested-toc-section">lookupInRecord
<li><a class="reference" href="#lookupInRecord%2CPNode%2CPIdent" title="lookupInRecord(n: PNode; field: PIdent): PSym">lookupInRecord(n: PNode; field: PIdent): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">nextIdentExcluding
<li><a class="reference" href="#nextIdentExcluding%2CTIdentIter%2CTStrTable%2CIntSet" title="nextIdentExcluding(ti: var TIdentIter; tab: TStrTable; excluding: IntSet): PSym">nextIdentExcluding(ti: var TIdentIter; tab: TStrTable; excluding: IntSet): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">nextIdentIter
<li><a class="reference" href="#nextIdentIter%2CTIdentIter%2CTStrTable" title="nextIdentIter(ti: var TIdentIter; tab: TStrTable): PSym">nextIdentIter(ti: var TIdentIter; tab: TStrTable): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">nextIter
<li><a class="reference" href="#nextIter%2CTTabIter%2CTStrTable" title="nextIter(ti: var TTabIter; tab: TStrTable): PSym">nextIter(ti: var TTabIter; tab: TStrTable): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">objectSetContains
<li><a class="reference" href="#objectSetContains%2CTObjectSet%2CRootRef" title="objectSetContains(t: TObjectSet; obj: RootRef): bool">objectSetContains(t: TObjectSet; obj: RootRef): bool</a></li>
</ul>
<ul class="simple nested-toc-section">objectSetContainsOrIncl
<li><a class="reference" href="#objectSetContainsOrIncl%2CTObjectSet%2CRootRef" title="objectSetContainsOrIncl(t: var TObjectSet; obj: RootRef): bool">objectSetContainsOrIncl(t: var TObjectSet; obj: RootRef): bool</a></li>
</ul>
<ul class="simple nested-toc-section">objectSetIncl
<li><a class="reference" href="#objectSetIncl%2CTObjectSet%2CRootRef" title="objectSetIncl(t: var TObjectSet; obj: RootRef)">objectSetIncl(t: var TObjectSet; obj: RootRef)</a></li>
</ul>
<ul class="simple nested-toc-section">sameValue
<li><a class="reference" href="#sameValue%2CPNode%2CPNode" title="sameValue(a, b: PNode): bool">sameValue(a, b: PNode): bool</a></li>
</ul>
<ul class="simple nested-toc-section">skipConvCastAndClosure
<li><a class="reference" href="#skipConvCastAndClosure%2CPNode" title="skipConvCastAndClosure(n: PNode): PNode">skipConvCastAndClosure(n: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">weakLeValue
<li><a class="reference" href="#weakLeValue%2CPNode%2CPNode" title="weakLeValue(a, b: PNode): TImplication">weakLeValue(a, b: PNode): TImplication</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">idTablePairs
<li><a class="reference" href="#idTablePairs.i%2CTIdTable%5BT%5D" title="idTablePairs[T](t: TIdTable[T]): tuple[key: ItemId, val: T]">idTablePairs[T](t: TIdTable[T]): tuple[key: ItemId, val: T]</a></li>
</ul>
<ul class="simple nested-toc-section">items
<li><a class="reference" href="#items.i%2CTStrTable" title="items(tab: TStrTable): PSym">items(tab: TStrTable): PSym</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">debug
<li><a class="reference" href="#debug.t%2Cauto" title="debug(x: auto)">debug(x: auto)</a></li>
<li><a class="reference" href="#debug.t" title="debug(x: PSym | PType | PNode)">debug(x: PSym | PType | PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">idTableGet
<li><a class="reference" href="#idTableGet.t%2CTIdTable%5BT%5D%2C" title="idTableGet[T](t: TIdTable[T]; key: PType | PSym): T">idTableGet[T](t: TIdTable[T]; key: PType | PSym): T</a></li>
</ul>
<ul class="simple nested-toc-section">idTablePut
<li><a class="reference" href="#idTablePut.t%2CTIdTable%5BT%5D%2C%2CT" title="idTablePut[T](t: var TIdTable[T]; key: PType | PSym; val: T)">idTablePut[T](t: var TIdTable[T]; key: PType | PSym; val: T)</a></li>
</ul>
<ul class="simple nested-toc-section">mdbg
<li><a class="reference" href="#mdbg.t" title="mdbg(): bool">mdbg(): bool</a></li>
</ul>
</ul>
</details>
</li>
<li>
<a class="reference reference-toplevel" href="#19" id="69">Exports</a>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></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="astyaml.html">astyaml</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="rodutils.html">rodutils</a>, <a class="reference external" href="msgs.html">msgs</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="TIdentIter">
<dt><pre><a href="#TIdentIter"><span class="Identifier">TIdentIter</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">h</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Hash</span>
<span class="Identifier">name</span><span class="Operator">*</span><span class="Other">:</span> <a href="idents.html#PIdent"><span class="Identifier">PIdent</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L530" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L530" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TIIPair">
<dt><pre><a href="#TIIPair"><span class="Identifier">TIIPair</span></a> {.<span class="Identifier">final</span>.} <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">key</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">val</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L77" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L77" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TIIPairSeq">
<dt><pre><a href="#TIIPairSeq"><span class="Identifier">TIIPairSeq</span></a> <span class="Other">=</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="#TIIPair"><span class="Identifier">TIIPair</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L80" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L80" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TIITable">
<dt><pre><a href="#TIITable"><span class="Identifier">TIITable</span></a> {.<span class="Identifier">final</span>.} <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">counter</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span>
<span class="Identifier">data</span><span class="Operator">*</span><span class="Other">:</span> <a href="#TIIPairSeq"><span class="Identifier">TIIPairSeq</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L81" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L81" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TTabIter">
<dt><pre><a href="#TTabIter"><span class="Identifier">TTabIter</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/astalgo.nim#L582" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L582" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</dl>
</div>
<div class="section" id="10">
<h1><a class="toc-backref" href="#10">Consts</a></h1>
<dl class="item">
<div id="InvalidKey">
<dt><pre><a href="#InvalidKey"><span class="Identifier">InvalidKey</span></a> <span class="Other">=</span> <span class="DecNumber">-9223372036854775808</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L74" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L74" 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="[]=,TIdTable[T],ItemId,T">
<dt><pre><span class="Keyword">proc</span> <a href="#%5B%5D%3D%2CTIdTable%5BT%5D%2CItemId%2CT"><span class="Identifier">`[]=`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="astdef.html#TIdTable"><span class="Identifier">TIdTable</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">:</span> <a href="itemids.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">;</span> <span class="Identifier">val</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L652" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L652" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="debug-procs-all">
<div id="debug,PNode,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#debug%2CPNode%2CConfigRef"><span class="Identifier">debug</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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="Keyword">nil</span><span class="Other">)</span> {.<span class="Identifier">exportc</span><span class="Other">:</span> <span class="StringLit">&quot;debugNode&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">deprecated</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</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">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="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>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L32" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L32" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="debug,PSym,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#debug%2CPSym%2CConfigRef"><span class="Identifier">debug</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</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="Keyword">nil</span><span class="Other">)</span> {.<span class="Identifier">exportc</span><span class="Other">:</span> <span class="StringLit">&quot;debugSym&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">deprecated</span><span class="Other">,</span>
<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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L30" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L30" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="debug,PType,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#debug%2CPType%2CConfigRef"><span class="Identifier">debug</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</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="Keyword">nil</span><span class="Other">)</span> {.<span class="Identifier">exportc</span><span class="Other">:</span> <span class="StringLit">&quot;debugType&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">deprecated</span><span class="Other">,</span>
<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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L31" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L31" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="firstIdentExcluding-procs-all">
<div id="firstIdentExcluding,TIdentIter,TStrTable,PIdent,IntSet">
<dt><pre><span class="Keyword">proc</span> <a href="#firstIdentExcluding%2CTIdentIter%2CTStrTable%2CPIdent%2CIntSet"><span class="Identifier">firstIdentExcluding</span></a><span class="Other">(</span><span class="Identifier">ti</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TIdentIter"><span class="Identifier">TIdentIter</span></a><span class="Other">;</span> <span class="Identifier">tab</span><span class="Other">:</span> <a href="astdef.html#TStrTable"><span class="Identifier">TStrTable</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="idents.html#PIdent"><span class="Identifier">PIdent</span></a><span class="Other">;</span>
<span class="Identifier">excluding</span><span class="Other">:</span> <span class="Identifier">IntSet</span><span class="Other">)</span><span class="Other">:</span> <a href="astdef.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/astalgo.nim#L574" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L574" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="fromSystem-procs-all">
<div id="fromSystem,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#fromSystem%2CPSym"><span class="Identifier">fromSystem</span></a><span class="Other">(</span><span class="Identifier">op</span><span class="Other">:</span> <a href="astdef.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="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span>
<span class="Identifier">ValueError</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">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/astalgo.nim#L164" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L164" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getModule-procs-all">
<div id="getModule,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#getModule%2CPSym"><span class="Identifier">getModule</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span>
<span class="Identifier">ValueError</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">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/astalgo.nim#L159" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L159" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getNamedParamFromList-procs-all">
<div id="getNamedParamFromList,PNode,PIdent">
<dt><pre><span class="Keyword">proc</span> <a href="#getNamedParamFromList%2CPNode%2CPIdent"><span class="Identifier">getNamedParamFromList</span></a><span class="Other">(</span><span class="Identifier">list</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">ident</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="astdef.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>
<p>Named parameters are special because a named parameter can be gensym'ed and then they have '`&lt;number&gt;' suffix that we need to ignore, see compiler / evaltempl.nim, snippet:</p>
<p><pre class="listing"><span class="Identifier">result</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">newIdentNode</span><span class="Punctuation">(</span><span class="Identifier">getIdent</span><span class="Punctuation">(</span><span class="Identifier">c</span><span class="Operator">.</span><span class="Identifier">ic</span><span class="Punctuation">,</span> <span class="Identifier">x</span><span class="Operator">.</span><span class="Identifier">name</span><span class="Operator">.</span><span class="Identifier">s</span> <span class="Operator">&amp;</span> <span class="StringLit">&quot;</span><span class="EscapeSequence">\`</span><span class="StringLit">gensym&quot;</span> <span class="Operator">&amp;</span> <span class="Operator">$</span><span class="Identifier">x</span><span class="Operator">.</span><span class="Identifier">id</span><span class="Punctuation">)</span><span class="Punctuation">,</span>
<span class="Keyword">if</span> <span class="Identifier">c</span><span class="Operator">.</span><span class="Identifier">instLines</span><span class="Punctuation">:</span> <span class="Identifier">actual</span><span class="Operator">.</span><span class="Identifier">info</span> <span class="Keyword">else</span><span class="Punctuation">:</span> <span class="Identifier">templ</span><span class="Operator">.</span><span class="Identifier">info</span><span class="Punctuation">)</span></pre></p>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L200" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L200" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getOrDefault-procs-all">
<div id="getOrDefault,TIdTable[T],ItemId">
<dt><pre><span class="Keyword">proc</span> <a href="#getOrDefault%2CTIdTable%5BT%5D%2CItemId"><span class="Identifier">getOrDefault</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <a href="astdef.html#TIdTable"><span class="Identifier">TIdTable</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">:</span> <a href="itemids.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L633" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L633" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getSymFromList-procs-all">
<div id="getSymFromList,PNode,PIdent,int">
<dt><pre><span class="Keyword">proc</span> <a href="#getSymFromList%2CPNode%2CPIdent%2Cint"><span class="Identifier">getSymFromList</span></a><span class="Other">(</span><span class="Identifier">list</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">ident</span><span class="Other">:</span> <a href="idents.html#PIdent"><span class="Identifier">PIdent</span></a><span class="Other">;</span> <span class="Identifier">start</span><span class="Other">:</span> <span class="Identifier">int</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <a href="astdef.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/astalgo.nim#L165" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L165" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="hashNode-procs-all">
<div id="hashNode,RootRef">
<dt><pre><span class="Keyword">proc</span> <a href="#hashNode%2CRootRef"><span class="Identifier">hashNode</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <span class="Identifier">RootRef</span><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/astalgo.nim#L26" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L26" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="iiTableGet-procs-all">
<div id="iiTableGet,TIITable,int">
<dt><pre><span class="Keyword">proc</span> <a href="#iiTableGet%2CTIITable%2Cint"><span class="Identifier">iiTableGet</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <a href="#TIITable"><span class="Identifier">TIITable</span></a><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</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/astalgo.nim#L87" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L87" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="iiTablePut-procs-all">
<div id="iiTablePut,TIITable,int,int">
<dt><pre><span class="Keyword">proc</span> <a href="#iiTablePut%2CTIITable%2Cint%2Cint"><span class="Identifier">iiTablePut</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TIITable"><span class="Identifier">TIITable</span></a><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">,</span> <span class="Identifier">val</span><span class="Other">:</span> <span class="Identifier">int</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/astalgo.nim#L88" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L88" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="initIdentIter-procs-all">
<div id="initIdentIter,TIdentIter,TStrTable,PIdent">
<dt><pre><span class="Keyword">proc</span> <a href="#initIdentIter%2CTIdentIter%2CTStrTable%2CPIdent"><span class="Identifier">initIdentIter</span></a><span class="Other">(</span><span class="Identifier">ti</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TIdentIter"><span class="Identifier">TIdentIter</span></a><span class="Other">;</span> <span class="Identifier">tab</span><span class="Other">:</span> <a href="astdef.html#TStrTable"><span class="Identifier">TStrTable</span></a><span class="Other">;</span> <span class="Identifier">s</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="astdef.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/astalgo.nim#L552" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L552" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="initIITable-procs-all">
<div id="initIITable,TIITable">
<dt><pre><span class="Keyword">proc</span> <a href="#initIITable%2CTIITable"><span class="Identifier">initIITable</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TIITable"><span class="Identifier">TIITable</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/astalgo.nim#L86" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L86" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="initTabIter-procs-all">
<div id="initTabIter,TTabIter,TStrTable">
<dt><pre><span class="Keyword">proc</span> <a href="#initTabIter%2CTTabIter%2CTStrTable"><span class="Identifier">initTabIter</span></a><span class="Other">(</span><span class="Identifier">ti</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TTabIter"><span class="Identifier">TTabIter</span></a><span class="Other">;</span> <span class="Identifier">tab</span><span class="Other">:</span> <a href="astdef.html#TStrTable"><span class="Identifier">TStrTable</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.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/astalgo.nim#L601" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L601" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isDiscriminantField-procs-all">
<div id="isDiscriminantField,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#isDiscriminantField%2CPNode"><span class="Identifier">isDiscriminantField</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/astalgo.nim#L731" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L731" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="leValue-procs-all">
<div id="leValue,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#leValue%2CPNode%2CPNode"><span class="Identifier">leValue</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="astdef.html#PNode"><span class="Identifier">PNode</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">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="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/astalgo.nim#L117" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L117" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="listSymbolNames-procs-all">
<div id="listSymbolNames,openArray[PSym]">
<dt><pre><span class="Keyword">proc</span> <a href="#listSymbolNames%2CopenArray%5BPSym%5D"><span class="Identifier">listSymbolNames</span></a><span class="Other">(</span><span class="Identifier">symbols</span><span class="Other">:</span> <span class="Identifier">openArray</span><span class="Other">[</span><a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">]</span><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/astalgo.nim#L724" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L724" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="lookupInRecord-procs-all">
<div id="lookupInRecord,PNode,PIdent">
<dt><pre><span class="Keyword">proc</span> <a href="#lookupInRecord%2CPNode%2CPIdent"><span class="Identifier">lookupInRecord</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">field</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="astdef.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/astalgo.nim#L70" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L70" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="nextIdentExcluding-procs-all">
<div id="nextIdentExcluding,TIdentIter,TStrTable,IntSet">
<dt><pre><span class="Keyword">proc</span> <a href="#nextIdentExcluding%2CTIdentIter%2CTStrTable%2CIntSet"><span class="Identifier">nextIdentExcluding</span></a><span class="Other">(</span><span class="Identifier">ti</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TIdentIter"><span class="Identifier">TIdentIter</span></a><span class="Other">;</span> <span class="Identifier">tab</span><span class="Other">:</span> <a href="astdef.html#TStrTable"><span class="Identifier">TStrTable</span></a><span class="Other">;</span> <span class="Identifier">excluding</span><span class="Other">:</span> <span class="Identifier">IntSet</span><span class="Other">)</span><span class="Other">:</span> <a href="astdef.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/astalgo.nim#L558" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L558" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="nextIdentIter-procs-all">
<div id="nextIdentIter,TIdentIter,TStrTable">
<dt><pre><span class="Keyword">proc</span> <a href="#nextIdentIter%2CTIdentIter%2CTStrTable"><span class="Identifier">nextIdentIter</span></a><span class="Other">(</span><span class="Identifier">ti</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TIdentIter"><span class="Identifier">TIdentIter</span></a><span class="Other">;</span> <span class="Identifier">tab</span><span class="Other">:</span> <a href="astdef.html#TStrTable"><span class="Identifier">TStrTable</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.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/astalgo.nim#L534" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L534" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="nextIter-procs-all">
<div id="nextIter,TTabIter,TStrTable">
<dt><pre><span class="Keyword">proc</span> <a href="#nextIter%2CTTabIter%2CTStrTable"><span class="Identifier">nextIter</span></a><span class="Other">(</span><span class="Identifier">ti</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TTabIter"><span class="Identifier">TTabIter</span></a><span class="Other">;</span> <span class="Identifier">tab</span><span class="Other">:</span> <a href="astdef.html#TStrTable"><span class="Identifier">TStrTable</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.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/astalgo.nim#L585" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L585" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="objectSetContains-procs-all">
<div id="objectSetContains,TObjectSet,RootRef">
<dt><pre><span class="Keyword">proc</span> <a href="#objectSetContains%2CTObjectSet%2CRootRef"><span class="Identifier">objectSetContains</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <a href="astdef.html#TObjectSet"><span class="Identifier">TObjectSet</span></a><span class="Other">;</span> <span class="Identifier">obj</span><span class="Other">:</span> <span class="Identifier">RootRef</span><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/astalgo.nim#L481" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L481" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="objectSetContainsOrIncl-procs-all">
<div id="objectSetContainsOrIncl,TObjectSet,RootRef">
<dt><pre><span class="Keyword">proc</span> <a href="#objectSetContainsOrIncl%2CTObjectSet%2CRootRef"><span class="Identifier">objectSetContainsOrIncl</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="astdef.html#TObjectSet"><span class="Identifier">TObjectSet</span></a><span class="Other">;</span> <span class="Identifier">obj</span><span class="Other">:</span> <span class="Identifier">RootRef</span><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/astalgo.nim#L510" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L510" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="objectSetIncl-procs-all">
<div id="objectSetIncl,TObjectSet,RootRef">
<dt><pre><span class="Keyword">proc</span> <a href="#objectSetIncl%2CTObjectSet%2CRootRef"><span class="Identifier">objectSetIncl</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="astdef.html#TObjectSet"><span class="Identifier">TObjectSet</span></a><span class="Other">;</span> <span class="Identifier">obj</span><span class="Other">:</span> <span class="Identifier">RootRef</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/astalgo.nim#L505" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L505" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="sameValue-procs-all">
<div id="sameValue,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#sameValue%2CPNode%2CPNode"><span class="Identifier">sameValue</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="astdef.html#PNode"><span class="Identifier">PNode</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">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="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/astalgo.nim#L103" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L103" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="skipConvCastAndClosure-procs-all">
<div id="skipConvCastAndClosure,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#skipConvCastAndClosure%2CPNode"><span class="Identifier">skipConvCastAndClosure</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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/astalgo.nim#L92" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L92" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="weakLeValue-procs-all">
<div id="weakLeValue,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#weakLeValue%2CPNode%2CPNode"><span class="Identifier">weakLeValue</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="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#TImplication"><span class="Identifier">TImplication</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">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="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/astalgo.nim#L132" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L132" 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="idTablePairs-iterators-all">
<div id="idTablePairs.i,TIdTable[T]">
<dt><pre><span class="Keyword">iterator</span> <a href="#idTablePairs.i%2CTIdTable%5BT%5D"><span class="Identifier">idTablePairs</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <a href="astdef.html#TIdTable"><span class="Identifier">TIdTable</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">key</span><span class="Other">:</span> <a href="itemids.html#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">,</span> <span class="Identifier">val</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L674" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L674" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="items-iterators-all">
<div id="items.i,TStrTable">
<dt><pre><span class="Keyword">iterator</span> <a href="#items.i%2CTStrTable"><span class="Identifier">items</span></a><span class="Other">(</span><span class="Identifier">tab</span><span class="Other">:</span> <a href="astdef.html#TStrTable"><span class="Identifier">TStrTable</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.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/astalgo.nim#L608" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L608" 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="debug-templates-all">
<div id="debug.t,auto">
<dt><pre><span class="Keyword">template</span> <a href="#debug.t%2Cauto"><span class="Identifier">debug</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">auto</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">deprecated</span></span>.}</pre></dt>
<dd>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L42" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L42" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="debug.t">
<dt><pre><span class="Keyword">template</span> <a href="#debug.t"><span class="Identifier">debug</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a> <span class="Operator">|</span> <a href="astdef.html#PType"><span class="Identifier">PType</span></a> <span class="Operator">|</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">deprecated</span></span>.}</pre></dt>
<dd>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L34" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L34" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="idTableGet-templates-all">
<div id="idTableGet.t,TIdTable[T],">
<dt><pre><span class="Keyword">template</span> <a href="#idTableGet.t%2CTIdTable%5BT%5D%2C"><span class="Identifier">idTableGet</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <a href="astdef.html#TIdTable"><span class="Identifier">TIdTable</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</span></a> <span class="Operator">|</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L638" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L638" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="idTablePut-templates-all">
<div id="idTablePut.t,TIdTable[T],,T">
<dt><pre><span class="Keyword">template</span> <a href="#idTablePut.t%2CTIdTable%5BT%5D%2C%2CT"><span class="Identifier">idTablePut</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="astdef.html#TIdTable"><span class="Identifier">TIdTable</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</span></a> <span class="Operator">|</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">val</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L671" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L671" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="mdbg-templates-all">
<div id="mdbg.t">
<dt><pre><span class="Keyword">template</span> <a href="#mdbg.t"><span class="Identifier">mdbg</span></a><span class="Other">(</span><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">deprecated</span></span>.}</pre></dt>
<dd>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astalgo.nim#L45" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astalgo.nim#L45" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
</dl>
</div>
<div class="section" id="19">
<h1><a class="toc-backref" href="#19">Exports</a></h1>
<dl class="item">
<a href="astyaml.html#treeToYaml,ConfigRef,PNode,int,int"><span class="Identifier">treeToYaml</span></a>, <a href="astyaml.html#typeToYaml,ConfigRef,PType,int,int"><span class="Identifier">typeToYaml</span></a>, <a href="astyaml.html#symToYaml,ConfigRef,PSym,int,int"><span class="Identifier">symToYaml</span></a>, <a href="astyaml.html#lineInfoToStr,ConfigRef,TLineInfo"><span class="Identifier">lineInfoToStr</span></a>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-07-10 18:29:08 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

45
compiler/astalgo.idx Normal file
View File

@@ -0,0 +1,45 @@
nimTitle astalgo astalgo.html module astalgo 0
nim hashNode astalgo.html#hashNode,RootRef proc hashNode(p: RootRef): Hash 26
nim debug astalgo.html#debug,PSym,ConfigRef proc debug(n: PSym; conf: ConfigRef = nil) 30
nim debug astalgo.html#debug,PType,ConfigRef proc debug(n: PType; conf: ConfigRef = nil) 31
nim debug astalgo.html#debug,PNode,ConfigRef proc debug(n: PNode; conf: ConfigRef = nil) 32
nim debug astalgo.html#debug.t template debug(x: PSym | PType | PNode) 34
nim debug astalgo.html#debug.t,auto template debug(x: auto) 42
nim mdbg astalgo.html#mdbg.t template mdbg(): bool 45
nim lookupInRecord astalgo.html#lookupInRecord,PNode,PIdent proc lookupInRecord(n: PNode; field: PIdent): PSym 70
nim InvalidKey astalgo.html#InvalidKey const InvalidKey 74
nim TIIPair astalgo.html#TIIPair object TIIPair 77
nim TIIPairSeq astalgo.html#TIIPairSeq type TIIPairSeq 80
nim TIITable astalgo.html#TIITable object TIITable 81
nim initIITable astalgo.html#initIITable,TIITable proc initIITable(x: var TIITable) 86
nim iiTableGet astalgo.html#iiTableGet,TIITable,int proc iiTableGet(t: TIITable; key: int): int 87
nim iiTablePut astalgo.html#iiTablePut,TIITable,int,int proc iiTablePut(t: var TIITable; key, val: int) 88
nim skipConvCastAndClosure astalgo.html#skipConvCastAndClosure,PNode proc skipConvCastAndClosure(n: PNode): PNode 92
nim sameValue astalgo.html#sameValue,PNode,PNode proc sameValue(a, b: PNode): bool 103
nim leValue astalgo.html#leValue,PNode,PNode proc leValue(a, b: PNode): bool 117
nim weakLeValue astalgo.html#weakLeValue,PNode,PNode proc weakLeValue(a, b: PNode): TImplication 132
nim getModule astalgo.html#getModule,PSym proc getModule(s: PSym): PSym 159
nim fromSystem astalgo.html#fromSystem,PSym proc fromSystem(op: PSym): bool 164
nim getSymFromList astalgo.html#getSymFromList,PNode,PIdent,int proc getSymFromList(list: PNode; ident: PIdent; start: int = 0): PSym 165
nim getNamedParamFromList astalgo.html#getNamedParamFromList,PNode,PIdent proc getNamedParamFromList(list: PNode; ident: PIdent): PSym 200
nim objectSetContains astalgo.html#objectSetContains,TObjectSet,RootRef proc objectSetContains(t: TObjectSet; obj: RootRef): bool 481
nim objectSetIncl astalgo.html#objectSetIncl,TObjectSet,RootRef proc objectSetIncl(t: var TObjectSet; obj: RootRef) 505
nim objectSetContainsOrIncl astalgo.html#objectSetContainsOrIncl,TObjectSet,RootRef proc objectSetContainsOrIncl(t: var TObjectSet; obj: RootRef): bool 510
nim TIdentIter astalgo.html#TIdentIter object TIdentIter 530
nim nextIdentIter astalgo.html#nextIdentIter,TIdentIter,TStrTable proc nextIdentIter(ti: var TIdentIter; tab: TStrTable): PSym 534
nim initIdentIter astalgo.html#initIdentIter,TIdentIter,TStrTable,PIdent proc initIdentIter(ti: var TIdentIter; tab: TStrTable; s: PIdent): PSym 552
nim nextIdentExcluding astalgo.html#nextIdentExcluding,TIdentIter,TStrTable,IntSet proc nextIdentExcluding(ti: var TIdentIter; tab: TStrTable; excluding: IntSet): PSym 558
nim firstIdentExcluding astalgo.html#firstIdentExcluding,TIdentIter,TStrTable,PIdent,IntSet proc firstIdentExcluding(ti: var TIdentIter; tab: TStrTable; s: PIdent;\n excluding: IntSet): PSym 574
nim TTabIter astalgo.html#TTabIter object TTabIter 582
nim nextIter astalgo.html#nextIter,TTabIter,TStrTable proc nextIter(ti: var TTabIter; tab: TStrTable): PSym 585
nim initTabIter astalgo.html#initTabIter,TTabIter,TStrTable proc initTabIter(ti: var TTabIter; tab: TStrTable): PSym 601
nim items astalgo.html#items.i,TStrTable iterator items(tab: TStrTable): PSym 608
nim getOrDefault astalgo.html#getOrDefault,TIdTable[T],ItemId proc getOrDefault[T](t: TIdTable[T]; key: ItemId): T 633
nim idTableGet astalgo.html#idTableGet.t,TIdTable[T], template idTableGet[T](t: TIdTable[T]; key: PType | PSym): T 638
nim `[]=` astalgo.html#[]=,TIdTable[T],ItemId,T proc `[]=`[T](t: var TIdTable[T]; key: ItemId; val: T) 652
nim idTablePut astalgo.html#idTablePut.t,TIdTable[T],,T template idTablePut[T](t: var TIdTable[T]; key: PType | PSym; val: T) 671
nim idTablePairs astalgo.html#idTablePairs.i,TIdTable[T] iterator idTablePairs[T](t: TIdTable[T]): tuple[key: ItemId, val: T] 674
nim listSymbolNames astalgo.html#listSymbolNames,openArray[PSym] proc listSymbolNames(symbols: openArray[PSym]): string 724
nim isDiscriminantField astalgo.html#isDiscriminantField,PNode proc isDiscriminantField(n: PNode): bool 731
nimgrp debug astalgo.html#debug-procs-all proc 30
nimgrp debug astalgo.html#debug-templates-all template 34

2507
compiler/astdef.html Normal file

File diff suppressed because one or more lines are too long

728
compiler/astdef.idx Normal file
View File

@@ -0,0 +1,728 @@
nimTitle astdef astdef.html module astdef 0
nim nifcBackendActive astdef.html#nifcBackendActive var nifcBackendActive 20
nim ccNimCall astdef.html#ccNimCall TCallingConvention.ccNimCall 36
nim ccStdCall astdef.html#ccStdCall TCallingConvention.ccStdCall 36
nim ccCDecl astdef.html#ccCDecl TCallingConvention.ccCDecl 36
nim ccSafeCall astdef.html#ccSafeCall TCallingConvention.ccSafeCall 36
nim ccSysCall astdef.html#ccSysCall TCallingConvention.ccSysCall 36
nim ccInline astdef.html#ccInline TCallingConvention.ccInline 36
nim ccNoInline astdef.html#ccNoInline TCallingConvention.ccNoInline 36
nim ccFastCall astdef.html#ccFastCall TCallingConvention.ccFastCall 36
nim ccThisCall astdef.html#ccThisCall TCallingConvention.ccThisCall 36
nim ccClosure astdef.html#ccClosure TCallingConvention.ccClosure 36
nim ccNoConvention astdef.html#ccNoConvention TCallingConvention.ccNoConvention 36
nim ccMember astdef.html#ccMember TCallingConvention.ccMember 36
nim TCallingConvention astdef.html#TCallingConvention enum TCallingConvention 36
nim TNodeKinds astdef.html#TNodeKinds type TNodeKinds 50
nim sfUsed astdef.html#sfUsed TSymFlag.sfUsed 53
nim sfExported astdef.html#sfExported TSymFlag.sfExported 53
nim sfFromGeneric astdef.html#sfFromGeneric TSymFlag.sfFromGeneric 53
nim sfGlobal astdef.html#sfGlobal TSymFlag.sfGlobal 53
nim sfForward astdef.html#sfForward TSymFlag.sfForward 53
nim sfWasForwarded astdef.html#sfWasForwarded TSymFlag.sfWasForwarded 53
nim sfImportc astdef.html#sfImportc TSymFlag.sfImportc 53
nim sfExportc astdef.html#sfExportc TSymFlag.sfExportc 53
nim sfMangleCpp astdef.html#sfMangleCpp TSymFlag.sfMangleCpp 53
nim sfVolatile astdef.html#sfVolatile TSymFlag.sfVolatile 53
nim sfRegister astdef.html#sfRegister TSymFlag.sfRegister 53
nim sfPure astdef.html#sfPure TSymFlag.sfPure 53
nim sfNoSideEffect astdef.html#sfNoSideEffect TSymFlag.sfNoSideEffect 53
nim sfSideEffect astdef.html#sfSideEffect TSymFlag.sfSideEffect 53
nim sfMainModule astdef.html#sfMainModule TSymFlag.sfMainModule 53
nim sfSystemModule astdef.html#sfSystemModule TSymFlag.sfSystemModule 53
nim sfNoReturn astdef.html#sfNoReturn TSymFlag.sfNoReturn 53
nim sfAddrTaken astdef.html#sfAddrTaken TSymFlag.sfAddrTaken 53
nim sfCompilerProc astdef.html#sfCompilerProc TSymFlag.sfCompilerProc 53
nim sfEscapes astdef.html#sfEscapes TSymFlag.sfEscapes 53
nim sfDiscriminant astdef.html#sfDiscriminant TSymFlag.sfDiscriminant 53
nim sfRequiresInit astdef.html#sfRequiresInit TSymFlag.sfRequiresInit 53
nim sfDeprecated astdef.html#sfDeprecated TSymFlag.sfDeprecated 53
nim sfExplain astdef.html#sfExplain TSymFlag.sfExplain 53
nim sfError astdef.html#sfError TSymFlag.sfError 53
nim sfShadowed astdef.html#sfShadowed TSymFlag.sfShadowed 53
nim sfThread astdef.html#sfThread TSymFlag.sfThread 53
nim sfCppNonPod astdef.html#sfCppNonPod TSymFlag.sfCppNonPod 53
nim sfCompileTime astdef.html#sfCompileTime TSymFlag.sfCompileTime 53
nim sfConstructor astdef.html#sfConstructor TSymFlag.sfConstructor 53
nim sfDispatcher astdef.html#sfDispatcher TSymFlag.sfDispatcher 53
nim sfBorrow astdef.html#sfBorrow TSymFlag.sfBorrow 53
nim sfInfixCall astdef.html#sfInfixCall TSymFlag.sfInfixCall 53
nim sfNamedParamCall astdef.html#sfNamedParamCall TSymFlag.sfNamedParamCall 53
nim sfDiscardable astdef.html#sfDiscardable TSymFlag.sfDiscardable 53
nim sfOverridden astdef.html#sfOverridden TSymFlag.sfOverridden 53
nim sfCallsite astdef.html#sfCallsite TSymFlag.sfCallsite 53
nim sfGenSym astdef.html#sfGenSym TSymFlag.sfGenSym 53
nim sfNonReloadable astdef.html#sfNonReloadable TSymFlag.sfNonReloadable 53
nim sfGeneratedOp astdef.html#sfGeneratedOp TSymFlag.sfGeneratedOp 53
nim sfTemplateParam astdef.html#sfTemplateParam TSymFlag.sfTemplateParam 53
nim sfCursor astdef.html#sfCursor TSymFlag.sfCursor 53
nim sfInjectDestructors astdef.html#sfInjectDestructors TSymFlag.sfInjectDestructors 53
nim sfNeverRaises astdef.html#sfNeverRaises TSymFlag.sfNeverRaises 53
nim sfSystemRaisesDefect astdef.html#sfSystemRaisesDefect TSymFlag.sfSystemRaisesDefect 53
nim sfUsedInFinallyOrExcept astdef.html#sfUsedInFinallyOrExcept TSymFlag.sfUsedInFinallyOrExcept 53
nim sfSingleUsedTemp astdef.html#sfSingleUsedTemp TSymFlag.sfSingleUsedTemp 53
nim sfNoalias astdef.html#sfNoalias TSymFlag.sfNoalias 53
nim sfEffectsDelayed astdef.html#sfEffectsDelayed TSymFlag.sfEffectsDelayed 53
nim sfGeneratedType astdef.html#sfGeneratedType TSymFlag.sfGeneratedType 53
nim sfVirtual astdef.html#sfVirtual TSymFlag.sfVirtual 53
nim sfByCopy astdef.html#sfByCopy TSymFlag.sfByCopy 53
nim sfMember astdef.html#sfMember TSymFlag.sfMember 53
nim sfCodegenDecl astdef.html#sfCodegenDecl TSymFlag.sfCodegenDecl 53
nim sfWasGenSym astdef.html#sfWasGenSym TSymFlag.sfWasGenSym 53
nim sfForceLift astdef.html#sfForceLift TSymFlag.sfForceLift 53
nim sfDirty astdef.html#sfDirty TSymFlag.sfDirty 53
nim sfCustomPragma astdef.html#sfCustomPragma TSymFlag.sfCustomPragma 53
nim sfBase astdef.html#sfBase TSymFlag.sfBase 53
nim sfGoto astdef.html#sfGoto TSymFlag.sfGoto 53
nim sfAnon astdef.html#sfAnon TSymFlag.sfAnon 53
nim sfAllUntyped astdef.html#sfAllUntyped TSymFlag.sfAllUntyped 53
nim sfTemplateRedefinition astdef.html#sfTemplateRedefinition TSymFlag.sfTemplateRedefinition 53
nim TSymFlag astdef.html#TSymFlag enum TSymFlag 53
nim TSymFlags astdef.html#TSymFlags type TSymFlags 152
nim sfNoInit astdef.html#sfNoInit const sfNoInit 155
nim sfNoForward astdef.html#sfNoForward const sfNoForward 157
nim sfReorder astdef.html#sfReorder const sfReorder 159
nim sfCompileToCpp astdef.html#sfCompileToCpp const sfCompileToCpp 162
nim sfCompileToObjc astdef.html#sfCompileToObjc const sfCompileToObjc 163
nim sfExperimental astdef.html#sfExperimental const sfExperimental 164
nim sfWrittenTo astdef.html#sfWrittenTo const sfWrittenTo 165
nim sfCppMember astdef.html#sfCppMember const sfCppMember 167
nim nkWhen astdef.html#nkWhen const nkWhen 171
nim nkWhenExpr astdef.html#nkWhenExpr const nkWhenExpr 172
nim nkEffectList astdef.html#nkEffectList const nkEffectList 173
nim exceptionEffects astdef.html#exceptionEffects const exceptionEffects 175
nim requiresEffects astdef.html#requiresEffects const requiresEffects 176
nim ensuresEffects astdef.html#ensuresEffects const ensuresEffects 177
nim tagEffects astdef.html#tagEffects const tagEffects 178
nim pragmasEffects astdef.html#pragmasEffects const pragmasEffects 179
nim forbiddenEffects astdef.html#forbiddenEffects const forbiddenEffects 180
nim effectListLen astdef.html#effectListLen const effectListLen 181
nim nkLastBlockStmts astdef.html#nkLastBlockStmts const nkLastBlockStmts 182
nim tyNone astdef.html#tyNone TTypeKind.tyNone 186
nim tyBool astdef.html#tyBool TTypeKind.tyBool 186
nim tyChar astdef.html#tyChar TTypeKind.tyChar 186
nim tyEmpty astdef.html#tyEmpty TTypeKind.tyEmpty 186
nim tyAlias astdef.html#tyAlias TTypeKind.tyAlias 186
nim tyNil astdef.html#tyNil TTypeKind.tyNil 186
nim tyUntyped astdef.html#tyUntyped TTypeKind.tyUntyped 186
nim tyTyped astdef.html#tyTyped TTypeKind.tyTyped 186
nim tyTypeDesc astdef.html#tyTypeDesc TTypeKind.tyTypeDesc 186
nim tyGenericInvocation astdef.html#tyGenericInvocation TTypeKind.tyGenericInvocation 186
nim tyGenericBody astdef.html#tyGenericBody TTypeKind.tyGenericBody 186
nim tyGenericInst astdef.html#tyGenericInst TTypeKind.tyGenericInst 186
nim tyGenericParam astdef.html#tyGenericParam TTypeKind.tyGenericParam 186
nim tyDistinct astdef.html#tyDistinct TTypeKind.tyDistinct 186
nim tyEnum astdef.html#tyEnum TTypeKind.tyEnum 186
nim tyOrdinal astdef.html#tyOrdinal TTypeKind.tyOrdinal 186
nim tyArray astdef.html#tyArray TTypeKind.tyArray 186
nim tyObject astdef.html#tyObject TTypeKind.tyObject 186
nim tyTuple astdef.html#tyTuple TTypeKind.tyTuple 186
nim tySet astdef.html#tySet TTypeKind.tySet 186
nim tyRange astdef.html#tyRange TTypeKind.tyRange 186
nim tyPtr astdef.html#tyPtr TTypeKind.tyPtr 186
nim tyRef astdef.html#tyRef TTypeKind.tyRef 186
nim tyVar astdef.html#tyVar TTypeKind.tyVar 186
nim tySequence astdef.html#tySequence TTypeKind.tySequence 186
nim tyProc astdef.html#tyProc TTypeKind.tyProc 186
nim tyPointer astdef.html#tyPointer TTypeKind.tyPointer 186
nim tyOpenArray astdef.html#tyOpenArray TTypeKind.tyOpenArray 186
nim tyString astdef.html#tyString TTypeKind.tyString 186
nim tyCstring astdef.html#tyCstring TTypeKind.tyCstring 186
nim tyForward astdef.html#tyForward TTypeKind.tyForward 186
nim tyInt astdef.html#tyInt TTypeKind.tyInt 186
nim tyInt8 astdef.html#tyInt8 TTypeKind.tyInt8 186
nim tyInt16 astdef.html#tyInt16 TTypeKind.tyInt16 186
nim tyInt32 astdef.html#tyInt32 TTypeKind.tyInt32 186
nim tyInt64 astdef.html#tyInt64 TTypeKind.tyInt64 186
nim tyFloat astdef.html#tyFloat TTypeKind.tyFloat 186
nim tyFloat32 astdef.html#tyFloat32 TTypeKind.tyFloat32 186
nim tyFloat64 astdef.html#tyFloat64 TTypeKind.tyFloat64 186
nim tyFloat128 astdef.html#tyFloat128 TTypeKind.tyFloat128 186
nim tyUInt astdef.html#tyUInt TTypeKind.tyUInt 186
nim tyUInt8 astdef.html#tyUInt8 TTypeKind.tyUInt8 186
nim tyUInt16 astdef.html#tyUInt16 TTypeKind.tyUInt16 186
nim tyUInt32 astdef.html#tyUInt32 TTypeKind.tyUInt32 186
nim tyUInt64 astdef.html#tyUInt64 TTypeKind.tyUInt64 186
nim tyOwned astdef.html#tyOwned TTypeKind.tyOwned 186
nim tySink astdef.html#tySink TTypeKind.tySink 186
nim tyLent astdef.html#tyLent TTypeKind.tyLent 186
nim tyVarargs astdef.html#tyVarargs TTypeKind.tyVarargs 186
nim tyUncheckedArray astdef.html#tyUncheckedArray TTypeKind.tyUncheckedArray 186
nim tyError astdef.html#tyError TTypeKind.tyError 186
nim tyBuiltInTypeClass astdef.html#tyBuiltInTypeClass TTypeKind.tyBuiltInTypeClass 186
nim tyUserTypeClass astdef.html#tyUserTypeClass TTypeKind.tyUserTypeClass 186
nim tyUserTypeClassInst astdef.html#tyUserTypeClassInst TTypeKind.tyUserTypeClassInst 186
nim tyCompositeTypeClass astdef.html#tyCompositeTypeClass TTypeKind.tyCompositeTypeClass 186
nim tyInferred astdef.html#tyInferred TTypeKind.tyInferred 186
nim tyAnd astdef.html#tyAnd TTypeKind.tyAnd 186
nim tyOr astdef.html#tyOr TTypeKind.tyOr 186
nim tyNot astdef.html#tyNot TTypeKind.tyNot 186
nim tyAnything astdef.html#tyAnything TTypeKind.tyAnything 186
nim tyStatic astdef.html#tyStatic TTypeKind.tyStatic 186
nim tyFromExpr astdef.html#tyFromExpr TTypeKind.tyFromExpr 186
nim tyConcept astdef.html#tyConcept TTypeKind.tyConcept 186
nim tyVoid astdef.html#tyVoid TTypeKind.tyVoid 186
nim tyIterable astdef.html#tyIterable TTypeKind.tyIterable 186
nim TTypeKind astdef.html#TTypeKind enum TTypeKind 186
nim tyPureObject astdef.html#tyPureObject const tyPureObject 291
nim GcTypeKinds astdef.html#GcTypeKinds const GcTypeKinds 292
nim tyTypeClasses astdef.html#tyTypeClasses const tyTypeClasses 294
nim tyMetaTypes astdef.html#tyMetaTypes const tyMetaTypes 298
nim tyUserTypeClasses astdef.html#tyUserTypeClasses const tyUserTypeClasses 299
nim abstractVarRange astdef.html#abstractVarRange const abstractVarRange 301
nim abstractInst astdef.html#abstractInst const abstractInst 303
nim TTypeKinds astdef.html#TTypeKinds type TTypeKinds 307
nim nfNone astdef.html#nfNone TNodeFlag.nfNone 309
nim nfBase2 astdef.html#nfBase2 TNodeFlag.nfBase2 309
nim nfBase8 astdef.html#nfBase8 TNodeFlag.nfBase8 309
nim nfBase16 astdef.html#nfBase16 TNodeFlag.nfBase16 309
nim nfAllConst astdef.html#nfAllConst TNodeFlag.nfAllConst 309
nim nfTransf astdef.html#nfTransf TNodeFlag.nfTransf 309
nim nfNoRewrite astdef.html#nfNoRewrite TNodeFlag.nfNoRewrite 309
nim nfSem astdef.html#nfSem TNodeFlag.nfSem 309
nim nfLL astdef.html#nfLL TNodeFlag.nfLL 309
nim nfDotField astdef.html#nfDotField TNodeFlag.nfDotField 309
nim nfDotSetter astdef.html#nfDotSetter TNodeFlag.nfDotSetter 309
nim nfExplicitCall astdef.html#nfExplicitCall TNodeFlag.nfExplicitCall 309
nim nfExprCall astdef.html#nfExprCall TNodeFlag.nfExprCall 309
nim nfIsRef astdef.html#nfIsRef TNodeFlag.nfIsRef 309
nim nfIsPtr astdef.html#nfIsPtr TNodeFlag.nfIsPtr 309
nim nfPreventCg astdef.html#nfPreventCg TNodeFlag.nfPreventCg 309
nim nfBlockArg astdef.html#nfBlockArg TNodeFlag.nfBlockArg 309
nim nfFromTemplate astdef.html#nfFromTemplate TNodeFlag.nfFromTemplate 309
nim nfDefaultParam astdef.html#nfDefaultParam TNodeFlag.nfDefaultParam 309
nim nfDefaultRefsParam astdef.html#nfDefaultRefsParam TNodeFlag.nfDefaultRefsParam 309
nim nfExecuteOnReload astdef.html#nfExecuteOnReload TNodeFlag.nfExecuteOnReload 309
nim nfLastRead astdef.html#nfLastRead TNodeFlag.nfLastRead 309
nim nfFirstWrite astdef.html#nfFirstWrite TNodeFlag.nfFirstWrite 309
nim nfHasComment astdef.html#nfHasComment TNodeFlag.nfHasComment 309
nim nfSkipFieldChecking astdef.html#nfSkipFieldChecking TNodeFlag.nfSkipFieldChecking 309
nim nfDisabledOpenSym astdef.html#nfDisabledOpenSym TNodeFlag.nfDisabledOpenSym 309
nim nfLazyType astdef.html#nfLazyType TNodeFlag.nfLazyType 309
nim nfLazyBody astdef.html#nfLazyBody TNodeFlag.nfLazyBody 309
nim nfBroadcast astdef.html#nfBroadcast TNodeFlag.nfBroadcast 309
nim TNodeFlag astdef.html#TNodeFlag enum TNodeFlag 309
nim TNodeFlags astdef.html#TNodeFlags type TNodeFlags 351
nim tfVarargs astdef.html#tfVarargs TTypeFlag.tfVarargs 352
nim tfNoSideEffect astdef.html#tfNoSideEffect TTypeFlag.tfNoSideEffect 352
nim tfFinal astdef.html#tfFinal TTypeFlag.tfFinal 352
nim tfInheritable astdef.html#tfInheritable TTypeFlag.tfInheritable 352
nim tfHasOwned astdef.html#tfHasOwned TTypeFlag.tfHasOwned 352
nim tfEnumHasHoles astdef.html#tfEnumHasHoles TTypeFlag.tfEnumHasHoles 352
nim tfShallow astdef.html#tfShallow TTypeFlag.tfShallow 352
nim tfThread astdef.html#tfThread TTypeFlag.tfThread 352
nim tfFromGeneric astdef.html#tfFromGeneric TTypeFlag.tfFromGeneric 352
nim tfUnresolved astdef.html#tfUnresolved TTypeFlag.tfUnresolved 352
nim tfResolved astdef.html#tfResolved TTypeFlag.tfResolved 352
nim tfRetType astdef.html#tfRetType TTypeFlag.tfRetType 352
nim tfCapturesEnv astdef.html#tfCapturesEnv TTypeFlag.tfCapturesEnv 352
nim tfByCopy astdef.html#tfByCopy TTypeFlag.tfByCopy 352
nim tfByRef astdef.html#tfByRef TTypeFlag.tfByRef 352
nim tfIterator astdef.html#tfIterator TTypeFlag.tfIterator 352
nim tfPartial astdef.html#tfPartial TTypeFlag.tfPartial 352
nim tfNotNil astdef.html#tfNotNil TTypeFlag.tfNotNil 352
nim tfRequiresInit astdef.html#tfRequiresInit TTypeFlag.tfRequiresInit 352
nim tfNeedsFullInit astdef.html#tfNeedsFullInit TTypeFlag.tfNeedsFullInit 352
nim tfVarIsPtr astdef.html#tfVarIsPtr TTypeFlag.tfVarIsPtr 352
nim tfHasMeta astdef.html#tfHasMeta TTypeFlag.tfHasMeta 352
nim tfHasGCedMem astdef.html#tfHasGCedMem TTypeFlag.tfHasGCedMem 352
nim tfPacked astdef.html#tfPacked TTypeFlag.tfPacked 352
nim tfHasStatic astdef.html#tfHasStatic TTypeFlag.tfHasStatic 352
nim tfGenericTypeParam astdef.html#tfGenericTypeParam TTypeFlag.tfGenericTypeParam 352
nim tfImplicitTypeParam astdef.html#tfImplicitTypeParam TTypeFlag.tfImplicitTypeParam 352
nim tfInferrableStatic astdef.html#tfInferrableStatic TTypeFlag.tfInferrableStatic 352
nim tfConceptMatchedTypeSym astdef.html#tfConceptMatchedTypeSym TTypeFlag.tfConceptMatchedTypeSym 352
nim tfExplicit astdef.html#tfExplicit TTypeFlag.tfExplicit 352
nim tfWildcard astdef.html#tfWildcard TTypeFlag.tfWildcard 352
nim tfHasAsgn astdef.html#tfHasAsgn TTypeFlag.tfHasAsgn 352
nim tfBorrowDot astdef.html#tfBorrowDot TTypeFlag.tfBorrowDot 352
nim tfTriggersCompileTime astdef.html#tfTriggersCompileTime TTypeFlag.tfTriggersCompileTime 352
nim tfRefsAnonObj astdef.html#tfRefsAnonObj TTypeFlag.tfRefsAnonObj 352
nim tfCovariant astdef.html#tfCovariant TTypeFlag.tfCovariant 352
nim tfWeakCovariant astdef.html#tfWeakCovariant TTypeFlag.tfWeakCovariant 352
nim tfContravariant astdef.html#tfContravariant TTypeFlag.tfContravariant 352
nim tfCheckedForDestructor astdef.html#tfCheckedForDestructor TTypeFlag.tfCheckedForDestructor 352
nim tfAcyclic astdef.html#tfAcyclic TTypeFlag.tfAcyclic 352
nim tfIncompleteStruct astdef.html#tfIncompleteStruct TTypeFlag.tfIncompleteStruct 352
nim tfCompleteStruct astdef.html#tfCompleteStruct TTypeFlag.tfCompleteStruct 352
nim tfExplicitCallConv astdef.html#tfExplicitCallConv TTypeFlag.tfExplicitCallConv 352
nim tfIsConstructor astdef.html#tfIsConstructor TTypeFlag.tfIsConstructor 352
nim tfEffectSystemWorkaround astdef.html#tfEffectSystemWorkaround TTypeFlag.tfEffectSystemWorkaround 352
nim tfIsOutParam astdef.html#tfIsOutParam TTypeFlag.tfIsOutParam 352
nim tfSendable astdef.html#tfSendable TTypeFlag.tfSendable 352
nim tfImplicitStatic astdef.html#tfImplicitStatic TTypeFlag.tfImplicitStatic 352
nim TTypeFlag astdef.html#TTypeFlag enum TTypeFlag 352
nim TTypeFlags astdef.html#TTypeFlags type TTypeFlags 425
nim skUnknown astdef.html#skUnknown TSymKind.skUnknown 427
nim skConditional astdef.html#skConditional TSymKind.skConditional 427
nim skDynLib astdef.html#skDynLib TSymKind.skDynLib 427
nim skParam astdef.html#skParam TSymKind.skParam 427
nim skGenericParam astdef.html#skGenericParam TSymKind.skGenericParam 427
nim skTemp astdef.html#skTemp TSymKind.skTemp 427
nim skModule astdef.html#skModule TSymKind.skModule 427
nim skType astdef.html#skType TSymKind.skType 427
nim skVar astdef.html#skVar TSymKind.skVar 427
nim skLet astdef.html#skLet TSymKind.skLet 427
nim skConst astdef.html#skConst TSymKind.skConst 427
nim skResult astdef.html#skResult TSymKind.skResult 427
nim skProc astdef.html#skProc TSymKind.skProc 427
nim skFunc astdef.html#skFunc TSymKind.skFunc 427
nim skMethod astdef.html#skMethod TSymKind.skMethod 427
nim skIterator astdef.html#skIterator TSymKind.skIterator 427
nim skConverter astdef.html#skConverter TSymKind.skConverter 427
nim skMacro astdef.html#skMacro TSymKind.skMacro 427
nim skTemplate astdef.html#skTemplate TSymKind.skTemplate 427
nim skField astdef.html#skField TSymKind.skField 427
nim skEnumField astdef.html#skEnumField TSymKind.skEnumField 427
nim skForVar astdef.html#skForVar TSymKind.skForVar 427
nim skLabel astdef.html#skLabel TSymKind.skLabel 427
nim skStub astdef.html#skStub TSymKind.skStub 427
nim skPackage astdef.html#skPackage TSymKind.skPackage 427
nim TSymKind astdef.html#TSymKind enum TSymKind 427
nim TSymKinds astdef.html#TSymKinds type TSymKinds 459
nim routineKinds astdef.html#routineKinds const routineKinds 462
nim ExportableSymKinds astdef.html#ExportableSymKinds const ExportableSymKinds 464
nim tfUnion astdef.html#tfUnion const tfUnion 466
nim tfGcSafe astdef.html#tfGcSafe const tfGcSafe 467
nim tfObjHasKids astdef.html#tfObjHasKids const tfObjHasKids 468
nim tfReturnsNew astdef.html#tfReturnsNew const tfReturnsNew 469
nim tfNonConstExpr astdef.html#tfNonConstExpr const tfNonConstExpr 470
nim tfGenericHasDestructor astdef.html#tfGenericHasDestructor const tfGenericHasDestructor 472
nim skError astdef.html#skError const skError 474
nim eqTypeFlags astdef.html#eqTypeFlags var eqTypeFlags 477
nim mNone astdef.html#mNone TMagic.mNone 483
nim mDefined astdef.html#mDefined TMagic.mDefined 483
nim mDeclared astdef.html#mDeclared TMagic.mDeclared 483
nim mDeclaredInScope astdef.html#mDeclaredInScope TMagic.mDeclaredInScope 483
nim mCompiles astdef.html#mCompiles TMagic.mCompiles 483
nim mArrGet astdef.html#mArrGet TMagic.mArrGet 483
nim mArrPut astdef.html#mArrPut TMagic.mArrPut 483
nim mAsgn astdef.html#mAsgn TMagic.mAsgn 483
nim mLow astdef.html#mLow TMagic.mLow 483
nim mHigh astdef.html#mHigh TMagic.mHigh 483
nim mSizeOf astdef.html#mSizeOf TMagic.mSizeOf 483
nim mAlignOf astdef.html#mAlignOf TMagic.mAlignOf 483
nim mOffsetOf astdef.html#mOffsetOf TMagic.mOffsetOf 483
nim mTypeTrait astdef.html#mTypeTrait TMagic.mTypeTrait 483
nim mIs astdef.html#mIs TMagic.mIs 483
nim mOf astdef.html#mOf TMagic.mOf 483
nim mAddr astdef.html#mAddr TMagic.mAddr 483
nim mType astdef.html#mType TMagic.mType 483
nim mTypeOf astdef.html#mTypeOf TMagic.mTypeOf 483
nim mPlugin astdef.html#mPlugin TMagic.mPlugin 483
nim mEcho astdef.html#mEcho TMagic.mEcho 483
nim mShallowCopy astdef.html#mShallowCopy TMagic.mShallowCopy 483
nim mSlurp astdef.html#mSlurp TMagic.mSlurp 483
nim mStaticExec astdef.html#mStaticExec TMagic.mStaticExec 483
nim mStatic astdef.html#mStatic TMagic.mStatic 483
nim mParseExprToAst astdef.html#mParseExprToAst TMagic.mParseExprToAst 483
nim mParseStmtToAst astdef.html#mParseStmtToAst TMagic.mParseStmtToAst 483
nim mExpandToAst astdef.html#mExpandToAst TMagic.mExpandToAst 483
nim mQuoteAst astdef.html#mQuoteAst TMagic.mQuoteAst 483
nim mInc astdef.html#mInc TMagic.mInc 483
nim mDec astdef.html#mDec TMagic.mDec 483
nim mOrd astdef.html#mOrd TMagic.mOrd 483
nim mNew astdef.html#mNew TMagic.mNew 483
nim mNewFinalize astdef.html#mNewFinalize TMagic.mNewFinalize 483
nim mNewSeq astdef.html#mNewSeq TMagic.mNewSeq 483
nim mNewSeqOfCap astdef.html#mNewSeqOfCap TMagic.mNewSeqOfCap 483
nim mLengthOpenArray astdef.html#mLengthOpenArray TMagic.mLengthOpenArray 483
nim mLengthStr astdef.html#mLengthStr TMagic.mLengthStr 483
nim mLengthArray astdef.html#mLengthArray TMagic.mLengthArray 483
nim mLengthSeq astdef.html#mLengthSeq TMagic.mLengthSeq 483
nim mIncl astdef.html#mIncl TMagic.mIncl 483
nim mExcl astdef.html#mExcl TMagic.mExcl 483
nim mCard astdef.html#mCard TMagic.mCard 483
nim mChr astdef.html#mChr TMagic.mChr 483
nim mGCref astdef.html#mGCref TMagic.mGCref 483
nim mGCunref astdef.html#mGCunref TMagic.mGCunref 483
nim mAddI astdef.html#mAddI TMagic.mAddI 483
nim mSubI astdef.html#mSubI TMagic.mSubI 483
nim mMulI astdef.html#mMulI TMagic.mMulI 483
nim mDivI astdef.html#mDivI TMagic.mDivI 483
nim mModI astdef.html#mModI TMagic.mModI 483
nim mSucc astdef.html#mSucc TMagic.mSucc 483
nim mPred astdef.html#mPred TMagic.mPred 483
nim mAddF64 astdef.html#mAddF64 TMagic.mAddF64 483
nim mSubF64 astdef.html#mSubF64 TMagic.mSubF64 483
nim mMulF64 astdef.html#mMulF64 TMagic.mMulF64 483
nim mDivF64 astdef.html#mDivF64 TMagic.mDivF64 483
nim mShrI astdef.html#mShrI TMagic.mShrI 483
nim mShlI astdef.html#mShlI TMagic.mShlI 483
nim mAshrI astdef.html#mAshrI TMagic.mAshrI 483
nim mBitandI astdef.html#mBitandI TMagic.mBitandI 483
nim mBitorI astdef.html#mBitorI TMagic.mBitorI 483
nim mBitxorI astdef.html#mBitxorI TMagic.mBitxorI 483
nim mMinI astdef.html#mMinI TMagic.mMinI 483
nim mMaxI astdef.html#mMaxI TMagic.mMaxI 483
nim mAddU astdef.html#mAddU TMagic.mAddU 483
nim mSubU astdef.html#mSubU TMagic.mSubU 483
nim mMulU astdef.html#mMulU TMagic.mMulU 483
nim mDivU astdef.html#mDivU TMagic.mDivU 483
nim mModU astdef.html#mModU TMagic.mModU 483
nim mEqI astdef.html#mEqI TMagic.mEqI 483
nim mLeI astdef.html#mLeI TMagic.mLeI 483
nim mLtI astdef.html#mLtI TMagic.mLtI 483
nim mEqF64 astdef.html#mEqF64 TMagic.mEqF64 483
nim mLeF64 astdef.html#mLeF64 TMagic.mLeF64 483
nim mLtF64 astdef.html#mLtF64 TMagic.mLtF64 483
nim mLeU astdef.html#mLeU TMagic.mLeU 483
nim mLtU astdef.html#mLtU TMagic.mLtU 483
nim mEqEnum astdef.html#mEqEnum TMagic.mEqEnum 483
nim mLeEnum astdef.html#mLeEnum TMagic.mLeEnum 483
nim mLtEnum astdef.html#mLtEnum TMagic.mLtEnum 483
nim mEqCh astdef.html#mEqCh TMagic.mEqCh 483
nim mLeCh astdef.html#mLeCh TMagic.mLeCh 483
nim mLtCh astdef.html#mLtCh TMagic.mLtCh 483
nim mEqB astdef.html#mEqB TMagic.mEqB 483
nim mLeB astdef.html#mLeB TMagic.mLeB 483
nim mLtB astdef.html#mLtB TMagic.mLtB 483
nim mEqRef astdef.html#mEqRef TMagic.mEqRef 483
nim mLePtr astdef.html#mLePtr TMagic.mLePtr 483
nim mLtPtr astdef.html#mLtPtr TMagic.mLtPtr 483
nim mXor astdef.html#mXor TMagic.mXor 483
nim mEqCString astdef.html#mEqCString TMagic.mEqCString 483
nim mEqProc astdef.html#mEqProc TMagic.mEqProc 483
nim mUnaryMinusI astdef.html#mUnaryMinusI TMagic.mUnaryMinusI 483
nim mUnaryMinusI64 astdef.html#mUnaryMinusI64 TMagic.mUnaryMinusI64 483
nim mAbsI astdef.html#mAbsI TMagic.mAbsI 483
nim mNot astdef.html#mNot TMagic.mNot 483
nim mUnaryPlusI astdef.html#mUnaryPlusI TMagic.mUnaryPlusI 483
nim mBitnotI astdef.html#mBitnotI TMagic.mBitnotI 483
nim mUnaryPlusF64 astdef.html#mUnaryPlusF64 TMagic.mUnaryPlusF64 483
nim mUnaryMinusF64 astdef.html#mUnaryMinusF64 TMagic.mUnaryMinusF64 483
nim mCharToStr astdef.html#mCharToStr TMagic.mCharToStr 483
nim mBoolToStr astdef.html#mBoolToStr TMagic.mBoolToStr 483
nim mCStrToStr astdef.html#mCStrToStr TMagic.mCStrToStr 483
nim mStrToStr astdef.html#mStrToStr TMagic.mStrToStr 483
nim mEnumToStr astdef.html#mEnumToStr TMagic.mEnumToStr 483
nim mAnd astdef.html#mAnd TMagic.mAnd 483
nim mOr astdef.html#mOr TMagic.mOr 483
nim mImplies astdef.html#mImplies TMagic.mImplies 483
nim mIff astdef.html#mIff TMagic.mIff 483
nim mExists astdef.html#mExists TMagic.mExists 483
nim mForall astdef.html#mForall TMagic.mForall 483
nim mOld astdef.html#mOld TMagic.mOld 483
nim mEqStr astdef.html#mEqStr TMagic.mEqStr 483
nim mLeStr astdef.html#mLeStr TMagic.mLeStr 483
nim mLtStr astdef.html#mLtStr TMagic.mLtStr 483
nim mEqSet astdef.html#mEqSet TMagic.mEqSet 483
nim mLeSet astdef.html#mLeSet TMagic.mLeSet 483
nim mLtSet astdef.html#mLtSet TMagic.mLtSet 483
nim mMulSet astdef.html#mMulSet TMagic.mMulSet 483
nim mPlusSet astdef.html#mPlusSet TMagic.mPlusSet 483
nim mMinusSet astdef.html#mMinusSet TMagic.mMinusSet 483
nim mXorSet astdef.html#mXorSet TMagic.mXorSet 483
nim mConStrStr astdef.html#mConStrStr TMagic.mConStrStr 483
nim mSlice astdef.html#mSlice TMagic.mSlice 483
nim mDotDot astdef.html#mDotDot TMagic.mDotDot 483
nim mFields astdef.html#mFields TMagic.mFields 483
nim mFieldPairs astdef.html#mFieldPairs TMagic.mFieldPairs 483
nim mOmpParFor astdef.html#mOmpParFor TMagic.mOmpParFor 483
nim mAppendStrCh astdef.html#mAppendStrCh TMagic.mAppendStrCh 483
nim mAppendStrStr astdef.html#mAppendStrStr TMagic.mAppendStrStr 483
nim mAppendSeqElem astdef.html#mAppendSeqElem TMagic.mAppendSeqElem 483
nim mInSet astdef.html#mInSet TMagic.mInSet 483
nim mRepr astdef.html#mRepr TMagic.mRepr 483
nim mExit astdef.html#mExit TMagic.mExit 483
nim mSetLengthStr astdef.html#mSetLengthStr TMagic.mSetLengthStr 483
nim mSetLengthSeq astdef.html#mSetLengthSeq TMagic.mSetLengthSeq 483
nim mSetLengthSeqUninit astdef.html#mSetLengthSeqUninit TMagic.mSetLengthSeqUninit 483
nim mIsPartOf astdef.html#mIsPartOf TMagic.mIsPartOf 483
nim mAstToStr astdef.html#mAstToStr TMagic.mAstToStr 483
nim mParallel astdef.html#mParallel TMagic.mParallel 483
nim mSwap astdef.html#mSwap TMagic.mSwap 483
nim mIsNil astdef.html#mIsNil TMagic.mIsNil 483
nim mArrToSeq astdef.html#mArrToSeq TMagic.mArrToSeq 483
nim mOpenArrayToSeq astdef.html#mOpenArrayToSeq TMagic.mOpenArrayToSeq 483
nim mNewString astdef.html#mNewString TMagic.mNewString 483
nim mNewStringOfCap astdef.html#mNewStringOfCap TMagic.mNewStringOfCap 483
nim mParseBiggestFloat astdef.html#mParseBiggestFloat TMagic.mParseBiggestFloat 483
nim mMove astdef.html#mMove TMagic.mMove 483
nim mEnsureMove astdef.html#mEnsureMove TMagic.mEnsureMove 483
nim mWasMoved astdef.html#mWasMoved TMagic.mWasMoved 483
nim mDup astdef.html#mDup TMagic.mDup 483
nim mDestroy astdef.html#mDestroy TMagic.mDestroy 483
nim mTrace astdef.html#mTrace TMagic.mTrace 483
nim mDefault astdef.html#mDefault TMagic.mDefault 483
nim mUnown astdef.html#mUnown TMagic.mUnown 483
nim mFinished astdef.html#mFinished TMagic.mFinished 483
nim mIsolate astdef.html#mIsolate TMagic.mIsolate 483
nim mAccessEnv astdef.html#mAccessEnv TMagic.mAccessEnv 483
nim mAccessTypeField astdef.html#mAccessTypeField TMagic.mAccessTypeField 483
nim mArray astdef.html#mArray TMagic.mArray 483
nim mOpenArray astdef.html#mOpenArray TMagic.mOpenArray 483
nim mRange astdef.html#mRange TMagic.mRange 483
nim mSet astdef.html#mSet TMagic.mSet 483
nim mSeq astdef.html#mSeq TMagic.mSeq 483
nim mVarargs astdef.html#mVarargs TMagic.mVarargs 483
nim mRef astdef.html#mRef TMagic.mRef 483
nim mPtr astdef.html#mPtr TMagic.mPtr 483
nim mVar astdef.html#mVar TMagic.mVar 483
nim mDistinct astdef.html#mDistinct TMagic.mDistinct 483
nim mVoid astdef.html#mVoid TMagic.mVoid 483
nim mTuple astdef.html#mTuple TMagic.mTuple 483
nim mOrdinal astdef.html#mOrdinal TMagic.mOrdinal 483
nim mIterableType astdef.html#mIterableType TMagic.mIterableType 483
nim mInt astdef.html#mInt TMagic.mInt 483
nim mInt8 astdef.html#mInt8 TMagic.mInt8 483
nim mInt16 astdef.html#mInt16 TMagic.mInt16 483
nim mInt32 astdef.html#mInt32 TMagic.mInt32 483
nim mInt64 astdef.html#mInt64 TMagic.mInt64 483
nim mUInt astdef.html#mUInt TMagic.mUInt 483
nim mUInt8 astdef.html#mUInt8 TMagic.mUInt8 483
nim mUInt16 astdef.html#mUInt16 TMagic.mUInt16 483
nim mUInt32 astdef.html#mUInt32 TMagic.mUInt32 483
nim mUInt64 astdef.html#mUInt64 TMagic.mUInt64 483
nim mFloat astdef.html#mFloat TMagic.mFloat 483
nim mFloat32 astdef.html#mFloat32 TMagic.mFloat32 483
nim mFloat64 astdef.html#mFloat64 TMagic.mFloat64 483
nim mFloat128 astdef.html#mFloat128 TMagic.mFloat128 483
nim mBool astdef.html#mBool TMagic.mBool 483
nim mChar astdef.html#mChar TMagic.mChar 483
nim mString astdef.html#mString TMagic.mString 483
nim mCstring astdef.html#mCstring TMagic.mCstring 483
nim mPointer astdef.html#mPointer TMagic.mPointer 483
nim mNil astdef.html#mNil TMagic.mNil 483
nim mExpr astdef.html#mExpr TMagic.mExpr 483
nim mStmt astdef.html#mStmt TMagic.mStmt 483
nim mTypeDesc astdef.html#mTypeDesc TMagic.mTypeDesc 483
nim mVoidType astdef.html#mVoidType TMagic.mVoidType 483
nim mPNimrodNode astdef.html#mPNimrodNode TMagic.mPNimrodNode 483
nim mSpawn astdef.html#mSpawn TMagic.mSpawn 483
nim mDeepCopy astdef.html#mDeepCopy TMagic.mDeepCopy 483
nim mIsMainModule astdef.html#mIsMainModule TMagic.mIsMainModule 483
nim mCompileDate astdef.html#mCompileDate TMagic.mCompileDate 483
nim mCompileTime astdef.html#mCompileTime TMagic.mCompileTime 483
nim mProcCall astdef.html#mProcCall TMagic.mProcCall 483
nim mCpuEndian astdef.html#mCpuEndian TMagic.mCpuEndian 483
nim mHostOS astdef.html#mHostOS TMagic.mHostOS 483
nim mHostCPU astdef.html#mHostCPU TMagic.mHostCPU 483
nim mBuildOS astdef.html#mBuildOS TMagic.mBuildOS 483
nim mBuildCPU astdef.html#mBuildCPU TMagic.mBuildCPU 483
nim mAppType astdef.html#mAppType TMagic.mAppType 483
nim mCompileOption astdef.html#mCompileOption TMagic.mCompileOption 483
nim mCompileOptionArg astdef.html#mCompileOptionArg TMagic.mCompileOptionArg 483
nim mNLen astdef.html#mNLen TMagic.mNLen 483
nim mNChild astdef.html#mNChild TMagic.mNChild 483
nim mNSetChild astdef.html#mNSetChild TMagic.mNSetChild 483
nim mNAdd astdef.html#mNAdd TMagic.mNAdd 483
nim mNAddMultiple astdef.html#mNAddMultiple TMagic.mNAddMultiple 483
nim mNDel astdef.html#mNDel TMagic.mNDel 483
nim mNKind astdef.html#mNKind TMagic.mNKind 483
nim mNSymKind astdef.html#mNSymKind TMagic.mNSymKind 483
nim mNccValue astdef.html#mNccValue TMagic.mNccValue 483
nim mNccInc astdef.html#mNccInc TMagic.mNccInc 483
nim mNcsAdd astdef.html#mNcsAdd TMagic.mNcsAdd 483
nim mNcsIncl astdef.html#mNcsIncl TMagic.mNcsIncl 483
nim mNcsLen astdef.html#mNcsLen TMagic.mNcsLen 483
nim mNcsAt astdef.html#mNcsAt TMagic.mNcsAt 483
nim mNctPut astdef.html#mNctPut TMagic.mNctPut 483
nim mNctLen astdef.html#mNctLen TMagic.mNctLen 483
nim mNctGet astdef.html#mNctGet TMagic.mNctGet 483
nim mNctHasNext astdef.html#mNctHasNext TMagic.mNctHasNext 483
nim mNctNext astdef.html#mNctNext TMagic.mNctNext 483
nim mNIntVal astdef.html#mNIntVal TMagic.mNIntVal 483
nim mNFloatVal astdef.html#mNFloatVal TMagic.mNFloatVal 483
nim mNSymbol astdef.html#mNSymbol TMagic.mNSymbol 483
nim mNIdent astdef.html#mNIdent TMagic.mNIdent 483
nim mNGetType astdef.html#mNGetType TMagic.mNGetType 483
nim mNStrVal astdef.html#mNStrVal TMagic.mNStrVal 483
nim mNSetIntVal astdef.html#mNSetIntVal TMagic.mNSetIntVal 483
nim mNSetFloatVal astdef.html#mNSetFloatVal TMagic.mNSetFloatVal 483
nim mNSetSymbol astdef.html#mNSetSymbol TMagic.mNSetSymbol 483
nim mNSetIdent astdef.html#mNSetIdent TMagic.mNSetIdent 483
nim mNSetStrVal astdef.html#mNSetStrVal TMagic.mNSetStrVal 483
nim mNLineInfo astdef.html#mNLineInfo TMagic.mNLineInfo 483
nim mNNewNimNode astdef.html#mNNewNimNode TMagic.mNNewNimNode 483
nim mNCopyNimNode astdef.html#mNCopyNimNode TMagic.mNCopyNimNode 483
nim mNCopyNimTree astdef.html#mNCopyNimTree TMagic.mNCopyNimTree 483
nim mStrToIdent astdef.html#mStrToIdent TMagic.mStrToIdent 483
nim mNSigHash astdef.html#mNSigHash TMagic.mNSigHash 483
nim mNSizeOf astdef.html#mNSizeOf TMagic.mNSizeOf 483
nim mNBindSym astdef.html#mNBindSym TMagic.mNBindSym 483
nim mNCallSite astdef.html#mNCallSite TMagic.mNCallSite 483
nim mEqIdent astdef.html#mEqIdent TMagic.mEqIdent 483
nim mEqNimrodNode astdef.html#mEqNimrodNode TMagic.mEqNimrodNode 483
nim mSameNodeType astdef.html#mSameNodeType TMagic.mSameNodeType 483
nim mGetImpl astdef.html#mGetImpl TMagic.mGetImpl 483
nim mNGenSym astdef.html#mNGenSym TMagic.mNGenSym 483
nim mNHint astdef.html#mNHint TMagic.mNHint 483
nim mNWarning astdef.html#mNWarning TMagic.mNWarning 483
nim mNError astdef.html#mNError TMagic.mNError 483
nim mInstantiationInfo astdef.html#mInstantiationInfo TMagic.mInstantiationInfo 483
nim mGetTypeInfo astdef.html#mGetTypeInfo TMagic.mGetTypeInfo 483
nim mGetTypeInfoV2 astdef.html#mGetTypeInfoV2 TMagic.mGetTypeInfoV2 483
nim mNimvm astdef.html#mNimvm TMagic.mNimvm 483
nim mIntDefine astdef.html#mIntDefine TMagic.mIntDefine 483
nim mStrDefine astdef.html#mStrDefine TMagic.mStrDefine 483
nim mBoolDefine astdef.html#mBoolDefine TMagic.mBoolDefine 483
nim mGenericDefine astdef.html#mGenericDefine TMagic.mGenericDefine 483
nim mRunnableExamples astdef.html#mRunnableExamples TMagic.mRunnableExamples 483
nim mException astdef.html#mException TMagic.mException 483
nim mBuiltinType astdef.html#mBuiltinType TMagic.mBuiltinType 483
nim mSymOwner astdef.html#mSymOwner TMagic.mSymOwner 483
nim mUncheckedArray astdef.html#mUncheckedArray TMagic.mUncheckedArray 483
nim mGetImplTransf astdef.html#mGetImplTransf TMagic.mGetImplTransf 483
nim mSymIsInstantiationOf astdef.html#mSymIsInstantiationOf TMagic.mSymIsInstantiationOf 483
nim mNodeId astdef.html#mNodeId TMagic.mNodeId 483
nim mPrivateAccess astdef.html#mPrivateAccess TMagic.mPrivateAccess 483
nim mZeroDefault astdef.html#mZeroDefault TMagic.mZeroDefault 483
nim TMagic astdef.html#TMagic enum TMagic 483
nim ctfeWhitelist astdef.html#ctfeWhitelist const ctfeWhitelist 563
nim generatedMagics astdef.html#generatedMagics const generatedMagics 591
nim PNode astdef.html#PNode type PNode 595
nim TNodeSeq astdef.html#TNodeSeq type TNodeSeq 596
nim PType astdef.html#PType type PType 597
nim PSym astdef.html#PSym type PSym 598
nim TNode astdef.html#TNode object TNode 599
nim TStrTable astdef.html#TStrTable object TStrTable 621
nim locNone astdef.html#locNone TLocKind.locNone 626
nim locTemp astdef.html#locTemp TLocKind.locTemp 626
nim locLocalVar astdef.html#locLocalVar TLocKind.locLocalVar 626
nim locGlobalVar astdef.html#locGlobalVar TLocKind.locGlobalVar 626
nim locParam astdef.html#locParam TLocKind.locParam 626
nim locField astdef.html#locField TLocKind.locField 626
nim locExpr astdef.html#locExpr TLocKind.locExpr 626
nim locProc astdef.html#locProc TLocKind.locProc 626
nim locData astdef.html#locData TLocKind.locData 626
nim locCall astdef.html#locCall TLocKind.locCall 626
nim locOther astdef.html#locOther TLocKind.locOther 626
nim TLocKind astdef.html#TLocKind enum TLocKind 626
nim lfIndirect astdef.html#lfIndirect TLocFlag.lfIndirect 638
nim lfNoDeepCopy astdef.html#lfNoDeepCopy TLocFlag.lfNoDeepCopy 638
nim lfNoDecl astdef.html#lfNoDecl TLocFlag.lfNoDecl 638
nim lfDynamicLib astdef.html#lfDynamicLib TLocFlag.lfDynamicLib 638
nim lfExportLib astdef.html#lfExportLib TLocFlag.lfExportLib 638
nim lfHeader astdef.html#lfHeader TLocFlag.lfHeader 638
nim lfImportCompilerProc astdef.html#lfImportCompilerProc TLocFlag.lfImportCompilerProc 638
nim lfSingleUse astdef.html#lfSingleUse TLocFlag.lfSingleUse 638
nim lfEnforceDeref astdef.html#lfEnforceDeref TLocFlag.lfEnforceDeref 638
nim lfPrepareForMutation astdef.html#lfPrepareForMutation TLocFlag.lfPrepareForMutation 638
nim TLocFlag astdef.html#TLocFlag enum TLocFlag 638
nim OnUnknown astdef.html#OnUnknown TStorageLoc.OnUnknown 651
nim OnStatic astdef.html#OnStatic TStorageLoc.OnStatic 651
nim OnStack astdef.html#OnStack TStorageLoc.OnStack 651
nim OnHeap astdef.html#OnHeap TStorageLoc.OnHeap 651
nim TStorageLoc astdef.html#TStorageLoc enum TStorageLoc 651
nim TLocFlags astdef.html#TLocFlags type TLocFlags 657
nim TLoc astdef.html#TLoc object TLoc 658
nim libHeader astdef.html#libHeader TLibKind.libHeader 667
nim libDynamic astdef.html#libDynamic TLibKind.libDynamic 667
nim TLibKind astdef.html#TLibKind enum TLibKind 667
nim TLib astdef.html#TLib object TLib 670
nim CompilesId astdef.html#CompilesId type CompilesId 679
nim TInstantiation astdef.html#TInstantiation object TInstantiation 681
nim PInstantiation astdef.html#PInstantiation type PInstantiation 689
nim TScope astdef.html#TScope object TScope 691
nim PScope astdef.html#PScope type PScope 698
nim Complete astdef.html#Complete ItemState.Complete 700
nim Partial astdef.html#Partial ItemState.Partial 700
nim Sealed astdef.html#Sealed ItemState.Sealed 700
nim ItemState astdef.html#ItemState enum ItemState 700
nim PLib astdef.html#PLib type PLib 705
nim TSym astdef.html#TSym object TSym 706
nim TTypeSeq astdef.html#TTypeSeq type TTypeSeq 767
nim attachedWasMoved astdef.html#attachedWasMoved TTypeAttachedOp.attachedWasMoved 769
nim attachedDestructor astdef.html#attachedDestructor TTypeAttachedOp.attachedDestructor 769
nim attachedAsgn astdef.html#attachedAsgn TTypeAttachedOp.attachedAsgn 769
nim attachedDup astdef.html#attachedDup TTypeAttachedOp.attachedDup 769
nim attachedSink astdef.html#attachedSink TTypeAttachedOp.attachedSink 769
nim attachedTrace astdef.html#attachedTrace TTypeAttachedOp.attachedTrace 769
nim attachedDeepCopy astdef.html#attachedDeepCopy TTypeAttachedOp.attachedDeepCopy 769
nim TTypeAttachedOp astdef.html#TTypeAttachedOp enum TTypeAttachedOp 769
nim TType astdef.html#TType object TType 778
nim TPair astdef.html#TPair object TPair 811
nim TPairSeq astdef.html#TPairSeq type TPairSeq 814
nim TIdPair astdef.html#TIdPair object TIdPair 816
nim TIdPairSeq astdef.html#TIdPairSeq type TIdPairSeq 820
nim TIdTable astdef.html#TIdTable object TIdTable 821
nim TNodePair astdef.html#TNodePair object TNodePair 825
nim TNodePairSeq astdef.html#TNodePairSeq type TNodePairSeq 830
nim TNodeTable astdef.html#TNodeTable object TNodeTable 831
nim TObjectSeq astdef.html#TObjectSeq type TObjectSeq 837
nim TObjectSet astdef.html#TObjectSet object TObjectSet 838
nim impUnknown astdef.html#impUnknown TImplication.impUnknown 842
nim impNo astdef.html#impNo TImplication.impNo 842
nim impYes astdef.html#impYes TImplication.impYes 842
nim TImplication astdef.html#TImplication enum TImplication 842
nim OverloadableSyms astdef.html#OverloadableSyms const OverloadableSyms 847
nim GenericTypes astdef.html#GenericTypes const GenericTypes 850
nim StructuralEquivTypes astdef.html#StructuralEquivTypes const StructuralEquivTypes 853
nim ConcreteTypes astdef.html#ConcreteTypes const ConcreteTypes 857
nim IntegralTypes astdef.html#IntegralTypes const IntegralTypes 864
nim ConstantDataTypes astdef.html#ConstantDataTypes const ConstantDataTypes 866
nim NilableTypes astdef.html#NilableTypes const NilableTypes 868
nim PtrLikeKinds astdef.html#PtrLikeKinds const PtrLikeKinds 870
nim PersistentNodeFlags astdef.html#PersistentNodeFlags const PersistentNodeFlags 871
nim namePos astdef.html#namePos const namePos 879
nim patternPos astdef.html#patternPos const patternPos 880
nim genericParamsPos astdef.html#genericParamsPos const genericParamsPos 881
nim paramsPos astdef.html#paramsPos const paramsPos 882
nim pragmasPos astdef.html#pragmasPos const pragmasPos 883
nim miscPos astdef.html#miscPos const miscPos 884
nim bodyPos astdef.html#bodyPos const bodyPos 885
nim resultPos astdef.html#resultPos const resultPos 886
nim dispatcherPos astdef.html#dispatcherPos const dispatcherPos 887
nim nfAllFieldsSet astdef.html#nfAllFieldsSet const nfAllFieldsSet 889
nim nkIdentKinds astdef.html#nkIdentKinds const nkIdentKinds 891
nim nkPragmaCallKinds astdef.html#nkPragmaCallKinds const nkPragmaCallKinds 894
nim nkLiterals astdef.html#nkLiterals const nkLiterals 895
nim nkFloatLiterals astdef.html#nkFloatLiterals const nkFloatLiterals 896
nim nkLambdaKinds astdef.html#nkLambdaKinds const nkLambdaKinds 897
nim declarativeDefs astdef.html#declarativeDefs const declarativeDefs 898
nim routineDefs astdef.html#routineDefs const routineDefs 899
nim procDefs astdef.html#procDefs const procDefs 900
nim callableDefs astdef.html#callableDefs const callableDefs 901
nim nkSymChoices astdef.html#nkSymChoices const nkSymChoices 903
nim nkStrKinds astdef.html#nkStrKinds const nkStrKinds 904
nim skLocalVars astdef.html#skLocalVars const skLocalVars 906
nim skProcKinds astdef.html#skProcKinds const skProcKinds 907
nim defaultSize astdef.html#defaultSize const defaultSize 910
nim defaultAlignment astdef.html#defaultAlignment const defaultAlignment 911
nim defaultOffset astdef.html#defaultOffset const defaultOffset 912
nim forceLazyBodyHook astdef.html#forceLazyBodyHook var forceLazyBodyHook 915
nim len astdef.html#len,PNode proc len(n: PNode): int 930
nim safeLen astdef.html#safeLen,PNode proc safeLen(n: PNode): int 935
nim `[]` astdef.html#[].t,PNode,int template `[]`(n: PNode; i: int): PNode 940
nim `[]=` astdef.html#[]=.t,PNode,int,PNode template `[]=`(n: PNode; i: int; x: PNode) 941
nim `[]` astdef.html#[].t,PNode,BackwardsIndex template `[]`(n: PNode; i: BackwardsIndex): PNode 943
nim `[]=` astdef.html#[]=.t,PNode,BackwardsIndex,PNode template `[]=`(n: PNode; i: BackwardsIndex; x: PNode) 944
nim items astdef.html#items.i,PNode iterator items(n: PNode): PNode 946
nim newNode astdef.html#newNode,TNodeKind proc newNode(kind: TNodeKind): PNode 971
nim newNodeI astdef.html#newNodeI,TNodeKind,TLineInfo proc newNodeI(kind: TNodeKind; info: TLineInfo): PNode 976
nim newNodeI astdef.html#newNodeI,TNodeKind,TLineInfo,int proc newNodeI(kind: TNodeKind; info: TLineInfo; children: int): PNode 981
nim newNodeIT astdef.html#newNodeIT,TNodeKind,TLineInfo,PType proc newNodeIT(kind: TNodeKind; info: TLineInfo; typ: PType): PNode 988
nim newNode astdef.html#newNode,TNodeKind,TLineInfo proc newNode(kind: TNodeKind; info: TLineInfo): PNode 994
nim newIdentNode astdef.html#newIdentNode,PIdent,TLineInfo proc newIdentNode(ident: PIdent; info: TLineInfo): PNode 999
nim newSymNode astdef.html#newSymNode,PSym,TLineInfo proc newSymNode(sym: PSym; info: TLineInfo): PNode 1004
nim newStrNode astdef.html#newStrNode,TNodeKind,string proc newStrNode(kind: TNodeKind; strVal: string): PNode 1018
nim newStrNode astdef.html#newStrNode,string,TLineInfo proc newStrNode(strVal: string; info: TLineInfo): PNode 1022
nim HookEntry astdef.html#HookEntry LogEntryKind.HookEntry 1031
nim ConverterEntry astdef.html#ConverterEntry LogEntryKind.ConverterEntry 1031
nim MethodEntry astdef.html#MethodEntry LogEntryKind.MethodEntry 1031
nim EnumToStrEntry astdef.html#EnumToStrEntry LogEntryKind.EnumToStrEntry 1031
nim GenericInstEntry astdef.html#GenericInstEntry LogEntryKind.GenericInstEntry 1031
nim PureEnumEntry astdef.html#PureEnumEntry LogEntryKind.PureEnumEntry 1031
nim LogEntryKind astdef.html#LogEntryKind enum LogEntryKind 1031
nim LogEntry astdef.html#LogEntry object LogEntry 1034
nim forcePartial astdef.html#forcePartial,PSym proc forcePartial(s: PSym) 1043
nim forcePartial astdef.html#forcePartial,PType proc forcePartial(t: PType) 1077
nim GrowthFactor astdef.html#GrowthFactor const GrowthFactor 1095
nim StartSize astdef.html#StartSize const StartSize 1096
nim nextTry astdef.html#nextTry,Hash,Hash proc nextTry(h, maxHash: Hash): Hash 1098
nim mustRehash astdef.html#mustRehash,int,int proc mustRehash(length, counter: int): bool 1104
nim strTableContains astdef.html#strTableContains,TStrTable,PSym proc strTableContains(t: TStrTable; n: PSym): bool 1108
nim symTabReplace astdef.html#symTabReplace,TStrTable,PSym,PSym proc symTabReplace(t: var TStrTable; prevSym: PSym; newSym: PSym) 1137
nim strTableAdd astdef.html#strTableAdd,TStrTable,PSym proc strTableAdd(t: var TStrTable; n: PSym) 1147
nim strTableInclReportConflict astdef.html#strTableInclReportConflict,TStrTable,PSym proc strTableInclReportConflict(t: var TStrTable; n: PSym; onConflictKeepOld = false): PSym 1152
nim strTableIncl astdef.html#strTableIncl,TStrTable,PSym proc strTableIncl(t: var TStrTable; n: PSym; onConflictKeepOld = false): bool 1185
nim strTableGet astdef.html#strTableGet,TStrTable,PIdent proc strTableGet(t: TStrTable; name: PIdent): PSym 1189
nim nodeCommentReader astdef.html#nodeCommentReader var nodeCommentReader 1202
nim nodeCommentWriter astdef.html#nodeCommentWriter var nodeCommentWriter 1203
nimgrp newnodei astdef.html#newNodeI-procs-all proc 976
nimgrp newstrnode astdef.html#newStrNode-procs-all proc 1018
nimgrp newnode astdef.html#newNode-procs-all proc 971
nimgrp forcepartial astdef.html#forcePartial-procs-all proc 1043
nimgrp []= astdef.html#[]=-templates-all template 941
nimgrp [] astdef.html#[]-templates-all template 940

256
compiler/astmsgs.html Normal file
View File

@@ -0,0 +1,256 @@
<?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>astmsgs</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">astmsgs</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">addDeclaredLoc
<li><a class="reference" href="#addDeclaredLoc%2Cstring%2CConfigRef%2CPSym" title="addDeclaredLoc(result: var string; conf: ConfigRef; sym: PSym)">addDeclaredLoc(result: var string; conf: ConfigRef; sym: PSym)</a></li>
<li><a class="reference" href="#addDeclaredLoc%2Cstring%2CConfigRef%2CPType" title="addDeclaredLoc(result: var string; conf: ConfigRef; typ: PType)">addDeclaredLoc(result: var string; conf: ConfigRef; typ: PType)</a></li>
</ul>
<ul class="simple nested-toc-section">addDeclaredLocMaybe
<li><a class="reference" href="#addDeclaredLocMaybe%2Cstring%2CConfigRef%2CPSym" title="addDeclaredLocMaybe(result: var string; conf: ConfigRef; sym: PSym)">addDeclaredLocMaybe(result: var string; conf: ConfigRef; sym: PSym)</a></li>
<li><a class="reference" href="#addDeclaredLocMaybe%2Cstring%2CConfigRef%2CPType" title="addDeclaredLocMaybe(result: var string; conf: ConfigRef; typ: PType)">addDeclaredLocMaybe(result: var string; conf: ConfigRef; typ: PType)</a></li>
</ul>
<ul class="simple nested-toc-section">addTypeNodeDeclaredLoc
<li><a class="reference" href="#addTypeNodeDeclaredLoc%2Cstring%2CConfigRef%2CPType" title="addTypeNodeDeclaredLoc(result: var string; conf: ConfigRef; typ: PType)">addTypeNodeDeclaredLoc(result: var string; conf: ConfigRef; typ: PType)</a></li>
</ul>
<ul class="simple nested-toc-section">genFieldDefect
<li><a class="reference" href="#genFieldDefect%2CConfigRef%2Cstring%2CPSym" title="genFieldDefect(conf: ConfigRef; field: string; disc: PSym): string">genFieldDefect(conf: ConfigRef; field: string; disc: PSym): string</a></li>
</ul>
<ul class="simple nested-toc-section">typSym
<li><a class="reference" href="#typSym%2CPType" title="typSym(t: PType): PSym">typSym(t: PType): PSym</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">quoteExpr
<li><a class="reference" href="#quoteExpr.t%2Cstring" title="quoteExpr(a: string): untyped">quoteExpr(a: string): untyped</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/astmsgs.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astmsgs.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="options.html">options</a>, <a class="reference external" href="ast.html">ast</a>, <a class="reference external" href="msgs.html">msgs</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="addDeclaredLoc-procs-all">
<div id="addDeclaredLoc,string,ConfigRef,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#addDeclaredLoc%2Cstring%2CConfigRef%2CPSym"><span class="Identifier">addDeclaredLoc</span></a><span class="Other">(</span><span class="Identifier">result</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">string</span><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">sym</span><span class="Other">:</span> <a href="astdef.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">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</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">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="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/astmsgs.nim#L10" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astmsgs.nim#L10" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="addDeclaredLoc,string,ConfigRef,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#addDeclaredLoc%2Cstring%2CConfigRef%2CPType"><span class="Identifier">addDeclaredLoc</span></a><span class="Other">(</span><span class="Identifier">result</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">string</span><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">typ</span><span class="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/astmsgs.nim#L17" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astmsgs.nim#L17" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addDeclaredLocMaybe-procs-all">
<div id="addDeclaredLocMaybe,string,ConfigRef,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#addDeclaredLocMaybe%2Cstring%2CConfigRef%2CPSym"><span class="Identifier">addDeclaredLocMaybe</span></a><span class="Other">(</span><span class="Identifier">result</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">string</span><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">sym</span><span class="Other">:</span> <a href="astdef.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">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</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">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="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/astmsgs.nim#L13" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astmsgs.nim#L13" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="addDeclaredLocMaybe,string,ConfigRef,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#addDeclaredLocMaybe%2Cstring%2CConfigRef%2CPType"><span class="Identifier">addDeclaredLocMaybe</span></a><span class="Other">(</span><span class="Identifier">result</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">string</span><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">typ</span><span class="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/astmsgs.nim#L33" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astmsgs.nim#L33" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addTypeNodeDeclaredLoc-procs-all">
<div id="addTypeNodeDeclaredLoc,string,ConfigRef,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#addTypeNodeDeclaredLoc%2Cstring%2CConfigRef%2CPType"><span class="Identifier">addTypeNodeDeclaredLoc</span></a><span class="Other">(</span><span class="Identifier">result</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">string</span><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">typ</span><span class="Other">:</span> <a href="astdef.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">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</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">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="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/astmsgs.nim#L27" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astmsgs.nim#L27" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="genFieldDefect-procs-all">
<div id="genFieldDefect,ConfigRef,string,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#genFieldDefect%2CConfigRef%2Cstring%2CPSym"><span class="Identifier">genFieldDefect</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">field</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">disc</span><span class="Other">:</span> <a href="astdef.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">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/astmsgs.nim#L40" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astmsgs.nim#L40" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="typSym-procs-all">
<div id="typSym,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#typSym%2CPType"><span class="Identifier">typSym</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.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">OSError</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">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="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/astmsgs.nim#L5" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astmsgs.nim#L5" 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="quoteExpr-templates-all">
<div id="quoteExpr.t,string">
<dt><pre><span class="Keyword">template</span> <a href="#quoteExpr.t%2Cstring"><span class="Identifier">quoteExpr</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt>
<dd>
can be used for quoting expressions in error msgs.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/astmsgs.nim#L36" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astmsgs.nim#L36" 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: 2026-07-10 18:29:08 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

11
compiler/astmsgs.idx Normal file
View File

@@ -0,0 +1,11 @@
nimTitle astmsgs astmsgs.html module astmsgs 0
nim typSym astmsgs.html#typSym,PType proc typSym(t: PType): PSym 5
nim addDeclaredLoc astmsgs.html#addDeclaredLoc,string,ConfigRef,PSym proc addDeclaredLoc(result: var string; conf: ConfigRef; sym: PSym) 10
nim addDeclaredLocMaybe astmsgs.html#addDeclaredLocMaybe,string,ConfigRef,PSym proc addDeclaredLocMaybe(result: var string; conf: ConfigRef; sym: PSym) 13
nim addDeclaredLoc astmsgs.html#addDeclaredLoc,string,ConfigRef,PType proc addDeclaredLoc(result: var string; conf: ConfigRef; typ: PType) 17
nim addTypeNodeDeclaredLoc astmsgs.html#addTypeNodeDeclaredLoc,string,ConfigRef,PType proc addTypeNodeDeclaredLoc(result: var string; conf: ConfigRef; typ: PType) 27
nim addDeclaredLocMaybe astmsgs.html#addDeclaredLocMaybe,string,ConfigRef,PType proc addDeclaredLocMaybe(result: var string; conf: ConfigRef; typ: PType) 33
nim quoteExpr astmsgs.html#quoteExpr.t,string template quoteExpr(a: string): untyped 36
nim genFieldDefect astmsgs.html#genFieldDefect,ConfigRef,string,PSym proc genFieldDefect(conf: ConfigRef; field: string; disc: PSym): string 40
nimgrp adddeclaredloc astmsgs.html#addDeclaredLoc-procs-all proc 10
nimgrp adddeclaredlocmaybe astmsgs.html#addDeclaredLocMaybe-procs-all proc 13

200
compiler/astyaml.html Normal file
View File

@@ -0,0 +1,200 @@
<?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>astyaml</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">astyaml</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">addYamlString
<li><a class="reference" href="#addYamlString%2Cstring%2Cstring" title="addYamlString(res: var string; s: string)">addYamlString(res: var string; s: string)</a></li>
</ul>
<ul class="simple nested-toc-section">lineInfoToStr
<li><a class="reference" href="#lineInfoToStr%2CConfigRef%2CTLineInfo" title="lineInfoToStr(conf: ConfigRef; info: TLineInfo): string">lineInfoToStr(conf: ConfigRef; info: TLineInfo): string</a></li>
</ul>
<ul class="simple nested-toc-section">symToYaml
<li><a class="reference" href="#symToYaml%2CConfigRef%2CPSym%2Cint%2Cint" title="symToYaml(conf: ConfigRef; n: PSym; indent: int = 0; maxRecDepth: int = -1): string">symToYaml(conf: ConfigRef; n: PSym; indent: int = 0; maxRecDepth: int = -1): string</a></li>
</ul>
<ul class="simple nested-toc-section">treeToYaml
<li><a class="reference" href="#treeToYaml%2CConfigRef%2CPNode%2Cint%2Cint" title="treeToYaml(conf: ConfigRef; n: PNode; indent: int = 0; maxRecDepth: int = -1): string">treeToYaml(conf: ConfigRef; n: PNode; indent: int = 0; maxRecDepth: int = -1): string</a></li>
</ul>
<ul class="simple nested-toc-section">typeToYaml
<li><a class="reference" href="#typeToYaml%2CConfigRef%2CPType%2Cint%2Cint" title="typeToYaml(conf: ConfigRef; n: PType; indent: int = 0; maxRecDepth: int = -1): string">typeToYaml(conf: ConfigRef; n: PType; indent: int = 0; maxRecDepth: int = -1): string</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/astyaml.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astyaml.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></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="lineinfos.html">lineinfos</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="rodutils.html">rodutils</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="addYamlString-procs-all">
<div id="addYamlString,string,string">
<dt><pre><span class="Keyword">proc</span> <a href="#addYamlString%2Cstring%2Cstring"><span class="Identifier">addYamlString</span></a><span class="Other">(</span><span class="Identifier">res</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">s</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/astyaml.nim#L15" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astyaml.nim#L15" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="lineInfoToStr-procs-all">
<div id="lineInfoToStr,ConfigRef,TLineInfo">
<dt><pre><span class="Keyword">proc</span> <a href="#lineInfoToStr%2CConfigRef%2CTLineInfo"><span class="Identifier">lineInfoToStr</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">info</span><span class="Other">:</span> <a href="lineinfos.html#TLineInfo"><span class="Identifier">TLineInfo</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">ValueError</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/astyaml.nim#L43" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astyaml.nim#L43" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="symToYaml-procs-all">
<div id="symToYaml,ConfigRef,PSym,int,int">
<dt><pre><span class="Keyword">proc</span> <a href="#symToYaml%2CConfigRef%2CPSym%2Cint%2Cint"><span class="Identifier">symToYaml</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">n</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">indent</span><span class="Other">:</span> <span class="Identifier">int</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">;</span> <span class="Identifier">maxRecDepth</span><span class="Other">:</span> <span class="Identifier">int</span> <span class="Other">=</span> <span class="DecNumber">-1</span><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">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</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">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="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/astyaml.nim#L157" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astyaml.nim#L157" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="treeToYaml-procs-all">
<div id="treeToYaml,ConfigRef,PNode,int,int">
<dt><pre><span class="Keyword">proc</span> <a href="#treeToYaml%2CConfigRef%2CPNode%2Cint%2Cint"><span class="Identifier">treeToYaml</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">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">indent</span><span class="Other">:</span> <span class="Identifier">int</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">;</span>
<span class="Identifier">maxRecDepth</span><span class="Other">:</span> <span class="Identifier">int</span> <span class="Other">=</span> <span class="DecNumber">-1</span><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">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</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">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="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/astyaml.nim#L147" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astyaml.nim#L147" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="typeToYaml-procs-all">
<div id="typeToYaml,ConfigRef,PType,int,int">
<dt><pre><span class="Keyword">proc</span> <a href="#typeToYaml%2CConfigRef%2CPType%2Cint%2Cint"><span class="Identifier">typeToYaml</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">n</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</span></a><span class="Other">;</span> <span class="Identifier">indent</span><span class="Other">:</span> <span class="Identifier">int</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">;</span>
<span class="Identifier">maxRecDepth</span><span class="Other">:</span> <span class="Identifier">int</span> <span class="Other">=</span> <span class="DecNumber">-1</span><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">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</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">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="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/astyaml.nim#L152" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/astyaml.nim#L152" 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: 2026-07-10 18:29:08 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

6
compiler/astyaml.idx Normal file
View File

@@ -0,0 +1,6 @@
nimTitle astyaml astyaml.html module astyaml 0
nim addYamlString astyaml.html#addYamlString,string,string proc addYamlString(res: var string; s: string) 15
nim lineInfoToStr astyaml.html#lineInfoToStr,ConfigRef,TLineInfo proc lineInfoToStr(conf: ConfigRef; info: TLineInfo): string 43
nim treeToYaml astyaml.html#treeToYaml,ConfigRef,PNode,int,int proc treeToYaml(conf: ConfigRef; n: PNode; indent: int = 0; maxRecDepth: int = -1): string 147
nim typeToYaml astyaml.html#typeToYaml,ConfigRef,PType,int,int proc typeToYaml(conf: ConfigRef; n: PType; indent: int = 0; maxRecDepth: int = -1): string 152
nim symToYaml astyaml.html#symToYaml,ConfigRef,PSym,int,int proc symToYaml(conf: ConfigRef; n: PSym; indent: int = 0; maxRecDepth: int = -1): string 157

356
compiler/bitsets.html Normal file
View File

@@ -0,0 +1,356 @@
<?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>bitsets</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">bitsets</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>
<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="#TBitSet" title="TBitSet = seq[ElemType]">TBitSet</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#10" id="60">Consts</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#ElemSize" title="ElemSize = 8">ElemSize</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">bitSetCard
<li><a class="reference" href="#bitSetCard%2CTBitSet" title="bitSetCard(x: TBitSet): BiggestInt">bitSetCard(x: TBitSet): BiggestInt</a></li>
</ul>
<ul class="simple nested-toc-section">bitSetContains
<li><a class="reference" href="#bitSetContains%2CTBitSet%2CTBitSet" title="bitSetContains(x, y: TBitSet): bool">bitSetContains(x, y: TBitSet): bool</a></li>
</ul>
<ul class="simple nested-toc-section">bitSetDiff
<li><a class="reference" href="#bitSetDiff%2CTBitSet%2CTBitSet" title="bitSetDiff(x: var TBitSet; y: TBitSet)">bitSetDiff(x: var TBitSet; y: TBitSet)</a></li>
</ul>
<ul class="simple nested-toc-section">bitSetEquals
<li><a class="reference" href="#bitSetEquals%2CTBitSet%2CTBitSet" title="bitSetEquals(x, y: TBitSet): bool">bitSetEquals(x, y: TBitSet): bool</a></li>
</ul>
<ul class="simple nested-toc-section">bitSetExcl
<li><a class="reference" href="#bitSetExcl%2CTBitSet%2CBiggestInt" title="bitSetExcl(x: var TBitSet; elem: BiggestInt)">bitSetExcl(x: var TBitSet; elem: BiggestInt)</a></li>
</ul>
<ul class="simple nested-toc-section">bitSetIn
<li><a class="reference" href="#bitSetIn%2CTBitSet%2CBiggestInt" title="bitSetIn(x: TBitSet; e: BiggestInt): bool">bitSetIn(x: TBitSet; e: BiggestInt): bool</a></li>
</ul>
<ul class="simple nested-toc-section">bitSetIncl
<li><a class="reference" href="#bitSetIncl%2CTBitSet%2CBiggestInt" title="bitSetIncl(x: var TBitSet; elem: BiggestInt)">bitSetIncl(x: var TBitSet; elem: BiggestInt)</a></li>
</ul>
<ul class="simple nested-toc-section">bitSetInit
<li><a class="reference" href="#bitSetInit%2CTBitSet%2Cint" title="bitSetInit(b: var TBitSet; length: int)">bitSetInit(b: var TBitSet; length: int)</a></li>
</ul>
<ul class="simple nested-toc-section">bitSetIntersect
<li><a class="reference" href="#bitSetIntersect%2CTBitSet%2CTBitSet" title="bitSetIntersect(x: var TBitSet; y: TBitSet)">bitSetIntersect(x: var TBitSet; y: TBitSet)</a></li>
</ul>
<ul class="simple nested-toc-section">bitSetSymDiff
<li><a class="reference" href="#bitSetSymDiff%2CTBitSet%2CTBitSet" title="bitSetSymDiff(x: var TBitSet; y: TBitSet)">bitSetSymDiff(x: var TBitSet; y: TBitSet)</a></li>
</ul>
<ul class="simple nested-toc-section">bitSetToWord
<li><a class="reference" href="#bitSetToWord%2CTBitSet%2Cint" title="bitSetToWord(s: TBitSet; size: int): BiggestUInt">bitSetToWord(s: TBitSet; size: int): BiggestUInt</a></li>
</ul>
<ul class="simple nested-toc-section">bitSetUnion
<li><a class="reference" href="#bitSetUnion%2CTBitSet%2CTBitSet" title="bitSetUnion(x: var TBitSet; y: TBitSet)">bitSetUnion(x: var TBitSet; y: TBitSet)</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/bitsets.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/bitsets.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="TBitSet">
<dt><pre><a href="#TBitSet"><span class="Identifier">TBitSet</span></a> <span class="Other">=</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">ElemType</span><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/bitsets.nim#L18" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/bitsets.nim#L18" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</dl>
</div>
<div class="section" id="10">
<h1><a class="toc-backref" href="#10">Consts</a></h1>
<dl class="item">
<div id="ElemSize">
<dt><pre><a href="#ElemSize"><span class="Identifier">ElemSize</span></a> <span class="Other">=</span> <span class="DecNumber">8</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/bitsets.nim#L22" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/bitsets.nim#L22" 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="bitSetCard-procs-all">
<div id="bitSetCard,TBitSet">
<dt><pre><span class="Keyword">proc</span> <a href="#bitSetCard%2CTBitSet"><span class="Identifier">bitSetCard</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="#TBitSet"><span class="Identifier">TBitSet</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">BiggestInt</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/bitsets.nim#L89" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/bitsets.nim#L89" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="bitSetContains-procs-all">
<div id="bitSetContains,TBitSet,TBitSet">
<dt><pre><span class="Keyword">proc</span> <a href="#bitSetContains%2CTBitSet%2CTBitSet"><span class="Identifier">bitSetContains</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="#TBitSet"><span class="Identifier">TBitSet</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/bitsets.nim#L62" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/bitsets.nim#L62" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="bitSetDiff-procs-all">
<div id="bitSetDiff,TBitSet,TBitSet">
<dt><pre><span class="Keyword">proc</span> <a href="#bitSetDiff%2CTBitSet%2CTBitSet"><span class="Identifier">bitSetDiff</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TBitSet"><span class="Identifier">TBitSet</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="#TBitSet"><span class="Identifier">TBitSet</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/bitsets.nim#L47" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/bitsets.nim#L47" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="bitSetEquals-procs-all">
<div id="bitSetEquals,TBitSet,TBitSet">
<dt><pre><span class="Keyword">proc</span> <a href="#bitSetEquals%2CTBitSet%2CTBitSet"><span class="Identifier">bitSetEquals</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="#TBitSet"><span class="Identifier">TBitSet</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/bitsets.nim#L56" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/bitsets.nim#L56" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="bitSetExcl-procs-all">
<div id="bitSetExcl,TBitSet,BiggestInt">
<dt><pre><span class="Keyword">proc</span> <a href="#bitSetExcl%2CTBitSet%2CBiggestInt"><span class="Identifier">bitSetExcl</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TBitSet"><span class="Identifier">TBitSet</span></a><span class="Other">;</span> <span class="Identifier">elem</span><span class="Other">:</span> <span class="Identifier">BiggestInt</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/bitsets.nim#L37" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/bitsets.nim#L37" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="bitSetIn-procs-all">
<div id="bitSetIn,TBitSet,BiggestInt">
<dt><pre><span class="Keyword">proc</span> <a href="#bitSetIn%2CTBitSet%2CBiggestInt"><span class="Identifier">bitSetIn</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="#TBitSet"><span class="Identifier">TBitSet</span></a><span class="Other">;</span> <span class="Identifier">e</span><span class="Other">:</span> <span class="Identifier">BiggestInt</span><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/bitsets.nim#L29" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/bitsets.nim#L29" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="bitSetIncl-procs-all">
<div id="bitSetIncl,TBitSet,BiggestInt">
<dt><pre><span class="Keyword">proc</span> <a href="#bitSetIncl%2CTBitSet%2CBiggestInt"><span class="Identifier">bitSetIncl</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TBitSet"><span class="Identifier">TBitSet</span></a><span class="Other">;</span> <span class="Identifier">elem</span><span class="Other">:</span> <span class="Identifier">BiggestInt</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/bitsets.nim#L32" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/bitsets.nim#L32" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="bitSetInit-procs-all">
<div id="bitSetInit,TBitSet,int">
<dt><pre><span class="Keyword">proc</span> <a href="#bitSetInit%2CTBitSet%2Cint"><span class="Identifier">bitSetInit</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TBitSet"><span class="Identifier">TBitSet</span></a><span class="Other">;</span> <span class="Identifier">length</span><span class="Other">:</span> <span class="Identifier">int</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/bitsets.nim#L41" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/bitsets.nim#L41" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="bitSetIntersect-procs-all">
<div id="bitSetIntersect,TBitSet,TBitSet">
<dt><pre><span class="Keyword">proc</span> <a href="#bitSetIntersect%2CTBitSet%2CTBitSet"><span class="Identifier">bitSetIntersect</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TBitSet"><span class="Identifier">TBitSet</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="#TBitSet"><span class="Identifier">TBitSet</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/bitsets.nim#L53" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/bitsets.nim#L53" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="bitSetSymDiff-procs-all">
<div id="bitSetSymDiff,TBitSet,TBitSet">
<dt><pre><span class="Keyword">proc</span> <a href="#bitSetSymDiff%2CTBitSet%2CTBitSet"><span class="Identifier">bitSetSymDiff</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TBitSet"><span class="Identifier">TBitSet</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="#TBitSet"><span class="Identifier">TBitSet</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/bitsets.nim#L50" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/bitsets.nim#L50" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="bitSetToWord-procs-all">
<div id="bitSetToWord,TBitSet,int">
<dt><pre><span class="Keyword">proc</span> <a href="#bitSetToWord%2CTBitSet%2Cint"><span class="Identifier">bitSetToWord</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="#TBitSet"><span class="Identifier">TBitSet</span></a><span class="Other">;</span> <span class="Identifier">size</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">BiggestUInt</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/bitsets.nim#L94" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/bitsets.nim#L94" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="bitSetUnion-procs-all">
<div id="bitSetUnion,TBitSet,TBitSet">
<dt><pre><span class="Keyword">proc</span> <a href="#bitSetUnion%2CTBitSet%2CTBitSet"><span class="Identifier">bitSetUnion</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TBitSet"><span class="Identifier">TBitSet</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="#TBitSet"><span class="Identifier">TBitSet</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/bitsets.nim#L44" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/bitsets.nim#L44" 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: 2026-07-10 18:29:09 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

15
compiler/bitsets.idx Normal file
View File

@@ -0,0 +1,15 @@
nimTitle bitsets bitsets.html module bitsets 0
nim TBitSet bitsets.html#TBitSet type TBitSet 18
nim ElemSize bitsets.html#ElemSize const ElemSize 22
nim bitSetIn bitsets.html#bitSetIn,TBitSet,BiggestInt proc bitSetIn(x: TBitSet; e: BiggestInt): bool 29
nim bitSetIncl bitsets.html#bitSetIncl,TBitSet,BiggestInt proc bitSetIncl(x: var TBitSet; elem: BiggestInt) 32
nim bitSetExcl bitsets.html#bitSetExcl,TBitSet,BiggestInt proc bitSetExcl(x: var TBitSet; elem: BiggestInt) 37
nim bitSetInit bitsets.html#bitSetInit,TBitSet,int proc bitSetInit(b: var TBitSet; length: int) 41
nim bitSetUnion bitsets.html#bitSetUnion,TBitSet,TBitSet proc bitSetUnion(x: var TBitSet; y: TBitSet) 44
nim bitSetDiff bitsets.html#bitSetDiff,TBitSet,TBitSet proc bitSetDiff(x: var TBitSet; y: TBitSet) 47
nim bitSetSymDiff bitsets.html#bitSetSymDiff,TBitSet,TBitSet proc bitSetSymDiff(x: var TBitSet; y: TBitSet) 50
nim bitSetIntersect bitsets.html#bitSetIntersect,TBitSet,TBitSet proc bitSetIntersect(x: var TBitSet; y: TBitSet) 53
nim bitSetEquals bitsets.html#bitSetEquals,TBitSet,TBitSet proc bitSetEquals(x, y: TBitSet): bool 56
nim bitSetContains bitsets.html#bitSetContains,TBitSet,TBitSet proc bitSetContains(x, y: TBitSet): bool 62
nim bitSetCard bitsets.html#bitSetCard,TBitSet proc bitSetCard(x: TBitSet): BiggestInt 89
nim bitSetToWord bitsets.html#bitSetToWord,TBitSet,int proc bitSetToWord(s: TBitSet; size: int): BiggestUInt 94

271
compiler/btrees.html Normal file
View File

@@ -0,0 +1,271 @@
<?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>btrees</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">btrees</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>
<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="#BTree" title="BTree[Key; Val] = object">BTree</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">add
<li><a class="reference" href="#add%2CBTree%5BKey%2CVal%5D%2CKey%2CVal" title="add[Key, Val](b: var BTree[Key, Val]; key: Key; val: Val)">add[Key, Val](b: var BTree[Key, Val]; key: Key; val: Val)</a></li>
</ul>
<ul class="simple nested-toc-section">contains
<li><a class="reference" href="#contains%2CBTree%5BKey%2CVal%5D%2CKey" title="contains[Key, Val](b: BTree[Key, Val]; key: Key): bool">contains[Key, Val](b: BTree[Key, Val]; key: Key): bool</a></li>
</ul>
<ul class="simple nested-toc-section">getOrDefault
<li><a class="reference" href="#getOrDefault%2CBTree%5BKey%2CVal%5D%2CKey" title="getOrDefault[Key, Val](b: BTree[Key, Val]; key: Key): Val">getOrDefault[Key, Val](b: BTree[Key, Val]; key: Key): Val</a></li>
</ul>
<ul class="simple nested-toc-section">hasNext
<li><a class="reference" href="#hasNext%2CBTree%5BKey%2CVal%5D%2Cint" title="hasNext[Key, Val](b: BTree[Key, Val]; index: int): bool">hasNext[Key, Val](b: BTree[Key, Val]; index: int): bool</a></li>
</ul>
<ul class="simple nested-toc-section">initBTree
<li><a class="reference" href="#initBTree" title="initBTree[Key, Val](): BTree[Key, Val]">initBTree[Key, Val](): BTree[Key, Val]</a></li>
</ul>
<ul class="simple nested-toc-section">len
<li><a class="reference" href="#len%2CBTree%5BKey%2CVal%5D" title="len[Key, Val](b: BTree[Key, Val]): int">len[Key, Val](b: BTree[Key, Val]): int</a></li>
</ul>
<ul class="simple nested-toc-section">next
<li><a class="reference" href="#next%2CBTree%5BKey%2CVal%5D%2Cint" title="next[Key, Val](b: BTree[Key, Val]; index: int): (Key, Val, int)">next[Key, Val](b: BTree[Key, Val]; index: int): (Key, Val, int)</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">pairs
<li><a class="reference" href="#pairs.i%2CBTree%5BKey%2CVal%5D" title="pairs[Key, Val](b: BTree[Key, Val]): (Key, Val)">pairs[Key, Val](b: BTree[Key, Val]): (Key, Val)</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/btrees.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/btrees.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">BTree implementation with few features, but good enough for the Nim compiler's needs.</p>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="BTree">
<dt><pre><a href="#BTree"><span class="Identifier">BTree</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">;</span> <span class="Identifier">Val</span><span class="Other">]</span> <span class="Other">=</span> <span class="Keyword">object</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/btrees.nim#L30" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/btrees.nim#L30" 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="add-procs-all">
<div id="add,BTree[Key,Val],Key,Val">
<dt><pre><span class="Keyword">proc</span> <a href="#add%2CBTree%5BKey%2CVal%5D%2CKey%2CVal"><span class="Identifier">add</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#BTree"><span class="Identifier">BTree</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">:</span> <span class="Identifier">Key</span><span class="Other">;</span> <span class="Identifier">val</span><span class="Other">:</span> <span class="Identifier">Val</span><span class="Other">)</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/btrees.nim#L121" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/btrees.nim#L121" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="contains-procs-all">
<div id="contains,BTree[Key,Val],Key">
<dt><pre><span class="Keyword">proc</span> <a href="#contains%2CBTree%5BKey%2CVal%5D%2CKey"><span class="Identifier">contains</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <a href="#BTree"><span class="Identifier">BTree</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">:</span> <span class="Identifier">Key</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/btrees.nim#L52" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/btrees.nim#L52" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getOrDefault-procs-all">
<div id="getOrDefault,BTree[Key,Val],Key">
<dt><pre><span class="Keyword">proc</span> <a href="#getOrDefault%2CBTree%5BKey%2CVal%5D%2CKey"><span class="Identifier">getOrDefault</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <a href="#BTree"><span class="Identifier">BTree</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">:</span> <span class="Identifier">Key</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Val</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/btrees.nim#L40" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/btrees.nim#L40" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="hasNext-procs-all">
<div id="hasNext,BTree[Key,Val],int">
<dt><pre><span class="Keyword">proc</span> <a href="#hasNext%2CBTree%5BKey%2CVal%5D%2Cint"><span class="Identifier">hasNext</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <a href="#BTree"><span class="Identifier">BTree</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">index</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/btrees.nim#L148" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/btrees.nim#L148" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="initBTree-procs-all">
<div id="initBTree">
<dt><pre><span class="Keyword">proc</span> <a href="#initBTree"><span class="Identifier">initBTree</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="#BTree"><span class="Identifier">BTree</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/btrees.nim#L34" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/btrees.nim#L34" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="len-procs-all">
<div id="len,BTree[Key,Val]">
<dt><pre><span class="Keyword">proc</span> <a href="#len%2CBTree%5BKey%2CVal%5D"><span class="Identifier">len</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <a href="#BTree"><span class="Identifier">BTree</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {.<span class="Identifier">inline</span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/btrees.nim#L180" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/btrees.nim#L180" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="next-procs-all">
<div id="next,BTree[Key,Val],int">
<dt><pre><span class="Keyword">proc</span> <a href="#next%2CBTree%5BKey%2CVal%5D%2Cint"><span class="Identifier">next</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <a href="#BTree"><span class="Identifier">BTree</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">index</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Other">(</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">,</span> <span class="Identifier">int</span><span class="Other">)</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/btrees.nim#L158" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/btrees.nim#L158" 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="pairs-iterators-all">
<div id="pairs.i,BTree[Key,Val]">
<dt><pre><span class="Keyword">iterator</span> <a href="#pairs.i%2CBTree%5BKey%2CVal%5D"><span class="Identifier">pairs</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <a href="#BTree"><span class="Identifier">BTree</span></a><span class="Other">[</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Other">(</span><span class="Identifier">Key</span><span class="Other">,</span> <span class="Identifier">Val</span><span class="Other">)</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/btrees.nim#L173" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/btrees.nim#L173" 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: 2026-07-10 18:29:08 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

10
compiler/btrees.idx Normal file
View File

@@ -0,0 +1,10 @@
nimTitle btrees btrees.html module btrees 0
nim BTree btrees.html#BTree object BTree 30
nim initBTree btrees.html#initBTree proc initBTree[Key, Val](): BTree[Key, Val] 34
nim getOrDefault btrees.html#getOrDefault,BTree[Key,Val],Key proc getOrDefault[Key, Val](b: BTree[Key, Val]; key: Key): Val 40
nim contains btrees.html#contains,BTree[Key,Val],Key proc contains[Key, Val](b: BTree[Key, Val]; key: Key): bool 52
nim add btrees.html#add,BTree[Key,Val],Key,Val proc add[Key, Val](b: var BTree[Key, Val]; key: Key; val: Val) 121
nim hasNext btrees.html#hasNext,BTree[Key,Val],int proc hasNext[Key, Val](b: BTree[Key, Val]; index: int): bool 148
nim next btrees.html#next,BTree[Key,Val],int proc next[Key, Val](b: BTree[Key, Val]; index: int): (Key, Val, int) 158
nim pairs btrees.html#pairs.i,BTree[Key,Val] iterator pairs[Key, Val](b: BTree[Key, Val]): (Key, Val) 173
nim len btrees.html#len,BTree[Key,Val] proc len[Key, Val](b: BTree[Key, Val]): int 180

1005
compiler/cbuilderbase.html Normal file

File diff suppressed because it is too large Load Diff

73
compiler/cbuilderbase.idx Normal file
View File

@@ -0,0 +1,73 @@
nimTitle cbuilderbase cbuilderbase.html module cbuilderbase 0
nim Snippet cbuilderbase.html#Snippet type Snippet 4
nim Builder cbuilderbase.html#Builder object Builder 5
nim newBuilder cbuilderbase.html#newBuilder.t,string template newBuilder(s: string): Builder 9
nim extract cbuilderbase.html#extract,Builder proc extract(builder: Builder): Snippet 12
nim add cbuilderbase.html#add,Builder,string proc add(builder: var Builder; s: string) 15
nim add cbuilderbase.html#add,Builder,char proc add(builder: var Builder; s: char) 18
nim addNewline cbuilderbase.html#addNewline,Builder proc addNewline(builder: var Builder) 21
nim addLineEnd cbuilderbase.html#addLineEnd,Builder,string proc addLineEnd(builder: var Builder; s: string) 26
nim addLineEndIndent cbuilderbase.html#addLineEndIndent,Builder,string proc addLineEndIndent(builder: var Builder; s: string) 30
nim addDedent cbuilderbase.html#addDedent,Builder,string proc addDedent(builder: var Builder; s: string) 35
nim addLineEndDedent cbuilderbase.html#addLineEndDedent,Builder,string proc addLineEndDedent(builder: var Builder; s: string) 41
nim addLineComment cbuilderbase.html#addLineComment,Builder,string proc addLineComment(builder: var Builder; comment: string) 45
nim addIntValue cbuilderbase.html#addIntValue,Builder,int proc addIntValue(builder: var Builder; val: int) 51
nim addIntValue cbuilderbase.html#addIntValue,Builder,int64 proc addIntValue(builder: var Builder; val: int64) 54
nim addIntValue cbuilderbase.html#addIntValue,Builder,uint64 proc addIntValue(builder: var Builder; val: uint64) 57
nim addIntValue cbuilderbase.html#addIntValue,Builder,Int128 proc addIntValue(builder: var Builder; val: Int128) 60
nim cIntValue cbuilderbase.html#cIntValue.t,int template cIntValue(val: int): Snippet 63
nim cIntValue cbuilderbase.html#cIntValue.t,int64 template cIntValue(val: int64): Snippet 64
nim cIntValue cbuilderbase.html#cIntValue.t,uint64 template cIntValue(val: uint64): Snippet 65
nim cIntValue cbuilderbase.html#cIntValue.t,Int128 template cIntValue(val: Int128): Snippet 66
nim cUintValue cbuilderbase.html#cUintValue.t,uint template cUintValue(val: uint): Snippet 68
nim addFloatValue cbuilderbase.html#addFloatValue,Builder,float proc addFloatValue(builder: var Builder; val: float) 72
nim cFloatValue cbuilderbase.html#cFloatValue.t,float template cFloatValue(val: float): Snippet 75
nim addInt64Literal cbuilderbase.html#addInt64Literal,Builder,BiggestInt proc addInt64Literal(result: var Builder; i: BiggestInt) 77
nim addUint64Literal cbuilderbase.html#addUint64Literal,Builder,uint64 proc addUint64Literal(result: var Builder; i: uint64) 83
nim addIntLiteral cbuilderbase.html#addIntLiteral,Builder,BiggestInt proc addIntLiteral(result: var Builder; i: BiggestInt) 86
nim addIntLiteral cbuilderbase.html#addIntLiteral,Builder,Int128 proc addIntLiteral(result: var Builder; i: Int128) 97
nim cInt64Literal cbuilderbase.html#cInt64Literal,BiggestInt proc cInt64Literal(i: BiggestInt): Snippet 100
nim cUint64Literal cbuilderbase.html#cUint64Literal,uint64 proc cUint64Literal(i: uint64): Snippet 106
nim cIntLiteral cbuilderbase.html#cIntLiteral,BiggestInt proc cIntLiteral(i: BiggestInt): Snippet 109
nim cIntLiteral cbuilderbase.html#cIntLiteral,Int128 proc cIntLiteral(i: Int128): Snippet 120
nim NimInt cbuilderbase.html#NimInt const NimInt 124
nim NimInt8 cbuilderbase.html#NimInt8 const NimInt8 125
nim NimInt16 cbuilderbase.html#NimInt16 const NimInt16 126
nim NimInt32 cbuilderbase.html#NimInt32 const NimInt32 127
nim NimInt64 cbuilderbase.html#NimInt64 const NimInt64 128
nim CInt cbuilderbase.html#CInt const CInt 129
nim NimUint cbuilderbase.html#NimUint const NimUint 130
nim NimUint8 cbuilderbase.html#NimUint8 const NimUint8 131
nim NimUint16 cbuilderbase.html#NimUint16 const NimUint16 132
nim NimUint32 cbuilderbase.html#NimUint32 const NimUint32 133
nim NimUint64 cbuilderbase.html#NimUint64 const NimUint64 134
nim NimFloat cbuilderbase.html#NimFloat const NimFloat 135
nim NimFloat32 cbuilderbase.html#NimFloat32 const NimFloat32 136
nim NimFloat64 cbuilderbase.html#NimFloat64 const NimFloat64 137
nim NimFloat128 cbuilderbase.html#NimFloat128 const NimFloat128 138
nim NimNan cbuilderbase.html#NimNan const NimNan 139
nim NimInf cbuilderbase.html#NimInf const NimInf 140
nim NimBool cbuilderbase.html#NimBool const NimBool 141
nim NimTrue cbuilderbase.html#NimTrue const NimTrue 142
nim NimFalse cbuilderbase.html#NimFalse const NimFalse 143
nim NimChar cbuilderbase.html#NimChar const NimChar 144
nim CChar cbuilderbase.html#CChar const CChar 145
nim NimCstring cbuilderbase.html#NimCstring const NimCstring 146
nim NimNil cbuilderbase.html#NimNil const NimNil 147
nim CNil cbuilderbase.html#CNil const CNil 148
nim NimStrlitFlag cbuilderbase.html#NimStrlitFlag const NimStrlitFlag 149
nim CVoid cbuilderbase.html#CVoid const CVoid 150
nim CPointer cbuilderbase.html#CPointer const CPointer 151
nim CConstPointer cbuilderbase.html#CConstPointer const CConstPointer 152
nim cIntType cbuilderbase.html#cIntType,BiggestInt proc cIntType(bits: BiggestInt): Snippet 154
nim cUintType cbuilderbase.html#cUintType,BiggestInt proc cUintType(bits: BiggestInt): Snippet 157
nim WaitingIf cbuilderbase.html#WaitingIf IfBuilderState.WaitingIf 161
nim WaitingElseIf cbuilderbase.html#WaitingElseIf IfBuilderState.WaitingElseIf 161
nim InBlock cbuilderbase.html#InBlock IfBuilderState.InBlock 161
nim IfBuilderState cbuilderbase.html#IfBuilderState enum IfBuilderState 161
nim IfBuilder cbuilderbase.html#IfBuilder object IfBuilder 163
nimgrp cintliteral cbuilderbase.html#cIntLiteral-procs-all proc 109
nimgrp addintvalue cbuilderbase.html#addIntValue-procs-all proc 51
nimgrp addintliteral cbuilderbase.html#addIntLiteral-procs-all proc 86
nimgrp add cbuilderbase.html#add-procs-all proc 15
nimgrp cintvalue cbuilderbase.html#cIntValue-templates-all template 63

283
compiler/ccgutils.html Normal file
View File

@@ -0,0 +1,283 @@
<?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>ccgutils</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">ccgutils</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">ccgIntroducedPtr
<li><a class="reference" href="#ccgIntroducedPtr%2CConfigRef%2CPSym%2CPType" title="ccgIntroducedPtr(conf: ConfigRef; s: PSym; retType: PType): bool">ccgIntroducedPtr(conf: ConfigRef; s: PSym; retType: PType): bool</a></li>
</ul>
<ul class="simple nested-toc-section">encodeName
<li><a class="reference" href="#encodeName%2Cstring" title="encodeName(name: string): string">encodeName(name: string): string</a></li>
</ul>
<ul class="simple nested-toc-section">encodeSym
<li><a class="reference" href="#encodeSym%2CBModule%2CPSym%2Cbool%2Cstring" title="encodeSym(m: BModule; s: PSym; makeUnique: bool = false; extra: string = &quot;&quot;): string">encodeSym(m: BModule; s: PSym; makeUnique: bool = false; extra: string = &quot;&quot;): string</a></li>
</ul>
<ul class="simple nested-toc-section">encodeType
<li><a class="reference" href="#encodeType%2CBModule%2CPType%2Cstring" title="encodeType(m: BModule; t: PType; staticLists: var string): string">encodeType(m: BModule; t: PType; staticLists: var string): string</a></li>
</ul>
<ul class="simple nested-toc-section">getPragmaStmt
<li><a class="reference" href="#getPragmaStmt%2CPNode%2CTSpecialWord" title="getPragmaStmt(n: PNode; w: TSpecialWord): PNode">getPragmaStmt(n: PNode; w: TSpecialWord): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">hashString
<li><a class="reference" href="#hashString%2CConfigRef%2Cstring" title="hashString(conf: ConfigRef; s: string): BiggestInt">hashString(conf: ConfigRef; s: string): BiggestInt</a></li>
</ul>
<ul class="simple nested-toc-section">makeSingleLineCString
<li><a class="reference" href="#makeSingleLineCString%2Cstring" title="makeSingleLineCString(s: string): string">makeSingleLineCString(s: string): string</a></li>
</ul>
<ul class="simple nested-toc-section">stmtsContainPragma
<li><a class="reference" href="#stmtsContainPragma%2CPNode%2CTSpecialWord" title="stmtsContainPragma(n: PNode; w: TSpecialWord): bool">stmtsContainPragma(n: PNode; w: TSpecialWord): bool</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">getUniqueType
<li><a class="reference" href="#getUniqueType.t%2CPType" title="getUniqueType(key: PType): PType">getUniqueType(key: PType): PType</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/ccgutils.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ccgutils.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></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="types.html">types</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="wordrecg.html">wordrecg</a>, <a class="reference external" href="platform.html">platform</a>, <a class="reference external" href="trees.html">trees</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="cgendata.html">cgendata</a>, <a class="reference external" href="mangleutils.html">mangleutils</a>, <a class="reference external" href="renderer.html">renderer</a>, <a class="reference external" href="modulegraphs.html">modulegraphs</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="ccgIntroducedPtr-procs-all">
<div id="ccgIntroducedPtr,ConfigRef,PSym,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#ccgIntroducedPtr%2CConfigRef%2CPSym%2CPType"><span class="Identifier">ccgIntroducedPtr</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">s</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">retType</span><span class="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ccgutils.nim#L79" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ccgutils.nim#L79" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="encodeName-procs-all">
<div id="encodeName,string">
<dt><pre><span class="Keyword">proc</span> <a href="#encodeName%2Cstring"><span class="Identifier">encodeName</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> <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/ccgutils.nim#L109" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ccgutils.nim#L109" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="encodeSym-procs-all">
<div id="encodeSym,BModule,PSym,bool,string">
<dt><pre><span class="Keyword">proc</span> <a href="#encodeSym%2CBModule%2CPSym%2Cbool%2Cstring"><span class="Identifier">encodeSym</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="cgendata.html#BModule"><span class="Identifier">BModule</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">makeUnique</span><span class="Other">:</span> <span class="Identifier">bool</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span> <span class="Identifier">extra</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span><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">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/ccgutils.nim#L144" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ccgutils.nim#L144" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="encodeType-procs-all">
<div id="encodeType,BModule,PType,string">
<dt><pre><span class="Keyword">proc</span> <a href="#encodeType%2CBModule%2CPType%2Cstring"><span class="Identifier">encodeType</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="cgendata.html#BModule"><span class="Identifier">BModule</span></a><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</span></a><span class="Other">;</span> <span class="Identifier">staticLists</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">string</span><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">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/ccgutils.nim#L151" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ccgutils.nim#L151" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getPragmaStmt-procs-all">
<div id="getPragmaStmt,PNode,TSpecialWord">
<dt><pre><span class="Keyword">proc</span> <a href="#getPragmaStmt%2CPNode%2CTSpecialWord"><span class="Identifier">getPragmaStmt</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">w</span><span class="Other">:</span> <a href="wordrecg.html#TSpecialWord"><span class="Identifier">TSpecialWord</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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/ccgutils.nim#L21" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ccgutils.nim#L21" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="hashString-procs-all">
<div id="hashString,ConfigRef,string">
<dt><pre><span class="Keyword">proc</span> <a href="#hashString%2CConfigRef%2Cstring"><span class="Identifier">hashString</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">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">BiggestInt</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/ccgutils.nim#L38" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ccgutils.nim#L38" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="makeSingleLineCString-procs-all">
<div id="makeSingleLineCString,string">
<dt><pre><span class="Keyword">proc</span> <a href="#makeSingleLineCString%2Cstring"><span class="Identifier">makeSingleLineCString</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><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/ccgutils.nim#L65" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ccgutils.nim#L65" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="stmtsContainPragma-procs-all">
<div id="stmtsContainPragma,PNode,TSpecialWord">
<dt><pre><span class="Keyword">proc</span> <a href="#stmtsContainPragma%2CPNode%2CTSpecialWord"><span class="Identifier">stmtsContainPragma</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">w</span><span class="Other">:</span> <a href="wordrecg.html#TSpecialWord"><span class="Identifier">TSpecialWord</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/ccgutils.nim#L35" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ccgutils.nim#L35" 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="getUniqueType-templates-all">
<div id="getUniqueType.t,PType">
<dt><pre><span class="Keyword">template</span> <a href="#getUniqueType.t%2CPType"><span class="Identifier">getUniqueType</span></a><span class="Other">(</span><span class="Identifier">key</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ccgutils.nim#L63" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ccgutils.nim#L63" 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: 2026-07-10 18:29:09 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

10
compiler/ccgutils.idx Normal file
View File

@@ -0,0 +1,10 @@
nimTitle ccgutils ccgutils.html module ccgutils 0
nim getPragmaStmt ccgutils.html#getPragmaStmt,PNode,TSpecialWord proc getPragmaStmt(n: PNode; w: TSpecialWord): PNode 21
nim stmtsContainPragma ccgutils.html#stmtsContainPragma,PNode,TSpecialWord proc stmtsContainPragma(n: PNode; w: TSpecialWord): bool 35
nim hashString ccgutils.html#hashString,ConfigRef,string proc hashString(conf: ConfigRef; s: string): BiggestInt 38
nim getUniqueType ccgutils.html#getUniqueType.t,PType template getUniqueType(key: PType): PType 63
nim makeSingleLineCString ccgutils.html#makeSingleLineCString,string proc makeSingleLineCString(s: string): string 65
nim ccgIntroducedPtr ccgutils.html#ccgIntroducedPtr,ConfigRef,PSym,PType proc ccgIntroducedPtr(conf: ConfigRef; s: PSym; retType: PType): bool 79
nim encodeName ccgutils.html#encodeName,string proc encodeName(name: string): string 109
nim encodeSym ccgutils.html#encodeSym,BModule,PSym,bool,string proc encodeSym(m: BModule; s: PSym; makeUnique: bool = false; extra: string = ""): string 144
nim encodeType ccgutils.html#encodeType,BModule,PType,string proc encodeType(m: BModule; t: PType; staticLists: var string): string 151

395
compiler/cgen.html Normal file
View File

@@ -0,0 +1,395 @@
<?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>cgen</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">cgen</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">cgenWriteModules
<li><a class="reference" href="#cgenWriteModules%2CRootRef%2CConfigRef" title="cgenWriteModules(backend: RootRef; config: ConfigRef)">cgenWriteModules(backend: RootRef; config: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">fillObjectFields
<li><a class="reference" href="#fillObjectFields%2CBModule%2CPType" title="fillObjectFields(m: BModule; typ: PType)">fillObjectFields(m: BModule; typ: PType)</a></li>
</ul>
<ul class="simple nested-toc-section">finalCodegenActions
<li><a class="reference" href="#finalCodegenActions%2CModuleGraph%2CBModule%2CPNode" title="finalCodegenActions(graph: ModuleGraph; m: BModule; n: PNode)">finalCodegenActions(graph: ModuleGraph; m: BModule; n: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">genProcLvl3
<li><a class="reference" href="#genProcLvl3%2CBModule%2CPSym" title="genProcLvl3(m: BModule; prc: PSym)">genProcLvl3(m: BModule; prc: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">genTopLevelStmt
<li><a class="reference" href="#genTopLevelStmt%2CBModule%2CPNode" title="genTopLevelStmt(m: BModule; n: PNode)">genTopLevelStmt(m: BModule; n: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">genTypeInfo
<li><a class="reference" href="#genTypeInfo%2CConfigRef%2CBModule%2CPType%2CTLineInfo" title="genTypeInfo(config: ConfigRef; m: BModule; t: PType; info: TLineInfo): Rope">genTypeInfo(config: ConfigRef; m: BModule; t: PType; info: TLineInfo): Rope</a></li>
</ul>
<ul class="simple nested-toc-section">getCFile
<li><a class="reference" href="#getCFile%2CBModule" title="getCFile(m: BModule): AbsoluteFile">getCFile(m: BModule): AbsoluteFile</a></li>
</ul>
<ul class="simple nested-toc-section">getSomeNameForModule
<li><a class="reference" href="#getSomeNameForModule%2CBModule" title="getSomeNameForModule(m: BModule): Rope">getSomeNameForModule(m: BModule): Rope</a></li>
</ul>
<ul class="simple nested-toc-section">multiFormat
<li><a class="reference" href="#multiFormat%2Cstring%2CstaticopenArray%5Bchar%5D%2CopenArray%5Bseq%5Bstring%5D%5D" title="multiFormat(frmt: var string; chars: static openArray[char];
args: openArray[seq[string]])">multiFormat(frmt: var string; chars: static openArray[char];
args: openArray[seq[string]])</a></li>
</ul>
<ul class="simple nested-toc-section">newModule
<li><a class="reference" href="#newModule%2CBModuleList%2CPSym%2CConfigRef%2CIdGenerator" title="newModule(g: BModuleList; module: PSym; conf: ConfigRef; idgen: IdGenerator): BModule">newModule(g: BModuleList; module: PSym; conf: ConfigRef; idgen: IdGenerator): BModule</a></li>
</ul>
<ul class="simple nested-toc-section">registerReusedModuleToMain
<li><a class="reference" href="#registerReusedModuleToMain%2CBModuleList%2CBModule%2Cbool%2Cbool" title="registerReusedModuleToMain(g: BModuleList; m: BModule;
initRequired, datInitRequired: bool)">registerReusedModuleToMain(g: BModuleList; m: BModule;
initRequired, datInitRequired: bool)</a></li>
</ul>
<ul class="simple nested-toc-section">requestProcDef
<li><a class="reference" href="#requestProcDef%2CBModule%2CPSym" title="requestProcDef(m: BModule; prc: PSym)">requestProcDef(m: BModule; prc: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">setupCgen
<li><a class="reference" href="#setupCgen%2CModuleGraph%2CPSym%2CIdGenerator" title="setupCgen(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext">setupCgen(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext</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">cgDeclFrmt
<li><a class="reference" href="#cgDeclFrmt.t%2CPSym" title="cgDeclFrmt(s: PSym): string">cgDeclFrmt(s: PSym): string</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/cgen.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgen.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">This module implements the C code generator.This include file contains the logic to produce constant string and seq literals. The code here is responsible that <tt class="docutils literal"><span class="pre">const x = [&quot;a&quot;, &quot;b&quot;]</span></tt> works without hidden runtime creation code. The price is that seqs and strings are not purely a library implementation.Generates traversal procs for the C backend.Code specialization instead of the old, incredibly slow 'genericReset' implementation.Thread var support for architectures that lack native support for thread local storage.</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="trees.html">trees</a>, <a class="reference external" href="platform.html">platform</a>, <a class="reference external" href="magicsys.html">magicsys</a>, <a class="reference external" href="extccomp.html">extccomp</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="nversion.html">nversion</a>, <a class="reference external" href="nimsets.html">nimsets</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="bitsets.html">bitsets</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="ccgutils.html">ccgutils</a>, <a class="reference external" href="ropes.html">ropes</a>, <a class="reference external" href="wordrecg.html">wordrecg</a>, <a class="reference external" href="treetab.html">treetab</a>, <a class="reference external" href="cgmeth.html">cgmeth</a>, <a class="reference external" href="rodutils.html">rodutils</a>, <a class="reference external" href="renderer.html">renderer</a>, <a class="reference external" href="cgendata.html">cgendata</a>, <a class="reference external" href="aliases.html">aliases</a>, <a class="reference external" href="lowerings.html">lowerings</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="pathutils.html">pathutils</a>, <a class="reference external" href="transf.html">transf</a>, <a class="reference external" href="injectdestructors.html">injectdestructors</a>, <a class="reference external" href="astmsgs.html">astmsgs</a>, <a class="reference external" href="modulepaths.html">modulepaths</a>, <a class="reference external" href="pushpoppragmas.html">pushpoppragmas</a>, <a class="reference external" href="mangleutils.html">mangleutils</a>, <a class="reference external" href="cbuilderbase.html">cbuilderbase</a>, <a class="reference external" href="modulegraphs.html">modulegraphs</a>, <a class="reference external" href="expanddefaults.html">expanddefaults</a>, <a class="reference external" href="ast2nif.html">ast2nif</a>, <a class="reference external" href="typekeys.html">typekeys</a>, <a class="reference external" href="cnif.html">cnif</a>, <a class="reference external" href="pipelineutils.html">pipelineutils</a>, <a class="reference external" href="spawn.html">spawn</a>, <a class="reference external" href="semparallel.html">semparallel</a>, <a class="reference external" href="sighashes.html">sighashes</a>, <a class="reference external" href="aliasanalysis.html">aliasanalysis</a>, <a class="reference external" href="parampatterns.html">parampatterns</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="cgenWriteModules-procs-all">
<div id="cgenWriteModules,RootRef,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#cgenWriteModules%2CRootRef%2CConfigRef"><span class="Identifier">cgenWriteModules</span></a><span class="Other">(</span><span class="Identifier">backend</span><span class="Other">:</span> <span class="Identifier">RootRef</span><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><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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</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/cgen.nim#L2953" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgen.nim#L2953" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="fillObjectFields-procs-all">
<div id="fillObjectFields,BModule,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#fillObjectFields%2CBModule%2CPType"><span class="Identifier">fillObjectFields</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="cgendata.html#BModule"><span class="Identifier">BModule</span></a><span class="Other">;</span> <span class="Identifier">typ</span><span class="Other">:</span> <a href="astdef.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">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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/ccgtypes.nim#L853" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ccgtypes.nim#L853" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="finalCodegenActions-procs-all">
<div id="finalCodegenActions,ModuleGraph,BModule,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#finalCodegenActions%2CModuleGraph%2CBModule%2CPNode"><span class="Identifier">finalCodegenActions</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">m</span><span class="Other">:</span> <a href="cgendata.html#BModule"><span class="Identifier">BModule</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</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>
Also called from IC.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgen.nim#L2869" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgen.nim#L2869" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="genProcLvl3-procs-all">
<div id="genProcLvl3,BModule,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#genProcLvl3%2CBModule%2CPSym"><span class="Identifier">genProcLvl3</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="cgendata.html#BModule"><span class="Identifier">BModule</span></a><span class="Other">;</span> <span class="Identifier">prc</span><span class="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</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/cgen.nim#L1440" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgen.nim#L1440" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="genTopLevelStmt-procs-all">
<div id="genTopLevelStmt,BModule,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#genTopLevelStmt%2CBModule%2CPNode"><span class="Identifier">genTopLevelStmt</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="cgendata.html#BModule"><span class="Identifier">BModule</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</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">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="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</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>
Also called from <tt class="docutils literal"><span class="pre"><span class="Identifier">ic</span><span class="Operator">/</span><span class="Identifier">cbackend</span><span class="Operator">.</span><span class="Identifier">nim</span></span></tt>.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgen.nim#L2761" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgen.nim#L2761" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="genTypeInfo-procs-all">
<div id="genTypeInfo,ConfigRef,BModule,PType,TLineInfo">
<dt><pre><span class="Keyword">proc</span> <a href="#genTypeInfo%2CConfigRef%2CBModule%2CPType%2CTLineInfo"><span class="Identifier">genTypeInfo</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="Identifier">m</span><span class="Other">:</span> <a href="cgendata.html#BModule"><span class="Identifier">BModule</span></a><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</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="Other">:</span> <a href="ropes.html#Rope"><span class="Identifier">Rope</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ccgtypes.nim#L2262" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ccgtypes.nim#L2262" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getCFile-procs-all">
<div id="getCFile,BModule">
<dt><pre><span class="Keyword">proc</span> <a href="#getCFile%2CBModule"><span class="Identifier">getCFile</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="cgendata.html#BModule"><span class="Identifier">BModule</span></a><span class="Other">)</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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="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">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</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/cgen.nim#L68" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgen.nim#L68" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getSomeNameForModule-procs-all">
<div id="getSomeNameForModule,BModule">
<dt><pre><span class="Keyword">proc</span> <a href="#getSomeNameForModule%2CBModule"><span class="Identifier">getSomeNameForModule</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="cgendata.html#BModule"><span class="Identifier">BModule</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ropes.html#Rope"><span class="Identifier">Rope</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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 a mangled module name.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgen.nim#L1902" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgen.nim#L1902" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="multiFormat-procs-all">
<div id="multiFormat,string,staticopenArray[char],openArray[seq[string]]">
<dt><pre><span class="Keyword">proc</span> <a href="#multiFormat%2Cstring%2CstaticopenArray%5Bchar%5D%2CopenArray%5Bseq%5Bstring%5D%5D"><span class="Identifier">multiFormat</span></a><span class="Other">(</span><span class="Identifier">frmt</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">chars</span><span class="Other">:</span> <span class="Keyword">static</span> <span class="Identifier">openArray</span><span class="Other">[</span><span class="Identifier">char</span><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">openArray</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span><span class="Other">)</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ccgtypes.nim#L549" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ccgtypes.nim#L549" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="newModule-procs-all">
<div id="newModule,BModuleList,PSym,ConfigRef,IdGenerator">
<dt><pre><span class="Keyword">proc</span> <a href="#newModule%2CBModuleList%2CPSym%2CConfigRef%2CIdGenerator"><span class="Identifier">newModule</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="cgendata.html#BModuleList"><span class="Identifier">BModuleList</span></a><span class="Other">;</span> <span class="Identifier">module</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</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">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="cgendata.html#BModule"><span class="Identifier">BModule</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/cgen.nim#L67" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgen.nim#L67" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="registerReusedModuleToMain-procs-all">
<div id="registerReusedModuleToMain,BModuleList,BModule,bool,bool">
<dt><pre><span class="Keyword">proc</span> <a href="#registerReusedModuleToMain%2CBModuleList%2CBModule%2Cbool%2Cbool"><span class="Identifier">registerReusedModuleToMain</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="cgendata.html#BModuleList"><span class="Identifier">BModuleList</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <a href="cgendata.html#BModule"><span class="Identifier">BModule</span></a><span class="Other">;</span>
<span class="Identifier">initRequired</span><span class="Other">,</span> <span class="Identifier">datInitRequired</span><span class="Other">:</span> <span class="Identifier">bool</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="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>
<tt class="docutils literal"><span class="pre"><span class="Identifier">registerModuleToMain</span></span></tt> for a module whose cached translation unit is reused: the init/datInit presence comes from the artifact's meta head instead of the (never generated) sections. Mirrors the non-hcr path of <tt class="docutils literal"><span class="pre"><span class="Identifier">registerModuleToMain</span></span></tt> — reuse is disabled when hcr is on.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgen.nim#L2289" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgen.nim#L2289" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="requestProcDef-procs-all">
<div id="requestProcDef,BModule,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#requestProcDef%2CBModule%2CPSym"><span class="Identifier">requestProcDef</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="cgendata.html#BModule"><span class="Identifier">BModule</span></a><span class="Other">;</span> <span class="Identifier">prc</span><span class="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</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">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="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</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>
Public demand entry: request <tt class="docutils literal"><span class="pre"><span class="Identifier">prc</span></span></tt>'s definition; it is routed to the module that owns it and generated once, exactly as if some generated code had referenced it.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgen.nim#L1827" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgen.nim#L1827" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="setupCgen-procs-all">
<div id="setupCgen,ModuleGraph,PSym,IdGenerator">
<dt><pre><span class="Keyword">proc</span> <a href="#setupCgen%2CModuleGraph%2CPSym%2CIdGenerator"><span class="Identifier">setupCgen</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">module</span><span class="Other">:</span> <a href="astdef.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><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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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="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">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</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/cgen.nim#L2672" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgen.nim#L2672" 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="cgDeclFrmt-templates-all">
<div id="cgDeclFrmt.t,PSym">
<dt><pre><span class="Keyword">template</span> <a href="#cgDeclFrmt.t%2CPSym"><span class="Identifier">cgDeclFrmt</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cbuilderdecls.nim#L437" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cbuilderdecls.nim#L437" 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: 2026-07-10 18:29:12 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

15
compiler/cgen.idx Normal file
View File

@@ -0,0 +1,15 @@
nimTitle cgen cgen.html module cgen 0
nim newModule cgen.html#newModule,BModuleList,PSym,ConfigRef,IdGenerator proc newModule(g: BModuleList; module: PSym; conf: ConfigRef; idgen: IdGenerator): BModule 67
nim getCFile cgen.html#getCFile,BModule proc getCFile(m: BModule): AbsoluteFile 68
nim cgDeclFrmt cgen.html#cgDeclFrmt.t,PSym template cgDeclFrmt(s: PSym): string 437
nim multiFormat cgen.html#multiFormat,string,staticopenArray[char],openArray[seq[string]] proc multiFormat(frmt: var string; chars: static openArray[char];\n args: openArray[seq[string]]) 549
nim fillObjectFields cgen.html#fillObjectFields,BModule,PType proc fillObjectFields(m: BModule; typ: PType) 853
nim genTypeInfo cgen.html#genTypeInfo,ConfigRef,BModule,PType,TLineInfo proc genTypeInfo(config: ConfigRef; m: BModule; t: PType; info: TLineInfo): Rope 2262
nim genProcLvl3 cgen.html#genProcLvl3,BModule,PSym proc genProcLvl3(m: BModule; prc: PSym) 1440
nim requestProcDef cgen.html#requestProcDef,BModule,PSym proc requestProcDef(m: BModule; prc: PSym) 1827
nim getSomeNameForModule cgen.html#getSomeNameForModule,BModule proc getSomeNameForModule(m: BModule): Rope 1902
nim registerReusedModuleToMain cgen.html#registerReusedModuleToMain,BModuleList,BModule,bool,bool proc registerReusedModuleToMain(g: BModuleList; m: BModule;\n initRequired, datInitRequired: bool) 2289
nim setupCgen cgen.html#setupCgen,ModuleGraph,PSym,IdGenerator proc setupCgen(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext 2672
nim genTopLevelStmt cgen.html#genTopLevelStmt,BModule,PNode proc genTopLevelStmt(m: BModule; n: PNode) 2761
nim finalCodegenActions cgen.html#finalCodegenActions,ModuleGraph,BModule,PNode proc finalCodegenActions(graph: ModuleGraph; m: BModule; n: PNode) 2869
nim cgenWriteModules cgen.html#cgenWriteModules,RootRef,ConfigRef proc cgenWriteModules(backend: RootRef; config: ConfigRef) 2953

569
compiler/cgendata.html Normal file
View File

@@ -0,0 +1,569 @@
<?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>cgendata</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">cgendata</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="#BModule" title="BModule = ref TCGen">BModule</a></li>
<li><a class="reference" href="#BModuleList" title="BModuleList = ref object of RootObj
mainModProcs*, mainModInit*, otherModsInit*, mainDatInit*: Builder
mapping*: Rope
mods*: seq[BModule]
modulesClosed*: seq[BModule]
forwardedProcs*: seq[PSym]
generatedHeader*: BModule
typeInfoMarker*: TypeCacheWithOwner
typeInfoMarkerV2*: TypeCacheWithOwner
config*: ConfigRef
graph*: ModuleGraph
strVersion*, seqVersion*: int
nimtv*: Builder
nimtvDeps*: seq[PType]
nimtvDeclared*: IntSet
mangledPrcs*: HashSet[string]">BModuleList</a></li>
<li><a class="reference" href="#BProc" title="BProc = ref TCProc">BProc</a></li>
<li><a class="reference" href="#CodegenFlag" title="CodegenFlag = enum
preventStackTrace, usesThreadVars, frameDeclared, isHeaderFile,
includesStringh, objHasKidsValid, useAliveDataFromDce">CodegenFlag</a></li>
<li><a class="reference" href="#TBlock" title="TBlock = object
id*: int
label*: Rope
sections*: TCProcSections
isLoop*: bool
nestedTryStmts*: int16
nestedExceptStmts*: int16
frameLen*: int16">TBlock</a></li>
<li><a class="reference" href="#TCFileSection" title="TCFileSection = enum
cfsHeaders, cfsFrameDefines, cfsForwardTypes, cfsTypes, cfsSeqTypes,
cfsTypeInfo, cfsProcHeaders, cfsStrData, cfsData, cfsVars, cfsProcs,
cfsInitProc, cfsDatInitProc, cfsTypeInit1, cfsTypeInit3, cfsDynLibInit">TCFileSection</a></li>
<li><a class="reference" href="#TCFileSections" title="TCFileSections = array[TCFileSection, Builder]">TCFileSections</a></li>
<li><a class="reference" href="#TCProcFlag" title="TCProcFlag = enum
beforeRetNeeded, threadVarAccessed, hasCurFramePointer, noSafePoints,
nimErrorFlagAccessed, nimErrorFlagDeclared, nimErrorFlagDisabled">TCProcFlag</a></li>
<li><a class="reference" href="#TCProcSection" title="TCProcSection = enum
cpsLocals, cpsInit, cpsStmts">TCProcSection</a></li>
<li><a class="reference" href="#TCProcSections" title="TCProcSections = array[TCProcSection, Builder]">TCProcSections</a></li>
<li><a class="reference" href="#TCTypeKind" title="TCTypeKind = enum
ctVoid, ctChar, ctBool, ctInt, ctInt8, ctInt16, ctInt32, ctInt64, ctFloat,
ctFloat32, ctFloat64, ctFloat128, ctUInt, ctUInt8, ctUInt16, ctUInt32,
ctUInt64, ctArray, ctPtrToArray, ctStruct, ctPtr, ctNimStr, ctNimSeq, ctProc,
ctCString">TCTypeKind</a></li>
<li><a class="reference" href="#TLabel" title="TLabel = Rope">TLabel</a></li>
<li><a class="reference" href="#TTypeSeq" title="TTypeSeq = seq[PType]">TTypeSeq</a></li>
<li><a class="reference" href="#TypeCache" title="TypeCache = Table[SigHash, Rope]">TypeCache</a></li>
<li><a class="reference" href="#TypeCacheWithOwner" title="TypeCacheWithOwner = Table[SigHash, tuple[str: Rope, owner: int32]]">TypeCacheWithOwner</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">delayedCodegen
<li><a class="reference" href="#delayedCodegen%2CBModule" title="delayedCodegen(m: BModule): bool">delayedCodegen(m: BModule): bool</a></li>
</ul>
<ul class="simple nested-toc-section">includeHeader
<li><a class="reference" href="#includeHeader%2CBModule%2Cstring" title="includeHeader(this: BModule; header: string)">includeHeader(this: BModule; header: string)</a></li>
</ul>
<ul class="simple nested-toc-section">initBlock
<li><a class="reference" href="#initBlock" title="initBlock(): TBlock">initBlock(): TBlock</a></li>
</ul>
<ul class="simple nested-toc-section">newModuleList
<li><a class="reference" href="#newModuleList%2CModuleGraph" title="newModuleList(g: ModuleGraph): BModuleList">newModuleList(g: ModuleGraph): BModuleList</a></li>
</ul>
<ul class="simple nested-toc-section">newProc
<li><a class="reference" href="#newProc%2CPSym%2CBModule" title="newProc(prc: PSym; module: BModule): BProc">newProc(prc: PSym; module: BModule): BProc</a></li>
</ul>
<ul class="simple nested-toc-section">procSec
<li><a class="reference" href="#procSec%2CBProc%2CTCProcSection" title="procSec(p: BProc; s: TCProcSection): var Builder">procSec(p: BProc; s: TCProcSection): var Builder</a></li>
</ul>
<ul class="simple nested-toc-section">s
<li><a class="reference" href="#s%2CBProc%2CTCProcSection" title="s(p: BProc; s: TCProcSection): var Builder">s(p: BProc; s: TCProcSection): var Builder</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">cgenModules
<li><a class="reference" href="#cgenModules.i%2CBModuleList" title="cgenModules(g: BModuleList): BModule">cgenModules(g: BModuleList): BModule</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">config
<li><a class="reference" href="#config.t%2CBModule" title="config(m: BModule): ConfigRef">config(m: BModule): ConfigRef</a></li>
<li><a class="reference" href="#config.t%2CBProc" title="config(p: BProc): ConfigRef">config(p: BProc): ConfigRef</a></li>
</ul>
<ul class="simple nested-toc-section">vccAndC
<li><a class="reference" href="#vccAndC.t%2CBProc" title="vccAndC(p: BProc): bool">vccAndC(p: BProc): bool</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/cgendata.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">This module contains the data structures for the C code generation phase.</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="ropes.html">ropes</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="pathutils.html">pathutils</a>, <a class="reference external" href="modulegraphs.html">modulegraphs</a>, <a class="reference external" href="cbuilderbase.html">cbuilderbase</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="BModule">
<dt><pre><a href="#BModule"><span class="Identifier">BModule</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Identifier">TCGen</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L52" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L52" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="BModuleList">
<dt><pre><a href="#BModuleList"><span class="Identifier">BModuleList</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <span class="Identifier">RootObj</span>
<span class="Identifier">mainModProcs</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">mainModInit</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">otherModsInit</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">mainDatInit</span><span class="Operator">*</span><span class="Other">:</span> <a href="cbuilderbase.html#Builder"><span class="Identifier">Builder</span></a>
<span class="Identifier">mapping</span><span class="Operator">*</span><span class="Other">:</span> <a href="ropes.html#Rope"><span class="Identifier">Rope</span></a>
<span class="Identifier">mods</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="#BModule"><span class="Identifier">BModule</span></a><span class="Other">]</span>
<span class="Identifier">modulesClosed</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="#BModule"><span class="Identifier">BModule</span></a><span class="Other">]</span>
<span class="Identifier">forwardedProcs</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">]</span>
<span class="Identifier">generatedHeader</span><span class="Operator">*</span><span class="Other">:</span> <a href="#BModule"><span class="Identifier">BModule</span></a>
<span class="Identifier">typeInfoMarker</span><span class="Operator">*</span><span class="Other">:</span> <a href="#TypeCacheWithOwner"><span class="Identifier">TypeCacheWithOwner</span></a>
<span class="Identifier">typeInfoMarkerV2</span><span class="Operator">*</span><span class="Other">:</span> <a href="#TypeCacheWithOwner"><span class="Identifier">TypeCacheWithOwner</span></a>
<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">graph</span><span class="Operator">*</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a>
<span class="Identifier">strVersion</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">seqVersion</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span>
<span class="Identifier">nimtv</span><span class="Operator">*</span><span class="Other">:</span> <a href="cbuilderbase.html#Builder"><span class="Identifier">Builder</span></a>
<span class="Identifier">nimtvDeps</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="astdef.html#PType"><span class="Identifier">PType</span></a><span class="Other">]</span>
<span class="Identifier">nimtvDeclared</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">IntSet</span>
<span class="Identifier">mangledPrcs</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">HashSet</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L120" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L120" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="BProc">
<dt><pre><a href="#BProc"><span class="Identifier">BProc</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Identifier">TCProc</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L53" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L53" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="CodegenFlag">
<dt><pre><a href="#CodegenFlag"><span class="Identifier">CodegenFlag</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">preventStackTrace</span><span class="Other">,</span> <span class="Identifier">usesThreadVars</span><span class="Other">,</span> <span class="Identifier">frameDeclared</span><span class="Other">,</span> <span class="Identifier">isHeaderFile</span><span class="Other">,</span>
<span class="Identifier">includesStringh</span><span class="Other">,</span> <span class="Identifier">objHasKidsValid</span><span class="Other">,</span> <span class="Identifier">useAliveDataFromDce</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L109" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L109" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TBlock">
<dt><pre><a href="#TBlock"><span class="Identifier">TBlock</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">id</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span>
<span class="Identifier">label</span><span class="Operator">*</span><span class="Other">:</span> <a href="ropes.html#Rope"><span class="Identifier">Rope</span></a>
<span class="Identifier">sections</span><span class="Operator">*</span><span class="Other">:</span> <a href="#TCProcSections"><span class="Identifier">TCProcSections</span></a>
<span class="Identifier">isLoop</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">nestedTryStmts</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int16</span>
<span class="Identifier">nestedExceptStmts</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int16</span>
<span class="Identifier">frameLen</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int16</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L54" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L54" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TCFileSection">
<dt><pre><a href="#TCFileSection"><span class="Identifier">TCFileSection</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">cfsHeaders</span><span class="Other">,</span> <span class="Identifier">cfsFrameDefines</span><span class="Other">,</span> <span class="Identifier">cfsForwardTypes</span><span class="Other">,</span> <span class="Identifier">cfsTypes</span><span class="Other">,</span> <span class="Identifier">cfsSeqTypes</span><span class="Other">,</span>
<span class="Identifier">cfsTypeInfo</span><span class="Other">,</span> <span class="Identifier">cfsProcHeaders</span><span class="Other">,</span> <span class="Identifier">cfsStrData</span><span class="Other">,</span> <span class="Identifier">cfsData</span><span class="Other">,</span> <span class="Identifier">cfsVars</span><span class="Other">,</span> <span class="Identifier">cfsProcs</span><span class="Other">,</span>
<span class="Identifier">cfsInitProc</span><span class="Other">,</span> <span class="Identifier">cfsDatInitProc</span><span class="Other">,</span> <span class="Identifier">cfsTypeInit1</span><span class="Other">,</span> <span class="Identifier">cfsTypeInit3</span><span class="Other">,</span> <span class="Identifier">cfsDynLibInit</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L20" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L20" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TCFileSections">
<dt><pre><a href="#TCFileSections"><span class="Identifier">TCFileSections</span></a> <span class="Other">=</span> <span class="Identifier">array</span><span class="Other">[</span><span class="Identifier">TCFileSection</span><span class="Other">,</span> <a href="cbuilderbase.html#Builder"><span class="Identifier">Builder</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L46" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L46" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TCProcFlag">
<dt><pre><a href="#TCProcFlag"><span class="Identifier">TCProcFlag</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">beforeRetNeeded</span><span class="Other">,</span> <span class="Identifier">threadVarAccessed</span><span class="Other">,</span> <span class="Identifier">hasCurFramePointer</span><span class="Other">,</span> <span class="Identifier">noSafePoints</span><span class="Other">,</span>
<span class="Identifier">nimErrorFlagAccessed</span><span class="Other">,</span> <span class="Identifier">nimErrorFlagDeclared</span><span class="Other">,</span> <span class="Identifier">nimErrorFlagDisabled</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L64" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L64" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TCProcSection">
<dt><pre><a href="#TCProcSection"><span class="Identifier">TCProcSection</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">cpsLocals</span><span class="Other">,</span> <span class="Identifier">cpsInit</span><span class="Other">,</span> <span class="Identifier">cpsStmts</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L47" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L47" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TCProcSections">
<dt><pre><a href="#TCProcSections"><span class="Identifier">TCProcSections</span></a> <span class="Other">=</span> <span class="Identifier">array</span><span class="Other">[</span><span class="Identifier">TCProcSection</span><span class="Other">,</span> <a href="cbuilderbase.html#Builder"><span class="Identifier">Builder</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L51" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L51" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TCTypeKind">
<dt><pre><a href="#TCTypeKind"><span class="Identifier">TCTypeKind</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">ctVoid</span><span class="Other">,</span> <span class="Identifier">ctChar</span><span class="Other">,</span> <span class="Identifier">ctBool</span><span class="Other">,</span> <span class="Identifier">ctInt</span><span class="Other">,</span> <span class="Identifier">ctInt8</span><span class="Other">,</span> <span class="Identifier">ctInt16</span><span class="Other">,</span> <span class="Identifier">ctInt32</span><span class="Other">,</span> <span class="Identifier">ctInt64</span><span class="Other">,</span> <span class="Identifier">ctFloat</span><span class="Other">,</span>
<span class="Identifier">ctFloat32</span><span class="Other">,</span> <span class="Identifier">ctFloat64</span><span class="Other">,</span> <span class="Identifier">ctFloat128</span><span class="Other">,</span> <span class="Identifier">ctUInt</span><span class="Other">,</span> <span class="Identifier">ctUInt8</span><span class="Other">,</span> <span class="Identifier">ctUInt16</span><span class="Other">,</span> <span class="Identifier">ctUInt32</span><span class="Other">,</span>
<span class="Identifier">ctUInt64</span><span class="Other">,</span> <span class="Identifier">ctArray</span><span class="Other">,</span> <span class="Identifier">ctPtrToArray</span><span class="Other">,</span> <span class="Identifier">ctStruct</span><span class="Other">,</span> <span class="Identifier">ctPtr</span><span class="Other">,</span> <span class="Identifier">ctNimStr</span><span class="Other">,</span> <span class="Identifier">ctNimSeq</span><span class="Other">,</span> <span class="Identifier">ctProc</span><span class="Other">,</span>
<span class="Identifier">ctCString</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L39" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L39" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TLabel">
<dt><pre><a href="#TLabel"><span class="Identifier">TLabel</span></a> <span class="Other">=</span> <a href="ropes.html#Rope"><span class="Identifier">Rope</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L19" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L19" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TTypeSeq">
<dt><pre><a href="#TTypeSeq"><span class="Identifier">TTypeSeq</span></a> <span class="Other">=</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="astdef.html#PType"><span class="Identifier">PType</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L105" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L105" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TypeCache">
<dt><pre><a href="#TypeCache"><span class="Identifier">TypeCache</span></a> <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="ropes.html#Rope"><span class="Identifier">Rope</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L106" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L106" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TypeCacheWithOwner">
<dt><pre><a href="#TypeCacheWithOwner"><span class="Identifier">TypeCacheWithOwner</span></a> <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> <span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">str</span><span class="Other">:</span> <a href="ropes.html#Rope"><span class="Identifier">Rope</span></a><span class="Other">,</span> <span class="Identifier">owner</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">]</span><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L107" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L107" 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="delayedCodegen-procs-all">
<div id="delayedCodegen,BModule">
<dt><pre><span class="Keyword">proc</span> <a href="#delayedCodegen%2CBModule"><span class="Identifier">delayedCodegen</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="#BModule"><span class="Identifier">BModule</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/cgendata.nim#L202" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L202" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="includeHeader-procs-all">
<div id="includeHeader,BModule,string">
<dt><pre><span class="Keyword">proc</span> <a href="#includeHeader%2CBModule%2Cstring"><span class="Identifier">includeHeader</span></a><span class="Other">(</span><span class="Identifier">this</span><span class="Other">:</span> <a href="#BModule"><span class="Identifier">BModule</span></a><span class="Other">;</span> <span class="Identifier">header</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/cgendata.nim#L205" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L205" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="initBlock-procs-all">
<div id="initBlock">
<dt><pre><span class="Keyword">proc</span> <a href="#initBlock"><span class="Identifier">initBlock</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="#TBlock"><span class="Identifier">TBlock</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/cgendata.nim#L217" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L217" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="newModuleList-procs-all">
<div id="newModuleList,ModuleGraph">
<dt><pre><span class="Keyword">proc</span> <a href="#newModuleList%2CModuleGraph"><span class="Identifier">newModuleList</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="#BModuleList"><span class="Identifier">BModuleList</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/cgendata.nim#L235" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L235" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="newProc-procs-all">
<div id="newProc,PSym,BModule">
<dt><pre><span class="Keyword">proc</span> <a href="#newProc%2CPSym%2CBModule"><span class="Identifier">newProc</span></a><span class="Other">(</span><span class="Identifier">prc</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">module</span><span class="Other">:</span> <a href="#BModule"><span class="Identifier">BModule</span></a><span class="Other">)</span><span class="Other">:</span> <a href="#BProc"><span class="Identifier">BProc</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/cgendata.nim#L222" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L222" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="procSec-procs-all">
<div id="procSec,BProc,TCProcSection">
<dt><pre><span class="Keyword">proc</span> <a href="#procSec%2CBProc%2CTCProcSection"><span class="Identifier">procSec</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <a href="#BProc"><span class="Identifier">BProc</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="#TCProcSection"><span class="Identifier">TCProcSection</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="cbuilderbase.html#Builder"><span class="Identifier">Builder</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="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/cgendata.nim#L213" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L213" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="s-procs-all">
<div id="s,BProc,TCProcSection">
<dt><pre><span class="Keyword">proc</span> <a href="#s%2CBProc%2CTCProcSection"><span class="Identifier">s</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <a href="#BProc"><span class="Identifier">BProc</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="#TCProcSection"><span class="Identifier">TCProcSection</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="cbuilderbase.html#Builder"><span class="Identifier">Builder</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="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/cgendata.nim#L209" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L209" 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="cgenModules-iterators-all">
<div id="cgenModules.i,BModuleList">
<dt><pre><span class="Keyword">iterator</span> <a href="#cgenModules.i%2CBModuleList"><span class="Identifier">cgenModules</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="#BModuleList"><span class="Identifier">BModuleList</span></a><span class="Other">)</span><span class="Other">:</span> <a href="#BModule"><span class="Identifier">BModule</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/cgendata.nim#L239" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L239" 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="config-templates-all">
<div id="config.t,BModule">
<dt><pre><span class="Keyword">template</span> <a href="#config.t%2CBModule"><span class="Identifier">config</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="#BModule"><span class="Identifier">BModule</span></a><span class="Other">)</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L198" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L198" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="config.t,BProc">
<dt><pre><span class="Keyword">template</span> <a href="#config.t%2CBProc"><span class="Identifier">config</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <a href="#BProc"><span class="Identifier">BProc</span></a><span class="Other">)</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L199" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L199" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="vccAndC-templates-all">
<div id="vccAndC.t,BProc">
<dt><pre><span class="Keyword">template</span> <a href="#vccAndC.t%2CBProc"><span class="Identifier">vccAndC</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <a href="#BProc"><span class="Identifier">BProc</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgendata.nim#L200" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgendata.nim#L200" 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: 2026-07-10 18:29:09 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

86
compiler/cgendata.idx Normal file
View File

@@ -0,0 +1,86 @@
nimTitle cgendata cgendata.html module cgendata 0
nim TLabel cgendata.html#TLabel type TLabel 19
nim cfsHeaders cgendata.html#cfsHeaders TCFileSection.cfsHeaders 20
nim cfsFrameDefines cgendata.html#cfsFrameDefines TCFileSection.cfsFrameDefines 20
nim cfsForwardTypes cgendata.html#cfsForwardTypes TCFileSection.cfsForwardTypes 20
nim cfsTypes cgendata.html#cfsTypes TCFileSection.cfsTypes 20
nim cfsSeqTypes cgendata.html#cfsSeqTypes TCFileSection.cfsSeqTypes 20
nim cfsTypeInfo cgendata.html#cfsTypeInfo TCFileSection.cfsTypeInfo 20
nim cfsProcHeaders cgendata.html#cfsProcHeaders TCFileSection.cfsProcHeaders 20
nim cfsStrData cgendata.html#cfsStrData TCFileSection.cfsStrData 20
nim cfsData cgendata.html#cfsData TCFileSection.cfsData 20
nim cfsVars cgendata.html#cfsVars TCFileSection.cfsVars 20
nim cfsProcs cgendata.html#cfsProcs TCFileSection.cfsProcs 20
nim cfsInitProc cgendata.html#cfsInitProc TCFileSection.cfsInitProc 20
nim cfsDatInitProc cgendata.html#cfsDatInitProc TCFileSection.cfsDatInitProc 20
nim cfsTypeInit1 cgendata.html#cfsTypeInit1 TCFileSection.cfsTypeInit1 20
nim cfsTypeInit3 cgendata.html#cfsTypeInit3 TCFileSection.cfsTypeInit3 20
nim cfsDynLibInit cgendata.html#cfsDynLibInit TCFileSection.cfsDynLibInit 20
nim TCFileSection cgendata.html#TCFileSection enum TCFileSection 20
nim ctVoid cgendata.html#ctVoid TCTypeKind.ctVoid 39
nim ctChar cgendata.html#ctChar TCTypeKind.ctChar 39
nim ctBool cgendata.html#ctBool TCTypeKind.ctBool 39
nim ctInt cgendata.html#ctInt TCTypeKind.ctInt 39
nim ctInt8 cgendata.html#ctInt8 TCTypeKind.ctInt8 39
nim ctInt16 cgendata.html#ctInt16 TCTypeKind.ctInt16 39
nim ctInt32 cgendata.html#ctInt32 TCTypeKind.ctInt32 39
nim ctInt64 cgendata.html#ctInt64 TCTypeKind.ctInt64 39
nim ctFloat cgendata.html#ctFloat TCTypeKind.ctFloat 39
nim ctFloat32 cgendata.html#ctFloat32 TCTypeKind.ctFloat32 39
nim ctFloat64 cgendata.html#ctFloat64 TCTypeKind.ctFloat64 39
nim ctFloat128 cgendata.html#ctFloat128 TCTypeKind.ctFloat128 39
nim ctUInt cgendata.html#ctUInt TCTypeKind.ctUInt 39
nim ctUInt8 cgendata.html#ctUInt8 TCTypeKind.ctUInt8 39
nim ctUInt16 cgendata.html#ctUInt16 TCTypeKind.ctUInt16 39
nim ctUInt32 cgendata.html#ctUInt32 TCTypeKind.ctUInt32 39
nim ctUInt64 cgendata.html#ctUInt64 TCTypeKind.ctUInt64 39
nim ctArray cgendata.html#ctArray TCTypeKind.ctArray 39
nim ctPtrToArray cgendata.html#ctPtrToArray TCTypeKind.ctPtrToArray 39
nim ctStruct cgendata.html#ctStruct TCTypeKind.ctStruct 39
nim ctPtr cgendata.html#ctPtr TCTypeKind.ctPtr 39
nim ctNimStr cgendata.html#ctNimStr TCTypeKind.ctNimStr 39
nim ctNimSeq cgendata.html#ctNimSeq TCTypeKind.ctNimSeq 39
nim ctProc cgendata.html#ctProc TCTypeKind.ctProc 39
nim ctCString cgendata.html#ctCString TCTypeKind.ctCString 39
nim TCTypeKind cgendata.html#TCTypeKind enum TCTypeKind 39
nim TCFileSections cgendata.html#TCFileSections type TCFileSections 46
nim cpsLocals cgendata.html#cpsLocals TCProcSection.cpsLocals 47
nim cpsInit cgendata.html#cpsInit TCProcSection.cpsInit 47
nim cpsStmts cgendata.html#cpsStmts TCProcSection.cpsStmts 47
nim TCProcSection cgendata.html#TCProcSection enum TCProcSection 47
nim TCProcSections cgendata.html#TCProcSections type TCProcSections 51
nim BModule cgendata.html#BModule type BModule 52
nim BProc cgendata.html#BProc type BProc 53
nim TBlock cgendata.html#TBlock object TBlock 54
nim beforeRetNeeded cgendata.html#beforeRetNeeded TCProcFlag.beforeRetNeeded 64
nim threadVarAccessed cgendata.html#threadVarAccessed TCProcFlag.threadVarAccessed 64
nim hasCurFramePointer cgendata.html#hasCurFramePointer TCProcFlag.hasCurFramePointer 64
nim noSafePoints cgendata.html#noSafePoints TCProcFlag.noSafePoints 64
nim nimErrorFlagAccessed cgendata.html#nimErrorFlagAccessed TCProcFlag.nimErrorFlagAccessed 64
nim nimErrorFlagDeclared cgendata.html#nimErrorFlagDeclared TCProcFlag.nimErrorFlagDeclared 64
nim nimErrorFlagDisabled cgendata.html#nimErrorFlagDisabled TCProcFlag.nimErrorFlagDisabled 64
nim TCProcFlag cgendata.html#TCProcFlag enum TCProcFlag 64
nim TTypeSeq cgendata.html#TTypeSeq type TTypeSeq 105
nim TypeCache cgendata.html#TypeCache type TypeCache 106
nim TypeCacheWithOwner cgendata.html#TypeCacheWithOwner type TypeCacheWithOwner 107
nim preventStackTrace cgendata.html#preventStackTrace CodegenFlag.preventStackTrace 109
nim usesThreadVars cgendata.html#usesThreadVars CodegenFlag.usesThreadVars 109
nim frameDeclared cgendata.html#frameDeclared CodegenFlag.frameDeclared 109
nim isHeaderFile cgendata.html#isHeaderFile CodegenFlag.isHeaderFile 109
nim includesStringh cgendata.html#includesStringh CodegenFlag.includesStringh 109
nim objHasKidsValid cgendata.html#objHasKidsValid CodegenFlag.objHasKidsValid 109
nim useAliveDataFromDce cgendata.html#useAliveDataFromDce CodegenFlag.useAliveDataFromDce 109
nim CodegenFlag cgendata.html#CodegenFlag enum CodegenFlag 109
nim BModuleList cgendata.html#BModuleList type BModuleList 120
nim config cgendata.html#config.t,BModule template config(m: BModule): ConfigRef 198
nim config cgendata.html#config.t,BProc template config(p: BProc): ConfigRef 199
nim vccAndC cgendata.html#vccAndC.t,BProc template vccAndC(p: BProc): bool 200
nim delayedCodegen cgendata.html#delayedCodegen,BModule proc delayedCodegen(m: BModule): bool 202
nim includeHeader cgendata.html#includeHeader,BModule,string proc includeHeader(this: BModule; header: string) 205
nim s cgendata.html#s,BProc,TCProcSection proc s(p: BProc; s: TCProcSection): var Builder 209
nim procSec cgendata.html#procSec,BProc,TCProcSection proc procSec(p: BProc; s: TCProcSection): var Builder 213
nim initBlock cgendata.html#initBlock proc initBlock(): TBlock 217
nim newProc cgendata.html#newProc,PSym,BModule proc newProc(prc: PSym; module: BModule): BProc 222
nim newModuleList cgendata.html#newModuleList,ModuleGraph proc newModuleList(g: ModuleGraph): BModuleList 235
nim cgenModules cgendata.html#cgenModules.i,BModuleList iterator cgenModules(g: BModuleList): BModule 239
nimgrp config cgendata.html#config-templates-all template 198

243
compiler/cgmeth.html Normal file
View File

@@ -0,0 +1,243 @@
<?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>cgmeth</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">cgmeth</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">generateIfMethodDispatchers
<li><a class="reference" href="#generateIfMethodDispatchers%2CModuleGraph%2CIdGenerator" title="generateIfMethodDispatchers(g: ModuleGraph; idgen: IdGenerator)">generateIfMethodDispatchers(g: ModuleGraph; idgen: IdGenerator)</a></li>
</ul>
<ul class="simple nested-toc-section">genIfDispatcher
<li><a class="reference" href="#genIfDispatcher%2CModuleGraph%2Cseq%5BPSym%5D%2CIntSet%2CIdGenerator" title="genIfDispatcher(g: ModuleGraph; methods: seq[PSym]; relevantCols: IntSet;
idgen: IdGenerator): PSym">genIfDispatcher(g: ModuleGraph; methods: seq[PSym]; relevantCols: IntSet;
idgen: IdGenerator): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">getDispatcher
<li><a class="reference" href="#getDispatcher%2CPSym" title="getDispatcher(s: PSym): PSym">getDispatcher(s: PSym): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">methodCall
<li><a class="reference" href="#methodCall%2CPNode%2CConfigRef" title="methodCall(n: PNode; conf: ConfigRef): PNode">methodCall(n: PNode; conf: ConfigRef): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">methodDef
<li><a class="reference" href="#methodDef%2CModuleGraph%2CIdGenerator%2CPSym" title="methodDef(g: ModuleGraph; idgen: IdGenerator; s: PSym)">methodDef(g: ModuleGraph; idgen: IdGenerator; s: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">relevantCol
<li><a class="reference" href="#relevantCol%2Cseq%5BPSym%5D%2Cint" title="relevantCol(methods: seq[PSym]; col: int): bool">relevantCol(methods: seq[PSym]; col: int): bool</a></li>
</ul>
<ul class="simple nested-toc-section">sortBucket
<li><a class="reference" href="#sortBucket%2Cseq%5BPSym%5D%2CIntSet" title="sortBucket(a: var seq[PSym]; relevantCols: IntSet)">sortBucket(a: var seq[PSym]; relevantCols: IntSet)</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/cgmeth.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgmeth.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">This module implements code generation for methods.</p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="options.html">options</a>, <a class="reference external" href="ast.html">ast</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="renderer.html">renderer</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="magicsys.html">magicsys</a>, <a class="reference external" href="sempass2.html">sempass2</a>, <a class="reference external" href="modulegraphs.html">modulegraphs</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="astalgo.html">astalgo</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="generateIfMethodDispatchers-procs-all">
<div id="generateIfMethodDispatchers,ModuleGraph,IdGenerator">
<dt><pre><span class="Keyword">proc</span> <a href="#generateIfMethodDispatchers%2CModuleGraph%2CIdGenerator"><span class="Identifier">generateIfMethodDispatchers</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><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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgmeth.nim#L311" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgmeth.nim#L311" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="genIfDispatcher-procs-all">
<div id="genIfDispatcher,ModuleGraph,seq[PSym],IntSet,IdGenerator">
<dt><pre><span class="Keyword">proc</span> <a href="#genIfDispatcher%2CModuleGraph%2Cseq%5BPSym%5D%2CIntSet%2CIdGenerator"><span class="Identifier">genIfDispatcher</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">methods</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">relevantCols</span><span class="Other">:</span> <span class="Identifier">IntSet</span><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="astdef.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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgmeth.nim#L252" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgmeth.nim#L252" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getDispatcher-procs-all">
<div id="getDispatcher,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#getDispatcher%2CPSym"><span class="Identifier">getDispatcher</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span>
<span class="Identifier">ValueError</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">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>
can return nil if is has no dispatcher.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgmeth.nim#L45" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgmeth.nim#L45" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="methodCall-procs-all">
<div id="methodCall,PNode,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#methodCall%2CPNode%2CConfigRef"><span class="Identifier">methodCall</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgmeth.nim#L53" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgmeth.nim#L53" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="methodDef-procs-all">
<div id="methodDef,ModuleGraph,IdGenerator,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#methodDef%2CModuleGraph%2CIdGenerator%2CPSym"><span class="Identifier">methodDef</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">s</span><span class="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cgmeth.nim#L160" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgmeth.nim#L160" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="relevantCol-procs-all">
<div id="relevantCol,seq[PSym],int">
<dt><pre><span class="Keyword">proc</span> <a href="#relevantCol%2Cseq%5BPSym%5D%2Cint"><span class="Identifier">relevantCol</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="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">col</span><span class="Other">:</span> <span class="Identifier">int</span><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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/cgmeth.nim#L213" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgmeth.nim#L213" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="sortBucket-procs-all">
<div id="sortBucket,seq[PSym],IntSet">
<dt><pre><span class="Keyword">proc</span> <a href="#sortBucket%2Cseq%5BPSym%5D%2CIntSet"><span class="Identifier">sortBucket</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">relevantCols</span><span class="Other">:</span> <span class="Identifier">IntSet</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/cgmeth.nim#L233" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cgmeth.nim#L233" 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: 2026-07-10 18:29:10 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

8
compiler/cgmeth.idx Normal file
View File

@@ -0,0 +1,8 @@
nimTitle cgmeth cgmeth.html module cgmeth 0
nim getDispatcher cgmeth.html#getDispatcher,PSym proc getDispatcher(s: PSym): PSym 45
nim methodCall cgmeth.html#methodCall,PNode,ConfigRef proc methodCall(n: PNode; conf: ConfigRef): PNode 53
nim methodDef cgmeth.html#methodDef,ModuleGraph,IdGenerator,PSym proc methodDef(g: ModuleGraph; idgen: IdGenerator; s: PSym) 160
nim relevantCol cgmeth.html#relevantCol,seq[PSym],int proc relevantCol(methods: seq[PSym]; col: int): bool 213
nim sortBucket cgmeth.html#sortBucket,seq[PSym],IntSet proc sortBucket(a: var seq[PSym]; relevantCols: IntSet) 233
nim genIfDispatcher cgmeth.html#genIfDispatcher,ModuleGraph,seq[PSym],IntSet,IdGenerator proc genIfDispatcher(g: ModuleGraph; methods: seq[PSym]; relevantCols: IntSet;\n idgen: IdGenerator): PSym 252
nim generateIfMethodDispatchers cgmeth.html#generateIfMethodDispatchers,ModuleGraph,IdGenerator proc generateIfMethodDispatchers(g: ModuleGraph; idgen: IdGenerator) 311

125
compiler/closureiters.html Normal file
View File

@@ -0,0 +1,125 @@
<?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>closureiters</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">closureiters</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">transformClosureIterator
<li><a class="reference" href="#transformClosureIterator%2CModuleGraph%2CIdGenerator%2CPSym%2CPNode" title="transformClosureIterator(g: ModuleGraph; idgen: IdGenerator; fn: PSym; n: PNode): PNode">transformClosureIterator(g: ModuleGraph; idgen: IdGenerator; fn: PSym; n: PNode): PNode</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/closureiters.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/closureiters.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></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="msgs.html">msgs</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="renderer.html">renderer</a>, <a class="reference external" href="magicsys.html">magicsys</a>, <a class="reference external" href="lowerings.html">lowerings</a>, <a class="reference external" href="lambdalifting.html">lambdalifting</a>, <a class="reference external" href="modulegraphs.html">modulegraphs</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="trees.html">trees</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="transformClosureIterator-procs-all">
<div id="transformClosureIterator,ModuleGraph,IdGenerator,PSym,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#transformClosureIterator%2CModuleGraph%2CIdGenerator%2CPSym%2CPNode"><span class="Identifier">transformClosureIterator</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">fn</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span>
<span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/closureiters.nim#L1490" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/closureiters.nim#L1490" 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: 2026-07-10 18:29:10 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

View File

@@ -0,0 +1,2 @@
nimTitle closureiters closureiters.html module closureiters 0
nim transformClosureIterator closureiters.html#transformClosureIterator,ModuleGraph,IdGenerator,PSym,PNode proc transformClosureIterator(g: ModuleGraph; idgen: IdGenerator; fn: PSym; n: PNode): PNode 1490

259
compiler/cmdlinehelper.html Normal file
View File

@@ -0,0 +1,259 @@
<?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>cmdlinehelper</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">cmdlinehelper</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="#NimProg" title="NimProg = ref object
suggestMode*: bool
supportsStdinFile*: bool
processCmdLine*: proc (pass: TCmdLinePass; cmd: string; config: ConfigRef)">NimProg</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">addCmdPrefix
<li><a class="reference" href="#addCmdPrefix%2Cstring%2CCmdLineKind" title="addCmdPrefix(result: var string; kind: CmdLineKind)">addCmdPrefix(result: var string; kind: CmdLineKind)</a></li>
</ul>
<ul class="simple nested-toc-section">initDefinesProg
<li><a class="reference" href="#initDefinesProg%2CNimProg%2CConfigRef%2Cstring" title="initDefinesProg(self: NimProg; conf: ConfigRef; name: string)">initDefinesProg(self: NimProg; conf: ConfigRef; name: string)</a></li>
</ul>
<ul class="simple nested-toc-section">loadConfigsAndProcessCmdLine
<li><a class="reference" href="#loadConfigsAndProcessCmdLine%2CNimProg%2CIdentCache%2CConfigRef%2CModuleGraph" title="loadConfigsAndProcessCmdLine(self: NimProg; cache: IdentCache; conf: ConfigRef;
graph: ModuleGraph): bool">loadConfigsAndProcessCmdLine(self: NimProg; cache: IdentCache; conf: ConfigRef;
graph: ModuleGraph): bool</a></li>
</ul>
<ul class="simple nested-toc-section">loadConfigsAndRunMainCommand
<li><a class="reference" href="#loadConfigsAndRunMainCommand%2CNimProg%2CIdentCache%2CConfigRef%2CModuleGraph" title="loadConfigsAndRunMainCommand(self: NimProg; cache: IdentCache; conf: ConfigRef;
graph: ModuleGraph): bool">loadConfigsAndRunMainCommand(self: NimProg; cache: IdentCache; conf: ConfigRef;
graph: ModuleGraph): bool</a></li>
</ul>
<ul class="simple nested-toc-section">prependCurDir
<li><a class="reference" href="#prependCurDir%2CAbsoluteFile" title="prependCurDir(f: AbsoluteFile): AbsoluteFile">prependCurDir(f: AbsoluteFile): AbsoluteFile</a></li>
</ul>
<ul class="simple nested-toc-section">processCmdLineAndProjectPath
<li><a class="reference" href="#processCmdLineAndProjectPath%2CNimProg%2CConfigRef" title="processCmdLineAndProjectPath(self: NimProg; conf: ConfigRef)">processCmdLineAndProjectPath(self: NimProg; conf: ConfigRef)</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/cmdlinehelper.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cmdlinehelper.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">Helpers for binaries that use compiler passes, e.g.: nim, nimsuggest</p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="options.html">options</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="nimconf.html">nimconf</a>, <a class="reference external" href="extccomp.html">extccomp</a>, <a class="reference external" href="commands.html">commands</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="modulegraphs.html">modulegraphs</a>, <a class="reference external" href="condsyms.html">condsyms</a>, <a class="reference external" href="pathutils.html">pathutils</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="NimProg">
<dt><pre><a href="#NimProg"><span class="Identifier">NimProg</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span>
<span class="Identifier">suggestMode</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">supportsStdinFile</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">processCmdLine</span><span class="Operator">*</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">pass</span><span class="Other">:</span> <a href="commands.html#TCmdLinePass"><span class="Identifier">TCmdLinePass</span></a><span class="Other">;</span> <span class="Identifier">cmd</span><span class="Other">:</span> <span class="Identifier">string</span><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></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cmdlinehelper.nim#L33" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cmdlinehelper.nim#L33" 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="addCmdPrefix-procs-all">
<div id="addCmdPrefix,string,CmdLineKind">
<dt><pre><span class="Keyword">proc</span> <a href="#addCmdPrefix%2Cstring%2CCmdLineKind"><span class="Identifier">addCmdPrefix</span></a><span class="Other">(</span><span class="Identifier">result</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">kind</span><span class="Other">:</span> <span class="Identifier">CmdLineKind</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/cmdlinehelper.nim#L25" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cmdlinehelper.nim#L25" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="initDefinesProg-procs-all">
<div id="initDefinesProg,NimProg,ConfigRef,string">
<dt><pre><span class="Keyword">proc</span> <a href="#initDefinesProg%2CNimProg%2CConfigRef%2Cstring"><span class="Identifier">initDefinesProg</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="#NimProg"><span class="Identifier">NimProg</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">name</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/cmdlinehelper.nim#L38" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cmdlinehelper.nim#L38" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="loadConfigsAndProcessCmdLine-procs-all">
<div id="loadConfigsAndProcessCmdLine,NimProg,IdentCache,ConfigRef,ModuleGraph">
<dt><pre><span class="Keyword">proc</span> <a href="#loadConfigsAndProcessCmdLine%2CNimProg%2CIdentCache%2CConfigRef%2CModuleGraph"><span class="Identifier">loadConfigsAndProcessCmdLine</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="#NimProg"><span class="Identifier">NimProg</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">conf</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</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="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">OSError</span><span class="Other">,</span> <span class="Identifier">ValueError</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">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span>
<span class="Identifier">EOFError</span><span class="Other">,</span> <span class="Identifier">ESuggestDone</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="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadEnvEffect</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">WriteEnvEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">,</span> <span class="Identifier">ExecIOEffect</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/cmdlinehelper.nim#L53" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cmdlinehelper.nim#L53" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="loadConfigsAndRunMainCommand-procs-all">
<div id="loadConfigsAndRunMainCommand,NimProg,IdentCache,ConfigRef,ModuleGraph">
<dt><pre><span class="Keyword">proc</span> <a href="#loadConfigsAndRunMainCommand%2CNimProg%2CIdentCache%2CConfigRef%2CModuleGraph"><span class="Identifier">loadConfigsAndRunMainCommand</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="#NimProg"><span class="Identifier">NimProg</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">conf</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</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="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">OSError</span><span class="Other">,</span> <span class="Identifier">ValueError</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">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span>
<span class="Identifier">EOFError</span><span class="Other">,</span> <span class="Identifier">ESuggestDone</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="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadEnvEffect</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">WriteEnvEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">,</span> <span class="Identifier">ExecIOEffect</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>
Alias for loadConfigsAndProcessCmdLine, here for backwards compatibility
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cmdlinehelper.nim#L84" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cmdlinehelper.nim#L84" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="prependCurDir-procs-all">
<div id="prependCurDir,AbsoluteFile">
<dt><pre><span class="Keyword">proc</span> <a href="#prependCurDir%2CAbsoluteFile"><span class="Identifier">prependCurDir</span></a><span class="Other">(</span><span class="Identifier">f</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</span></a><span class="Other">)</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</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/cmdlinehelper.nim#L18" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cmdlinehelper.nim#L18" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="processCmdLineAndProjectPath-procs-all">
<div id="processCmdLineAndProjectPath,NimProg,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#processCmdLineAndProjectPath%2CNimProg%2CConfigRef"><span class="Identifier">processCmdLineAndProjectPath</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="#NimProg"><span class="Identifier">NimProg</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><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">OSError</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">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/cmdlinehelper.nim#L42" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cmdlinehelper.nim#L42" 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: 2026-07-10 18:29:15 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

View File

@@ -0,0 +1,8 @@
nimTitle cmdlinehelper cmdlinehelper.html module cmdlinehelper 0
nim prependCurDir cmdlinehelper.html#prependCurDir,AbsoluteFile proc prependCurDir(f: AbsoluteFile): AbsoluteFile 18
nim addCmdPrefix cmdlinehelper.html#addCmdPrefix,string,CmdLineKind proc addCmdPrefix(result: var string; kind: CmdLineKind) 25
nim NimProg cmdlinehelper.html#NimProg type NimProg 33
nim initDefinesProg cmdlinehelper.html#initDefinesProg,NimProg,ConfigRef,string proc initDefinesProg(self: NimProg; conf: ConfigRef; name: string) 38
nim processCmdLineAndProjectPath cmdlinehelper.html#processCmdLineAndProjectPath,NimProg,ConfigRef proc processCmdLineAndProjectPath(self: NimProg; conf: ConfigRef) 42
nim loadConfigsAndProcessCmdLine cmdlinehelper.html#loadConfigsAndProcessCmdLine,NimProg,IdentCache,ConfigRef,ModuleGraph proc loadConfigsAndProcessCmdLine(self: NimProg; cache: IdentCache; conf: ConfigRef;\n graph: ModuleGraph): bool 53
nim loadConfigsAndRunMainCommand cmdlinehelper.html#loadConfigsAndRunMainCommand,NimProg,IdentCache,ConfigRef,ModuleGraph proc loadConfigsAndRunMainCommand(self: NimProg; cache: IdentCache; conf: ConfigRef;\n graph: ModuleGraph): bool 84

541
compiler/cnif.html Normal file
View File

@@ -0,0 +1,541 @@
<?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>cnif</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">cnif</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>
<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="#CnifHeads" title="CnifHeads = object
valid*: bool ## file parsed, carries the meta head and has
## the current format version
initRequired*: bool
datInitRequired*: bool
semmedNif*: string ## the semmed NIF this TU was generated from
moduleBase*: string ## the module's mangled base name
cdefs*: seq[tuple[cname, nifname: string]] ## the proc definitions
cdata*: seq[tuple[cname, nifname: string]] ## the data definitions
crefs*: seq[string] ## C names referenced but not defined here
cdeps*: seq[string] ## module suffixes whose routine bodies this
## TU embeds (impl-cookie gated on reuse)">CnifHeads</a></li>
<li><a class="reference" href="#CnifLiveness" title="CnifLiveness = object
defs*: int ## proc definitions emitted across all modules
liveDefs*: int ## of those, reachable from the roots
live*: HashSet[string] ## live C names
broken*: bool">CnifLiveness</a></li>
<li><a class="reference" href="#MergeDecision" title="MergeDecision = object
live*: HashSet[string] ## globally reachable C names (dead cdefs
## are dropped from every module)
owners*: Table[string, string] ## for each `'u'`-flagged (unique,
## externally-linked) definition, the single
## artifact base name allowed to embed its
## body; every other module prototypes it
broken*: bool ## an artifact was missing or unparsable —
## the caller should fall back / regenerate
defs*, liveDefs*: int">MergeDecision</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#10" id="60">Consts</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#CnifDefEnd" title="CnifDefEnd = '\x05'">CnifDefEnd</a></li>
<li><a class="reference" href="#CnifDefSep" title="CnifDefSep = '\x1F'">CnifDefSep</a></li>
<li><a class="reference" href="#CnifDefStart" title="CnifDefStart = '\x04'">CnifDefStart</a></li>
<li><a class="reference" href="#CnifSymEnd" title="CnifSymEnd = '\x03'">CnifSymEnd</a></li>
<li><a class="reference" href="#CnifSymStart" title="CnifSymStart = '\x02'">CnifSymStart</a></li>
<li><a class="reference" href="#CnifVersion" title="CnifVersion = &quot;4&quot;">CnifVersion</a></li>
<li><a class="reference" href="#MergeDecisionFile" title="MergeDecisionFile = &quot;ic.backend.merge.nif&quot;">MergeDecisionFile</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">cnifDefDirective
<li><a class="reference" href="#cnifDefDirective%2Cstring%2Cstring%2Cstring" title="cnifDefDirective(name, flags, nifName: string): string">cnifDefDirective(name, flags, nifName: string): string</a></li>
</ul>
<ul class="simple nested-toc-section">cnifEndDefs
<li><a class="reference" href="#cnifEndDefs" title="cnifEndDefs(): string">cnifEndDefs(): string</a></li>
</ul>
<ul class="simple nested-toc-section">computeLiveFromCArtifacts
<li><a class="reference" href="#computeLiveFromCArtifacts%2CopenArray%5Bstring%5D" title="computeLiveFromCArtifacts(files: openArray[string]): CnifLiveness">computeLiveFromCArtifacts(files: openArray[string]): CnifLiveness</a></li>
</ul>
<ul class="simple nested-toc-section">computeMergeDecision
<li><a class="reference" href="#computeMergeDecision%2CopenArray%5Bstring%5D" title="computeMergeDecision(files: openArray[string]): MergeDecision">computeMergeDecision(files: openArray[string]): MergeDecision</a></li>
</ul>
<ul class="simple nested-toc-section">hasCnifMarks
<li><a class="reference" href="#hasCnifMarks%2Cstring" title="hasCnifMarks(s: string): bool">hasCnifMarks(s: string): bool</a></li>
</ul>
<ul class="simple nested-toc-section">markCName
<li><a class="reference" href="#markCName%2Cstring" title="markCName(name: string): string">markCName(name: string): string</a></li>
</ul>
<ul class="simple nested-toc-section">readCnifHeads
<li><a class="reference" href="#readCnifHeads%2Cstring" title="readCnifHeads(f: string): CnifHeads">readCnifHeads(f: string): CnifHeads</a></li>
</ul>
<ul class="simple nested-toc-section">readMergeDecision
<li><a class="reference" href="#readMergeDecision%2Cstring" title="readMergeDecision(f: string): MergeDecision">readMergeDecision(f: string): MergeDecision</a></li>
</ul>
<ul class="simple nested-toc-section">renderCFromArtifact
<li><a class="reference" href="#renderCFromArtifact%2Cstring%2CMergeDecision%2Cstring%2Cint" title="renderCFromArtifact(artifact: string; d: MergeDecision; ownerId: string;
dropped: var int): string">renderCFromArtifact(artifact: string; d: MergeDecision; ownerId: string;
dropped: var int): string</a></li>
</ul>
<ul class="simple nested-toc-section">renderMarkedC
<li><a class="reference" href="#renderMarkedC%2Cstring%2CHashSet%5Bstring%5D%2Cint" title="renderMarkedC(code: string; live: HashSet[string]; dropped: var int): string">renderMarkedC(code: string; live: HashSet[string]; dropped: var int): string</a></li>
</ul>
<ul class="simple nested-toc-section">stripCnifMarks
<li><a class="reference" href="#stripCnifMarks%2Cstring" title="stripCnifMarks(s: string): string">stripCnifMarks(s: string): string</a></li>
</ul>
<ul class="simple nested-toc-section">writeCnifArtifact
<li><a class="reference" href="#writeCnifArtifact%2Cstring%2Cstring%2CopenArray%5Btuple%5Bstring%2Cstring%5D%5D%2Cstring%2Cstring%2CopenArray%5Bstring%5D" title="writeCnifArtifact(code: string; outfile: string; initRequired = false;
datInitRequired = false;
dataDefs: openArray[tuple[cname, nifname: string]] = [];
semmedNif = &quot;&quot;; moduleBase = &quot;&quot;;
implDeps: openArray[string] = [])">writeCnifArtifact(code: string; outfile: string; initRequired = false;
datInitRequired = false;
dataDefs: openArray[tuple[cname, nifname: string]] = [];
semmedNif = &quot;&quot;; moduleBase = &quot;&quot;;
implDeps: openArray[string] = [])</a></li>
</ul>
<ul class="simple nested-toc-section">writeMergeDecision
<li><a class="reference" href="#writeMergeDecision%2Cstring%2CMergeDecision" title="writeMergeDecision(outfile: string; d: MergeDecision)">writeMergeDecision(outfile: string; d: MergeDecision)</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/cnif.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"><p>The &quot;cnif&quot; artifact: the C code generator's output as a NIF file.</p>
<p>This is deliberately <em>not</em> NIFC: the C text is kept verbatim (Nim's C-level machinery — exception handling in particular — is more refined than what NIFC models today; the gap can be closed incrementally later). The only structure the artifact adds is the part dead code elimination and generic-instance merging need:</p>
<ul class="simple"><li>raw C text as string literals</li>
<li>every <em>global</em> entity's C name as a <tt class="docutils literal"><span class="pre"><span class="Identifier">Symbol</span></span></tt> token</li>
<li>every emitted proc definition as a <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">cdef</span> <span class="Identifier">SymbolDef</span> <span class="Identifier">flags</span> <span class="Operator">...</span><span class="Punctuation">)</span></span></tt> group</li>
</ul>
<p>The C generator marks names with control characters at the single place a global's C name is minted (<tt class="docutils literal"><span class="pre"><span class="Identifier">fillBackendName</span></span></tt>) and emits a definition directive at the single place finished procs are appended; the marks then ride through all of the snippet composition untouched. This module turns the final marked module text into the <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">c</span><span class="Operator">.</span><span class="Identifier">nif</span></span></tt> artifact and strips the marks for the actual <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">c</span></span></tt> output. Rendering C from the artifact is a plain token walk: string literals verbatim, symbols by name — which is also where a later merge step redirects losing generic instances.</p>
<p>Marker scheme (cannot collide: C string literals escape control chars, and <tt class="docutils literal"><span class="pre"><span class="Operator">\</span><span class="DecNumber">1</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Operator">\</span><span class="DecNumber">31</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Operator">\</span><span class="DecNumber">23</span></span></tt> of cgen's postprocess directives are distinct): 2 name 3 a global's C name 4 name 31 flags 31 nif 5 start of the definition of <tt class="docutils literal"><span class="pre"><span class="Identifier">name</span></span></tt>; <tt class="docutils literal"><span class="pre"><span class="Identifier">nif</span></span></tt> is the defining symbol's NIF name (empty for backend-minted symbols) so a later run can re-demand the definition 4 5 end of the definitions section</p>
</p>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="CnifHeads">
<dt><pre><a href="#CnifHeads"><span class="Identifier">CnifHeads</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">valid</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span> <span class="Comment">## file parsed, carries the meta head and has</span>
<span class="Comment">## the current format version</span>
<span class="Identifier">initRequired</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">datInitRequired</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">semmedNif</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Comment">## the semmed NIF this TU was generated from</span>
<span class="Identifier">moduleBase</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Comment">## the module's mangled base name</span>
<span class="Identifier">cdefs</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">cname</span><span class="Other">,</span> <span class="Identifier">nifname</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> <span class="Comment">## the proc definitions</span>
<span class="Identifier">cdata</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">cname</span><span class="Other">,</span> <span class="Identifier">nifname</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> <span class="Comment">## the data definitions</span>
<span class="Identifier">crefs</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span class="Comment">## C names referenced but not defined here</span>
<span class="Identifier">cdeps</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span class="Comment">## module suffixes whose routine bodies this</span>
<span class="Comment">## TU embeds (impl-cookie gated on reuse)</span></pre></dt>
<dd>
The cheap-to-parse part of an artifact that a later run needs in order to reuse the TU without regenerating it.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L255" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L255" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="CnifLiveness">
<dt><pre><a href="#CnifLiveness"><span class="Identifier">CnifLiveness</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">defs</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span> <span class="Comment">## proc definitions emitted across all modules</span>
<span class="Identifier">liveDefs</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span> <span class="Comment">## of those, reachable from the roots</span>
<span class="Identifier">live</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">HashSet</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span class="Comment">## live C names</span>
<span class="Identifier">broken</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L362" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L362" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="MergeDecision">
<dt><pre><a href="#MergeDecision"><span class="Identifier">MergeDecision</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">live</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">HashSet</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span class="Comment">## globally reachable C names (dead cdefs</span>
<span class="Comment">## are dropped from every module)</span>
<span class="Identifier">owners</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">string</span><span class="Other">]</span> <span class="Comment">## for each `'u'`-flagged (unique,</span>
<span class="Comment">## externally-linked) definition, the single</span>
<span class="Comment">## artifact base name allowed to embed its</span>
<span class="Comment">## body; every other module prototypes it</span>
<span class="Identifier">broken</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span> <span class="Comment">## an artifact was missing or unparsable —</span>
<span class="Comment">## the caller should fall back / regenerate</span>
<span class="Identifier">defs</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">liveDefs</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span></pre></dt>
<dd>
What the per-module backend's <tt class="docutils literal"><span class="pre"><span class="Identifier">merge</span></span></tt> stage computes from every module's <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">c</span><span class="Operator">.</span><span class="Identifier">nif</span></span></tt> and what its <tt class="docutils literal"><span class="pre"><span class="Identifier">emit</span></span></tt> stage consumes to render the final <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">c</span></span></tt> of one module.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L468" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L468" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</dl>
</div>
<div class="section" id="10">
<h1><a class="toc-backref" href="#10">Consts</a></h1>
<dl class="item">
<div id="CnifDefEnd">
<dt><pre><a href="#CnifDefEnd"><span class="Identifier">CnifDefEnd</span></a> <span class="Other">=</span> <span class="CharLit">'\x05'</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L48" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L48" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="CnifDefSep">
<dt><pre><a href="#CnifDefSep"><span class="Identifier">CnifDefSep</span></a> <span class="Other">=</span> <span class="CharLit">'\x1F'</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L47" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L47" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="CnifDefStart">
<dt><pre><a href="#CnifDefStart"><span class="Identifier">CnifDefStart</span></a> <span class="Other">=</span> <span class="CharLit">'\x04'</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L46" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L46" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="CnifSymEnd">
<dt><pre><a href="#CnifSymEnd"><span class="Identifier">CnifSymEnd</span></a> <span class="Other">=</span> <span class="CharLit">'\x03'</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L45" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L45" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="CnifSymStart">
<dt><pre><a href="#CnifSymStart"><span class="Identifier">CnifSymStart</span></a> <span class="Other">=</span> <span class="CharLit">'\x02'</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L44" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L44" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="CnifVersion">
<dt><pre><a href="#CnifVersion"><span class="Identifier">CnifVersion</span></a> <span class="Other">=</span> <span class="StringLit">&quot;4&quot;</span></pre></dt>
<dd>
Artifact format version, stored in the meta head. Artifacts written by an older compiler lack the NIF names and the cref group the def-retention check needs (v2), the cdeps group the fine-grained reuse gate needs (v3), or the type NIF names and cnif-marked extern RTTI references the typeinfo flavor of the def-retention check needs (v4); <tt class="docutils literal"><span class="pre"><span class="Identifier">readCnifHeads</span></span></tt> reports them as invalid so their TUs simply regenerate once.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L76" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L76" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="MergeDecisionFile">
<dt><pre><a href="#MergeDecisionFile"><span class="Identifier">MergeDecisionFile</span></a> <span class="Other">=</span> <span class="StringLit">&quot;ic.backend.merge.nif&quot;</span></pre></dt>
<dd>
Fixed name of the merge stage's output in the nimcache, read by <tt class="docutils literal"><span class="pre"><span class="Identifier">emit</span></span></tt>.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L587" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L587" 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="cnifDefDirective-procs-all">
<div id="cnifDefDirective,string,string,string">
<dt><pre><span class="Keyword">proc</span> <a href="#cnifDefDirective%2Cstring%2Cstring%2Cstring"><span class="Identifier">cnifDefDirective</span></a><span class="Other">(</span><span class="Identifier">name</span><span class="Other">,</span> <span class="Identifier">flags</span><span class="Other">,</span> <span class="Identifier">nifName</span><span class="Other">:</span> <span class="Identifier">string</span><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/cnif.nim#L85" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L85" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="cnifEndDefs-procs-all">
<div id="cnifEndDefs">
<dt><pre><span class="Keyword">proc</span> <a href="#cnifEndDefs"><span class="Identifier">cnifEndDefs</span></a><span class="Other">(</span><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/cnif.nim#L88" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L88" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="computeLiveFromCArtifacts-procs-all">
<div id="computeLiveFromCArtifacts,openArray[string]">
<dt><pre><span class="Keyword">proc</span> <a href="#computeLiveFromCArtifacts%2CopenArray%5Bstring%5D"><span class="Identifier">computeLiveFromCArtifacts</span></a><span class="Other">(</span><span class="Identifier">files</span><span class="Other">:</span> <span class="Identifier">openArray</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="#CnifLiveness"><span class="Identifier">CnifLiveness</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">ValueError</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="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>
<p>dce1-style mark&amp;sweep over the C-shaped artifacts: a <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">cdef</span> <span class="Operator">...</span><span class="Punctuation">)</span></span></tt> group is a definition (flags 'x'/'c'/'m' — exportc, compilerproc, method/dispatcher — make it a root), names at the top level (data, globals, init code) are roots, names inside a group are its uses. Because the artifact is <em>fully lowered</em> output, no conservative modelling is needed: every call the C code contains is a token here.</p>
<p>NB: mangled C names contain no dots, so NIF's text reader classifies them as <tt class="docutils literal"><span class="pre"><span class="Identifier">Ident</span></span></tt> rather than <tt class="docutils literal"><span class="pre"><span class="Identifier">Symbol</span></span></tt>; the dialect therefore treats Ident tokens as name uses. Inside a <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">cdef</span> <span class="Operator">...</span><span class="Punctuation">)</span></span></tt> the flags ident is the one immediately following the SymbolDef; everything after is a use.</p>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L368" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L368" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="computeMergeDecision-procs-all">
<div id="computeMergeDecision,openArray[string]">
<dt><pre><span class="Keyword">proc</span> <a href="#computeMergeDecision%2CopenArray%5Bstring%5D"><span class="Identifier">computeMergeDecision</span></a><span class="Other">(</span><span class="Identifier">files</span><span class="Other">:</span> <span class="Identifier">openArray</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="#MergeDecision"><span class="Identifier">MergeDecision</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">ValueError</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="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>
<p>One pass over every <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">c</span><span class="Operator">.</span><span class="Identifier">nif</span></span></tt>: the same mark&amp;sweep as <tt class="docutils literal"><span class="pre"><span class="Identifier">computeLiveFromCArtifacts</span></span></tt> plus, per definition, owner assignment.</p>
<p>Each <tt class="docutils literal"><span class="pre"><span class="Identifier">cg</span></span></tt> process emits the body of every definition it demands (emit-everywhere), so the same externally-linked definition appears in several artifacts. A <tt class="docutils literal"><span class="pre"><span class="CharLit">'u'</span></span></tt> flag on the <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">cdef</span> <span class="Operator">...</span><span class="Punctuation">)</span></span></tt> marks those that need exactly one owner, assigned here across processes: the owner is the lexicographically smallest artifact that emits it — a pure function of the claimant set, hence stable across rebuilds. Definitions without <tt class="docutils literal"><span class="pre"><span class="CharLit">'u'</span></span></tt> (inline procs, dispatchers) are <tt class="docutils literal"><span class="pre"><span class="Keyword">static</span></span></tt>/main-only and emitted into every using TU, so they get no owner entry and are never deduplicated.</p>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L482" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L482" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="hasCnifMarks-procs-all">
<div id="hasCnifMarks,string">
<dt><pre><span class="Keyword">proc</span> <a href="#hasCnifMarks%2Cstring"><span class="Identifier">hasCnifMarks</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><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/cnif.nim#L53" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L53" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="markCName-procs-all">
<div id="markCName,string">
<dt><pre><span class="Keyword">proc</span> <a href="#markCName%2Cstring"><span class="Identifier">markCName</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> <span class="Identifier">string</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/cnif.nim#L50" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L50" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="readCnifHeads-procs-all">
<div id="readCnifHeads,string">
<dt><pre><span class="Keyword">proc</span> <a href="#readCnifHeads%2Cstring"><span class="Identifier">readCnifHeads</span></a><span class="Other">(</span><span class="Identifier">f</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="#CnifHeads"><span class="Identifier">CnifHeads</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">ValueError</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>
Reads <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">meta</span> <span class="Operator">...</span><span class="Punctuation">)</span></span></tt>, <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">cdata</span> <span class="Operator">...</span><span class="Punctuation">)</span></span></tt>, <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">cref</span> <span class="Operator">...</span><span class="Punctuation">)</span></span></tt> and the <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">cdef</span> <span class="Operator">...</span><span class="Punctuation">)</span></span></tt> head names from an artifact. Artifacts written by an older compiler (no meta head or a different format version) report <tt class="docutils literal"><span class="pre"><span class="Identifier">valid</span><span class="Operator">=</span><span class="Identifier">false</span></span></tt>.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L270" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L270" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="readMergeDecision-procs-all">
<div id="readMergeDecision,string">
<dt><pre><span class="Keyword">proc</span> <a href="#readMergeDecision%2Cstring"><span class="Identifier">readMergeDecision</span></a><span class="Other">(</span><span class="Identifier">f</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="#MergeDecision"><span class="Identifier">MergeDecision</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">ValueError</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>
Reads back a <tt class="docutils literal"><span class="pre"><span class="Identifier">writeMergeDecision</span></span></tt> file; <tt class="docutils literal"><span class="pre"><span class="Identifier">broken</span><span class="Operator">=</span><span class="Identifier">true</span></span></tt> if absent/unparsable.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L611" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L611" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="renderCFromArtifact-procs-all">
<div id="renderCFromArtifact,string,MergeDecision,string,int">
<dt><pre><span class="Keyword">proc</span> <a href="#renderCFromArtifact%2Cstring%2CMergeDecision%2Cstring%2Cint"><span class="Identifier">renderCFromArtifact</span></a><span class="Other">(</span><span class="Identifier">artifact</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">d</span><span class="Other">:</span> <a href="#MergeDecision"><span class="Identifier">MergeDecision</span></a><span class="Other">;</span> <span class="Identifier">ownerId</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">dropped</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">int</span><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">ValueError</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>
The per-module backend's <tt class="docutils literal"><span class="pre"><span class="Identifier">emit</span></span></tt> stage: render one module's final <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">c</span></span></tt> from its <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">c</span><span class="Operator">.</span><span class="Identifier">nif</span></span></tt> and the merge decision. String literals are emitted verbatim, symbols by name; a <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">cdef</span> <span class="Operator">...</span><span class="Punctuation">)</span></span></tt> body is dropped when the name is dead, or when it is a <tt class="docutils literal"><span class="pre"><span class="CharLit">'u'</span></span></tt> unique definition this module does not own. The body's prototype lives in the surrounding raw text (cgen emits a forward declaration for every <em>used</em> proc, independent of where the body lands), so a dropped body still leaves a valid declaration — no synthesis needed. The head groups (meta/cdata/cref/cdeps) carry no C text.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L657" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L657" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="renderMarkedC-procs-all">
<div id="renderMarkedC,string,HashSet[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#renderMarkedC%2Cstring%2CHashSet%5Bstring%5D%2Cint"><span class="Identifier">renderMarkedC</span></a><span class="Other">(</span><span class="Identifier">code</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">live</span><span class="Other">:</span> <span class="Identifier">HashSet</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">dropped</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">int</span><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>
Renders the final C text from the marked module text: symbol marks are removed (keeping the names — a later merge step substitutes them here), and definitions whose name is not in <tt class="docutils literal"><span class="pre"><span class="Identifier">live</span></span></tt> are dropped entirely. Each definition is self-delimiting (genProcAux emits an end directive right after the proc's text), so text written by other emitters is never part of a definition's span and survives unconditionally.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L218" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L218" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="stripCnifMarks-procs-all">
<div id="stripCnifMarks,string">
<dt><pre><span class="Keyword">proc</span> <a href="#stripCnifMarks%2Cstring"><span class="Identifier">stripCnifMarks</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><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>
Removes the symbol marks (keeping the names) and the definition directives (entirely) so the result is plain C.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L58" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L58" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="writeCnifArtifact-procs-all">
<div id="writeCnifArtifact,string,string,openArray[tuple[string,string]],string,string,openArray[string]">
<dt><pre><span class="Keyword">proc</span> <a href="#writeCnifArtifact%2Cstring%2Cstring%2CopenArray%5Btuple%5Bstring%2Cstring%5D%5D%2Cstring%2Cstring%2CopenArray%5Bstring%5D"><span class="Identifier">writeCnifArtifact</span></a><span class="Other">(</span><span class="Identifier">code</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">outfile</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">initRequired</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span>
<span class="Identifier">datInitRequired</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span>
<span class="Identifier">dataDefs</span><span class="Other">:</span> <span class="Identifier">openArray</span><span class="Other">[</span><span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">cname</span><span class="Other">,</span> <span class="Identifier">nifname</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> <span class="Other">=</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">semmedNif</span> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span><span class="Other">;</span> <span class="Identifier">moduleBase</span> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span><span class="Other">;</span>
<span class="Identifier">implDeps</span><span class="Other">:</span> <span class="Identifier">openArray</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span class="Other">=</span> <span class="Other">[</span><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="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>
Splits the marked module text into the <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">c</span><span class="Operator">.</span><span class="Identifier">nif</span></span></tt> artifact. The artifact starts with a <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">meta</span> <span class="Operator">&lt;</span><span class="Identifier">flags</span><span class="Operator">&gt;</span> <span class="StringLit">&quot;semmedNif&quot;</span> <span class="StringLit">&quot;moduleBase&quot;</span> <span class="StringLit">&quot;version&quot;</span><span class="Punctuation">)</span></span></tt> head — whether the module has an init/datInit proc ('i'/'d'), which semmed NIF it was generated from and the module's mangled base name (what <tt class="docutils literal"><span class="pre"><span class="Identifier">registerModuleToMain</span></span></tt> and the reuse decision need when the TU is reused in a later run, possibly without the module ever being loaded again) — a <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">cdata</span> <span class="Punctuation">(</span><span class="Identifier">SymbolDef</span> <span class="Identifier">StrLit</span><span class="Punctuation">)</span><span class="Operator">*</span><span class="Punctuation">)</span></span></tt> group naming the data definitions (consts, globals, RTTI) the TU embeds together with their NIF names, a <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">cref</span> <span class="Identifier">Ident</span><span class="Operator">*</span><span class="Punctuation">)</span></span></tt> group naming every C name the TU references but does not define itself (what the def-retention check consults when some <em>other</em> TU regenerates), and a <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">cdeps</span> <span class="Identifier">Ident</span><span class="Operator">*</span><span class="Punctuation">)</span></span></tt> group naming the modules whose routine <em>bodies</em> this TU embeds (redirected defs, shared instances, hooks): the fine-grained reuse gate checks their <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">impl</span><span class="Operator">.</span><span class="Identifier">nif</span></span></tt> cookies on top of the direct imports' <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">iface</span><span class="Operator">.</span><span class="Identifier">nif</span></span></tt> cookies.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L91" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L91" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="writeMergeDecision-procs-all">
<div id="writeMergeDecision,string,MergeDecision">
<dt><pre><span class="Keyword">proc</span> <a href="#writeMergeDecision%2Cstring%2CMergeDecision"><span class="Identifier">writeMergeDecision</span></a><span class="Other">(</span><span class="Identifier">outfile</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">d</span><span class="Other">:</span> <a href="#MergeDecision"><span class="Identifier">MergeDecision</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">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>
Serializes the merge decision: <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">merge</span> <span class="Punctuation">(</span><span class="Identifier">live</span> <span class="Identifier">Symbol</span><span class="Operator">*</span><span class="Punctuation">)</span> <span class="Punctuation">(</span><span class="Identifier">owners</span> <span class="Punctuation">(</span><span class="Identifier">own</span> <span class="Identifier">Symbol</span> <span class="Identifier">StrLit</span><span class="Punctuation">)</span><span class="Operator">*</span><span class="Punctuation">)</span><span class="Punctuation">)</span></span></tt>. C names are mangled (no dots) so they serialize as symbols; owner artifact base names go in string literals.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/cnif.nim#L590" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/cnif.nim#L590" 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: 2026-07-10 18:29:11 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

24
compiler/cnif.idx Normal file
View File

@@ -0,0 +1,24 @@
nimTitle cnif cnif.html module cnif 0
nim CnifSymStart cnif.html#CnifSymStart const CnifSymStart 44
nim CnifSymEnd cnif.html#CnifSymEnd const CnifSymEnd 45
nim CnifDefStart cnif.html#CnifDefStart const CnifDefStart 46
nim CnifDefSep cnif.html#CnifDefSep const CnifDefSep 47
nim CnifDefEnd cnif.html#CnifDefEnd const CnifDefEnd 48
nim markCName cnif.html#markCName,string proc markCName(name: string): string 50
nim hasCnifMarks cnif.html#hasCnifMarks,string proc hasCnifMarks(s: string): bool 53
nim stripCnifMarks cnif.html#stripCnifMarks,string proc stripCnifMarks(s: string): string 58
nim CnifVersion cnif.html#CnifVersion const CnifVersion 76
nim cnifDefDirective cnif.html#cnifDefDirective,string,string,string proc cnifDefDirective(name, flags, nifName: string): string 85
nim cnifEndDefs cnif.html#cnifEndDefs proc cnifEndDefs(): string 88
nim writeCnifArtifact cnif.html#writeCnifArtifact,string,string,openArray[tuple[string,string]],string,string,openArray[string] proc writeCnifArtifact(code: string; outfile: string; initRequired = false;\n datInitRequired = false;\n dataDefs: openArray[tuple[cname, nifname: string]] = [];\n semmedNif = ""; moduleBase = "";\n implDeps: openArray[string] = []) 91
nim renderMarkedC cnif.html#renderMarkedC,string,HashSet[string],int proc renderMarkedC(code: string; live: HashSet[string]; dropped: var int): string 218
nim CnifHeads cnif.html#CnifHeads object CnifHeads 255
nim readCnifHeads cnif.html#readCnifHeads,string proc readCnifHeads(f: string): CnifHeads 270
nim CnifLiveness cnif.html#CnifLiveness object CnifLiveness 362
nim computeLiveFromCArtifacts cnif.html#computeLiveFromCArtifacts,openArray[string] proc computeLiveFromCArtifacts(files: openArray[string]): CnifLiveness 368
nim MergeDecision cnif.html#MergeDecision object MergeDecision 468
nim computeMergeDecision cnif.html#computeMergeDecision,openArray[string] proc computeMergeDecision(files: openArray[string]): MergeDecision 482
nim MergeDecisionFile cnif.html#MergeDecisionFile const MergeDecisionFile 587
nim writeMergeDecision cnif.html#writeMergeDecision,string,MergeDecision proc writeMergeDecision(outfile: string; d: MergeDecision) 590
nim readMergeDecision cnif.html#readMergeDecision,string proc readMergeDecision(f: string): MergeDecision 611
nim renderCFromArtifact cnif.html#renderCFromArtifact,string,MergeDecision,string,int proc renderCFromArtifact(artifact: string; d: MergeDecision; ownerId: string;\n dropped: var int): string 657

420
compiler/commands.html Normal file
View File

@@ -0,0 +1,420 @@
<?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>commands</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">commands</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="#TCmdLinePass" title="TCmdLinePass = enum
passCmd1, passCmd2, passPP">TCmdLinePass</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">handleCmdInput
<li><a class="reference" href="#handleCmdInput%2CConfigRef" title="handleCmdInput(conf: ConfigRef)">handleCmdInput(conf: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">handleStdinInput
<li><a class="reference" href="#handleStdinInput%2CConfigRef" title="handleStdinInput(conf: ConfigRef)">handleStdinInput(conf: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">initOrcDefines
<li><a class="reference" href="#initOrcDefines%2CConfigRef" title="initOrcDefines(conf: ConfigRef)">initOrcDefines(conf: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">parseCommand
<li><a class="reference" href="#parseCommand%2Cstring" title="parseCommand(command: string): Command">parseCommand(command: string): Command</a></li>
</ul>
<ul class="simple nested-toc-section">processArgument
<li><a class="reference" href="#processArgument%2CTCmdLinePass%2COptParser%2Cint%2CConfigRef" title="processArgument(pass: TCmdLinePass; p: OptParser; argsCount: var int;
config: ConfigRef): bool">processArgument(pass: TCmdLinePass; p: OptParser; argsCount: var int;
config: ConfigRef): bool</a></li>
</ul>
<ul class="simple nested-toc-section">processCommand
<li><a class="reference" href="#processCommand%2Cstring%2CTCmdLinePass%2CConfigRef" title="processCommand(switch: string; pass: TCmdLinePass; config: ConfigRef)">processCommand(switch: string; pass: TCmdLinePass; config: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">processSpecificNote
<li><a class="reference" href="#processSpecificNote%2Cstring%2CTSpecialWord%2CTCmdLinePass%2CTLineInfo%2Cstring%2CConfigRef" title="processSpecificNote(arg: string; state: TSpecialWord; pass: TCmdLinePass;
info: TLineInfo; orig: string; conf: ConfigRef)">processSpecificNote(arg: string; state: TSpecialWord; pass: TCmdLinePass;
info: TLineInfo; orig: string; conf: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">processSwitch
<li><a class="reference" href="#processSwitch%2CTCmdLinePass%2COptParser%2CConfigRef" title="processSwitch(pass: TCmdLinePass; p: OptParser; config: ConfigRef)">processSwitch(pass: TCmdLinePass; p: OptParser; config: ConfigRef)</a></li>
<li><a class="reference" href="#processSwitch%2Cstring%2Cstring%2CTCmdLinePass%2CTLineInfo%2CConfigRef" title="processSwitch(switch, arg: string; pass: TCmdLinePass; info: TLineInfo;
conf: ConfigRef)">processSwitch(switch, arg: string; pass: TCmdLinePass; info: TLineInfo;
conf: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">setCmd
<li><a class="reference" href="#setCmd%2CConfigRef%2CCommand" title="setCmd(conf: ConfigRef; cmd: Command)">setCmd(conf: ConfigRef; cmd: Command)</a></li>
</ul>
<ul class="simple nested-toc-section">setCommandEarly
<li><a class="reference" href="#setCommandEarly%2CConfigRef%2Cstring" title="setCommandEarly(conf: ConfigRef; command: string)">setCommandEarly(conf: ConfigRef; command: string)</a></li>
</ul>
<ul class="simple nested-toc-section">testCompileOption
<li><a class="reference" href="#testCompileOption%2CConfigRef%2Cstring%2CTLineInfo" title="testCompileOption(conf: ConfigRef; switch: string; info: TLineInfo): bool">testCompileOption(conf: ConfigRef; switch: string; info: TLineInfo): bool</a></li>
</ul>
<ul class="simple nested-toc-section">testCompileOptionArg
<li><a class="reference" href="#testCompileOptionArg%2CConfigRef%2Cstring%2Cstring%2CTLineInfo" title="testCompileOptionArg(conf: ConfigRef; switch, arg: string; info: TLineInfo): bool">testCompileOptionArg(conf: ConfigRef; switch, arg: string; info: TLineInfo): bool</a></li>
</ul>
<ul class="simple nested-toc-section">unregisterArcOrc
<li><a class="reference" href="#unregisterArcOrc%2CConfigRef" title="unregisterArcOrc(conf: ConfigRef)">unregisterArcOrc(conf: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">writeCommandLineUsage
<li><a class="reference" href="#writeCommandLineUsage%2CConfigRef" title="writeCommandLineUsage(conf: ConfigRef)">writeCommandLineUsage(conf: ConfigRef)</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/commands.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="nversion.html">nversion</a>, <a class="reference external" href="condsyms.html">condsyms</a>, <a class="reference external" href="extccomp.html">extccomp</a>, <a class="reference external" href="platform.html">platform</a>, <a class="reference external" href="wordrecg.html">wordrecg</a>, <a class="reference external" href="nimblecmd.html">nimblecmd</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="pathutils.html">pathutils</a>, <a class="reference external" href="ast.html">ast</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="TCmdLinePass">
<dt><pre><a href="#TCmdLinePass"><span class="Identifier">TCmdLinePass</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">passCmd1</span><span class="Other">,</span> <span class="Identifier">passCmd2</span><span class="Other">,</span> <span class="Identifier">passPP</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/commands.nim#L44" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L44" 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="handleCmdInput-procs-all">
<div id="handleCmdInput,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#handleCmdInput%2CConfigRef"><span class="Identifier">handleCmdInput</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><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="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="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/commands.nim#L476" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L476" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="handleStdinInput-procs-all">
<div id="handleStdinInput,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#handleStdinInput%2CConfigRef"><span class="Identifier">handleStdinInput</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><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="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="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/commands.nim#L471" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L471" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="initOrcDefines-procs-all">
<div id="initOrcDefines,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#initOrcDefines%2CConfigRef"><span class="Identifier">initOrcDefines</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><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/commands.nim#L559" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L559" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="parseCommand-procs-all">
<div id="parseCommand,string">
<dt><pre><span class="Keyword">proc</span> <a href="#parseCommand%2Cstring"><span class="Identifier">parseCommand</span></a><span class="Other">(</span><span class="Identifier">command</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="options.html#Command"><span class="Identifier">Command</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/commands.nim#L480" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L480" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="processArgument-procs-all">
<div id="processArgument,TCmdLinePass,OptParser,int,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#processArgument%2CTCmdLinePass%2COptParser%2Cint%2CConfigRef"><span class="Identifier">processArgument</span></a><span class="Other">(</span><span class="Identifier">pass</span><span class="Other">:</span> <a href="#TCmdLinePass"><span class="Identifier">TCmdLinePass</span></a><span class="Other">;</span> <span class="Identifier">p</span><span class="Other">:</span> <span class="Identifier">OptParser</span><span class="Other">;</span> <span class="Identifier">argsCount</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">int</span><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> <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/commands.nim#L1304" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L1304" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="processCommand-procs-all">
<div id="processCommand,string,TCmdLinePass,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#processCommand%2Cstring%2CTCmdLinePass%2CConfigRef"><span class="Identifier">processCommand</span></a><span class="Other">(</span><span class="Identifier">switch</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pass</span><span class="Other">:</span> <a href="#TCmdLinePass"><span class="Identifier">TCmdLinePass</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><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">ValueError</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="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span>
<span class="Identifier">EOFError</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="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">WriteEnvEffect</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/commands.nim#L1287" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L1287" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="processSpecificNote-procs-all">
<div id="processSpecificNote,string,TSpecialWord,TCmdLinePass,TLineInfo,string,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#processSpecificNote%2Cstring%2CTSpecialWord%2CTCmdLinePass%2CTLineInfo%2Cstring%2CConfigRef"><span class="Identifier">processSpecificNote</span></a><span class="Other">(</span><span class="Identifier">arg</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">state</span><span class="Other">:</span> <a href="wordrecg.html#TSpecialWord"><span class="Identifier">TSpecialWord</span></a><span class="Other">;</span> <span class="Identifier">pass</span><span class="Other">:</span> <a href="#TCmdLinePass"><span class="Identifier">TCmdLinePass</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">orig</span><span class="Other">:</span> <span class="Identifier">string</span><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><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">ValueError</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="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/commands.nim#L185" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L185" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="processSwitch-procs-all">
<div id="processSwitch,TCmdLinePass,OptParser,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#processSwitch%2CTCmdLinePass%2COptParser%2CConfigRef"><span class="Identifier">processSwitch</span></a><span class="Other">(</span><span class="Identifier">pass</span><span class="Other">:</span> <a href="#TCmdLinePass"><span class="Identifier">TCmdLinePass</span></a><span class="Other">;</span> <span class="Identifier">p</span><span class="Other">:</span> <span class="Identifier">OptParser</span><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><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">ValueError</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="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span>
<span class="Identifier">EOFError</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="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">WriteEnvEffect</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/commands.nim#L1293" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L1293" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="processSwitch,string,string,TCmdLinePass,TLineInfo,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#processSwitch%2Cstring%2Cstring%2CTCmdLinePass%2CTLineInfo%2CConfigRef"><span class="Identifier">processSwitch</span></a><span class="Other">(</span><span class="Identifier">switch</span><span class="Other">,</span> <span class="Identifier">arg</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pass</span><span class="Other">:</span> <a href="#TCmdLinePass"><span class="Identifier">TCmdLinePass</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">conf</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</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">ValueError</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="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span> <span class="Identifier">EOFError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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="Identifier">WriteDirEffect</span><span class="Other">,</span>
<span class="Identifier">WriteEnvEffect</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/commands.nim#L654" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L654" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="setCmd-procs-all">
<div id="setCmd,ConfigRef,Command">
<dt><pre><span class="Keyword">proc</span> <a href="#setCmd%2CConfigRef%2CCommand"><span class="Identifier">setCmd</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">cmd</span><span class="Other">:</span> <a href="options.html#Command"><span class="Identifier">Command</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>
sets cmd, backend so subsequent flags can query it (e.g. so --gc:arc can be ignored for backendJs)
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/commands.nim#L515" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L515" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="setCommandEarly-procs-all">
<div id="setCommandEarly,ConfigRef,string">
<dt><pre><span class="Keyword">proc</span> <a href="#setCommandEarly%2CConfigRef%2Cstring"><span class="Identifier">setCommandEarly</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">command</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/commands.nim#L532" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L532" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="testCompileOption-procs-all">
<div id="testCompileOption,ConfigRef,string,TLineInfo">
<dt><pre><span class="Keyword">proc</span> <a href="#testCompileOption%2CConfigRef%2Cstring%2CTLineInfo"><span class="Identifier">testCompileOption</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">switch</span><span class="Other">:</span> <span class="Identifier">string</span><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="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">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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/commands.nim#L327" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L327" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="testCompileOptionArg-procs-all">
<div id="testCompileOptionArg,ConfigRef,string,string,TLineInfo">
<dt><pre><span class="Keyword">proc</span> <a href="#testCompileOptionArg%2CConfigRef%2Cstring%2Cstring%2CTLineInfo"><span class="Identifier">testCompileOptionArg</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">switch</span><span class="Other">,</span> <span class="Identifier">arg</span><span class="Other">:</span> <span class="Identifier">string</span><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="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">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span>
<span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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/commands.nim#L261" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L261" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="unregisterArcOrc-procs-all">
<div id="unregisterArcOrc,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#unregisterArcOrc%2CConfigRef"><span class="Identifier">unregisterArcOrc</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><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/commands.nim#L580" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L580" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="writeCommandLineUsage-procs-all">
<div id="writeCommandLineUsage,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#writeCommandLineUsage%2CConfigRef"><span class="Identifier">writeCommandLineUsage</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><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">ValueError</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="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/commands.nim#L110" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/commands.nim#L110" 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: 2026-07-10 18:29:08 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

21
compiler/commands.idx Normal file
View File

@@ -0,0 +1,21 @@
nimTitle commands commands.html module commands 0
nim passCmd1 commands.html#passCmd1 TCmdLinePass.passCmd1 44
nim passCmd2 commands.html#passCmd2 TCmdLinePass.passCmd2 44
nim passPP commands.html#passPP TCmdLinePass.passPP 44
nim TCmdLinePass commands.html#TCmdLinePass enum TCmdLinePass 44
nim writeCommandLineUsage commands.html#writeCommandLineUsage,ConfigRef proc writeCommandLineUsage(conf: ConfigRef) 110
nim processSpecificNote commands.html#processSpecificNote,string,TSpecialWord,TCmdLinePass,TLineInfo,string,ConfigRef proc processSpecificNote(arg: string; state: TSpecialWord; pass: TCmdLinePass;\n info: TLineInfo; orig: string; conf: ConfigRef) 185
nim testCompileOptionArg commands.html#testCompileOptionArg,ConfigRef,string,string,TLineInfo proc testCompileOptionArg(conf: ConfigRef; switch, arg: string; info: TLineInfo): bool 261
nim testCompileOption commands.html#testCompileOption,ConfigRef,string,TLineInfo proc testCompileOption(conf: ConfigRef; switch: string; info: TLineInfo): bool 327
nim handleStdinInput commands.html#handleStdinInput,ConfigRef proc handleStdinInput(conf: ConfigRef) 471
nim handleCmdInput commands.html#handleCmdInput,ConfigRef proc handleCmdInput(conf: ConfigRef) 476
nim parseCommand commands.html#parseCommand,string proc parseCommand(command: string): Command 480
nim setCmd commands.html#setCmd,ConfigRef,Command proc setCmd(conf: ConfigRef; cmd: Command) 515
nim setCommandEarly commands.html#setCommandEarly,ConfigRef,string proc setCommandEarly(conf: ConfigRef; command: string) 532
nim initOrcDefines commands.html#initOrcDefines,ConfigRef proc initOrcDefines(conf: ConfigRef) 559
nim unregisterArcOrc commands.html#unregisterArcOrc,ConfigRef proc unregisterArcOrc(conf: ConfigRef) 580
nim processSwitch commands.html#processSwitch,string,string,TCmdLinePass,TLineInfo,ConfigRef proc processSwitch(switch, arg: string; pass: TCmdLinePass; info: TLineInfo;\n conf: ConfigRef) 654
nim processCommand commands.html#processCommand,string,TCmdLinePass,ConfigRef proc processCommand(switch: string; pass: TCmdLinePass; config: ConfigRef) 1287
nim processSwitch commands.html#processSwitch,TCmdLinePass,OptParser,ConfigRef proc processSwitch(pass: TCmdLinePass; p: OptParser; config: ConfigRef) 1293
nim processArgument commands.html#processArgument,TCmdLinePass,OptParser,int,ConfigRef proc processArgument(pass: TCmdLinePass; p: OptParser; argsCount: var int;\n config: ConfigRef): bool 1304
nimgrp processswitch commands.html#processSwitch-procs-all proc 654

196
compiler/concepts.html Normal file
View File

@@ -0,0 +1,196 @@
<?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>concepts</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">concepts</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" id="code-dealing-with-concept-declarations_toc" href="#code-dealing-with-concept-declarations">Code dealing with Concept declarations</a></li>
<li><a class="reference" id="concept-matching_toc" href="#concept-matching">Concept matching</a></li>
<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="#MatchFlags" title="MatchFlags = enum
mfDontBind, mfCheckGeneric">MatchFlags</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">conceptBody
<li><a class="reference" href="#conceptBody%2CPType" title="conceptBody(n: PType): PNode">conceptBody(n: PType): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">conceptMatch
<li><a class="reference" href="#conceptMatch%2CPContext%2CPType%2CPType%2CLayeredIdTableObj%2CPType%2Cset%5BMatchFlags%5D" title="conceptMatch(c: PContext; concpt, arg: PType; bindings: var LayeredIdTable;
invocation: PType; flags: set[MatchFlags] = {}): bool">conceptMatch(c: PContext; concpt, arg: PType; bindings: var LayeredIdTable;
invocation: PType; flags: set[MatchFlags] = {}): bool</a></li>
</ul>
<ul class="simple nested-toc-section">semConceptDeclaration
<li><a class="reference" href="#semConceptDeclaration%2CPContext%2CPNode" title="semConceptDeclaration(c: PContext; n: PNode): PNode">semConceptDeclaration(c: PContext; n: PNode): PNode</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/concepts.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/concepts.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">New styled concepts for Nim. See <a class="reference external" href="https://github.com/nim-lang/RFCs/issues/168">https://github.com/nim-lang/RFCs/issues/168</a> for details. Note this is a first implementation and only the &quot;Concept matching&quot; section has been implemented.
<h1><a class="toc-backref" id="code-dealing-with-concept-declarations" href="#code-dealing-with-concept-declarations">Code dealing with Concept declarations</a></h1>
<h1><a class="toc-backref" id="concept-matching" href="#concept-matching">Concept matching</a></h1></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="semdata.html">semdata</a>, <a class="reference external" href="lookups.html">lookups</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="renderer.html">renderer</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="layeredtable.html">layeredtable</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="MatchFlags">
<dt><pre><a href="#MatchFlags"><span class="Identifier">MatchFlags</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">mfDontBind</span><span class="Other">,</span> <span class="Identifier">mfCheckGeneric</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/concepts.nim#L73" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/concepts.nim#L73" 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="conceptBody-procs-all">
<div id="conceptBody,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#conceptBody%2CPType"><span class="Identifier">conceptBody</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</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">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="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/concepts.nim#L155" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/concepts.nim#L155" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="conceptMatch-procs-all">
<div id="conceptMatch,PContext,PType,PType,LayeredIdTableObj,PType,set[MatchFlags]">
<dt><pre><span class="Keyword">proc</span> <a href="#conceptMatch%2CPContext%2CPType%2CPType%2CLayeredIdTableObj%2CPType%2Cset%5BMatchFlags%5D"><span class="Identifier">conceptMatch</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="semdata.html#PContext"><span class="Identifier">PContext</span></a><span class="Other">;</span> <span class="Identifier">concpt</span><span class="Other">,</span> <span class="Identifier">arg</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</span></a><span class="Other">;</span> <span class="Identifier">bindings</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="layeredtable.html#LayeredIdTable"><span class="Identifier">LayeredIdTable</span></a><span class="Other">;</span>
<span class="Identifier">invocation</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</span></a><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <span class="Identifier">set</span><span class="Other">[</span><a href="#MatchFlags"><span class="Identifier">MatchFlags</span></a><span class="Other">]</span> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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>
Entry point from sigmatch. 'concpt' is the concept we try to match (here still a PType but we extract its AST via 'concpt.n.lastSon'). 'arg' is the type that might fulfill the concept's requirements. If so, we return true and fill the 'bindings' with pairs of (typeVar, instance) pairs. ('typeVar' is usually simply written as a generic 'T'.) 'invocation' can be nil for atomic concepts. For non-atomic concepts, it contains the <tt class="docutils literal"><span class="pre"><span class="Identifier">C</span><span class="Punctuation">[</span><span class="Identifier">S</span><span class="Punctuation">,</span> <span class="Identifier">T</span><span class="Punctuation">]</span></span></tt> parent type that we look for. We need this because we need to store bindings for 'S' and 'T' inside 'bindings' on a successful match. It is very important that we do not add any bindings at all on an unsuccessful match!
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/concepts.nim#L622" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/concepts.nim#L622" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="semConceptDeclaration-procs-all">
<div id="semConceptDeclaration,PContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#semConceptDeclaration%2CPContext%2CPNode"><span class="Identifier">semConceptDeclaration</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="semdata.html#PContext"><span class="Identifier">PContext</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="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>
Semantic checking for the concept declaration. Runs when we process the concept itself, not its matching process.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/concepts.nim#L58" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/concepts.nim#L58" 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: 2026-07-10 18:29:09 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

9
compiler/concepts.idx Normal file
View File

@@ -0,0 +1,9 @@
nimTitle concepts concepts.html module concepts 0
nim semConceptDeclaration concepts.html#semConceptDeclaration,PContext,PNode proc semConceptDeclaration(c: PContext; n: PNode): PNode 58
nim mfDontBind concepts.html#mfDontBind MatchFlags.mfDontBind 73
nim mfCheckGeneric concepts.html#mfCheckGeneric MatchFlags.mfCheckGeneric 73
nim MatchFlags concepts.html#MatchFlags enum MatchFlags 73
nim conceptBody concepts.html#conceptBody,PType proc conceptBody(n: PType): PNode 155
nim conceptMatch concepts.html#conceptMatch,PContext,PType,PType,LayeredIdTableObj,PType,set[MatchFlags] proc conceptMatch(c: PContext; concpt, arg: PType; bindings: var LayeredIdTable;\n invocation: PType; flags: set[MatchFlags] = {}): bool 622
heading Code dealing with Concept declarations concepts.html#code-dealing-with-concept-declarations Code dealing with Concept declarations 0
heading Concept matching concepts.html#concept-matching Concept matching 0

208
compiler/condsyms.html Normal file
View File

@@ -0,0 +1,208 @@
<?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>condsyms</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">condsyms</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">countDefinedSymbols
<li><a class="reference" href="#countDefinedSymbols%2CStringTableRef" title="countDefinedSymbols(symbols: StringTableRef): int">countDefinedSymbols(symbols: StringTableRef): int</a></li>
</ul>
<ul class="simple nested-toc-section">defineSymbol
<li><a class="reference" href="#defineSymbol%2CStringTableRef%2Cstring%2Cstring" title="defineSymbol(symbols: StringTableRef; symbol: string; value: string = &quot;true&quot;)">defineSymbol(symbols: StringTableRef; symbol: string; value: string = &quot;true&quot;)</a></li>
</ul>
<ul class="simple nested-toc-section">initDefines
<li><a class="reference" href="#initDefines%2CStringTableRef" title="initDefines(symbols: StringTableRef)">initDefines(symbols: StringTableRef)</a></li>
</ul>
<ul class="simple nested-toc-section">undefSymbol
<li><a class="reference" href="#undefSymbol%2CStringTableRef%2Cstring" title="undefSymbol(symbols: StringTableRef; symbol: string)">undefSymbol(symbols: StringTableRef; symbol: string)</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">definedSymbolNames
<li><a class="reference" href="#definedSymbolNames.i%2CStringTableRef" title="definedSymbolNames(symbols: StringTableRef): string">definedSymbolNames(symbols: StringTableRef): string</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/condsyms.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/condsyms.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="options.html">options</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="countDefinedSymbols-procs-all">
<div id="countDefinedSymbols,StringTableRef">
<dt><pre><span class="Keyword">proc</span> <a href="#countDefinedSymbols%2CStringTableRef"><span class="Identifier">countDefinedSymbols</span></a><span class="Other">(</span><span class="Identifier">symbols</span><span class="Other">:</span> <span class="Identifier">StringTableRef</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</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/condsyms.nim#L31" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/condsyms.nim#L31" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="defineSymbol-procs-all">
<div id="defineSymbol,StringTableRef,string,string">
<dt><pre><span class="Keyword">proc</span> <a href="#defineSymbol%2CStringTableRef%2Cstring%2Cstring"><span class="Identifier">defineSymbol</span></a><span class="Other">(</span><span class="Identifier">symbols</span><span class="Other">:</span> <span class="Identifier">StringTableRef</span><span class="Other">;</span> <span class="Identifier">symbol</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">value</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Other">=</span> <span class="StringLit">&quot;true&quot;</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/condsyms.nim#L18" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/condsyms.nim#L18" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="initDefines-procs-all">
<div id="initDefines,StringTableRef">
<dt><pre><span class="Keyword">proc</span> <a href="#initDefines%2CStringTableRef"><span class="Identifier">initDefines</span></a><span class="Other">(</span><span class="Identifier">symbols</span><span class="Other">:</span> <span class="Identifier">StringTableRef</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/condsyms.nim#L34" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/condsyms.nim#L34" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="undefSymbol-procs-all">
<div id="undefSymbol,StringTableRef,string">
<dt><pre><span class="Keyword">proc</span> <a href="#undefSymbol%2CStringTableRef%2Cstring"><span class="Identifier">undefSymbol</span></a><span class="Other">(</span><span class="Identifier">symbols</span><span class="Other">:</span> <span class="Identifier">StringTableRef</span><span class="Other">;</span> <span class="Identifier">symbol</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/condsyms.nim#L21" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/condsyms.nim#L21" 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="definedSymbolNames-iterators-all">
<div id="definedSymbolNames.i,StringTableRef">
<dt><pre><span class="Keyword">iterator</span> <a href="#definedSymbolNames.i%2CStringTableRef"><span class="Identifier">definedSymbolNames</span></a><span class="Other">(</span><span class="Identifier">symbols</span><span class="Other">:</span> <span class="Identifier">StringTableRef</span><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/condsyms.nim#L27" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/condsyms.nim#L27" 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: 2026-07-10 18:29:06 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

6
compiler/condsyms.idx Normal file
View File

@@ -0,0 +1,6 @@
nimTitle condsyms condsyms.html module condsyms 0
nim defineSymbol condsyms.html#defineSymbol,StringTableRef,string,string proc defineSymbol(symbols: StringTableRef; symbol: string; value: string = "true") 18
nim undefSymbol condsyms.html#undefSymbol,StringTableRef,string proc undefSymbol(symbols: StringTableRef; symbol: string) 21
nim definedSymbolNames condsyms.html#definedSymbolNames.i,StringTableRef iterator definedSymbolNames(symbols: StringTableRef): string 27
nim countDefinedSymbols condsyms.html#countDefinedSymbols,StringTableRef proc countDefinedSymbols(symbols: StringTableRef): int 31
nim initDefines condsyms.html#initDefines,StringTableRef proc initDefines(symbols: StringTableRef) 34

160
compiler/depends.html Normal file
View File

@@ -0,0 +1,160 @@
<?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>depends</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">depends</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">addDotDependency
<li><a class="reference" href="#addDotDependency%2CPPassContext%2CPNode" title="addDotDependency(c: PPassContext; n: PNode): PNode">addDotDependency(c: PPassContext; n: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">generateDot
<li><a class="reference" href="#generateDot%2CModuleGraph%2CAbsoluteFile" title="generateDot(graph: ModuleGraph; project: AbsoluteFile)">generateDot(graph: ModuleGraph; project: AbsoluteFile)</a></li>
</ul>
<ul class="simple nested-toc-section">setupDependPass
<li><a class="reference" href="#setupDependPass%2CModuleGraph%2CPSym%2CIdGenerator" title="setupDependPass(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext">setupDependPass(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext</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/depends.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/depends.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="options.html">options</a>, <a class="reference external" href="ast.html">ast</a>, <a class="reference external" href="ropes.html">ropes</a>, <a class="reference external" href="pathutils.html">pathutils</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="modulegraphs.html">modulegraphs</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="addDotDependency-procs-all">
<div id="addDotDependency,PPassContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#addDotDependency%2CPPassContext%2CPNode"><span class="Identifier">addDotDependency</span></a><span class="Other">(</span><span class="Identifier">c</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="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/depends.nim#L86" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/depends.nim#L86" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="generateDot-procs-all">
<div id="generateDot,ModuleGraph,AbsoluteFile">
<dt><pre><span class="Keyword">proc</span> <a href="#generateDot%2CModuleGraph%2CAbsoluteFile"><span class="Identifier">generateDot</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">project</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</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">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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/depends.nim#L101" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/depends.nim#L101" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="setupDependPass-procs-all">
<div id="setupDependPass,ModuleGraph,PSym,IdGenerator">
<dt><pre><span class="Keyword">proc</span> <a href="#setupDependPass%2CModuleGraph%2CPSym%2CIdGenerator"><span class="Identifier">setupDependPass</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">module</span><span class="Other">:</span> <a href="astdef.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><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/depends.nim#L107" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/depends.nim#L107" 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: 2026-07-10 18:29:14 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

4
compiler/depends.idx Normal file
View File

@@ -0,0 +1,4 @@
nimTitle depends depends.html module depends 0
nim addDotDependency depends.html#addDotDependency,PPassContext,PNode proc addDotDependency(c: PPassContext; n: PNode): PNode 86
nim generateDot depends.html#generateDot,ModuleGraph,AbsoluteFile proc generateDot(graph: ModuleGraph; project: AbsoluteFile) 101
nim setupDependPass depends.html#setupDependPass,ModuleGraph,PSym,IdGenerator proc setupDependPass(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext 107

144
compiler/deps.html Normal file
View File

@@ -0,0 +1,144 @@
<?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>deps</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">deps</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">commandIc
<li><a class="reference" href="#commandIc%2CConfigRef" title="commandIc(conf: ConfigRef; frontendOnly = false)">commandIc(conf: ConfigRef; frontendOnly = false)</a></li>
</ul>
<ul class="simple nested-toc-section">includerSbifs
<li><a class="reference" href="#includerSbifs%2CConfigRef%2CAbsoluteFile" title="includerSbifs(conf: ConfigRef; targetFile: AbsoluteFile): seq[string]">includerSbifs(conf: ConfigRef; targetFile: AbsoluteFile): seq[string]</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/deps.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/deps.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">Generate a .build.nif file for nifmake from a Nim project. This enables incremental and parallel compilation using the <tt class="docutils literal"><span class="pre"><span class="Identifier">m</span></span></tt> switch.</p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="options.html">options</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="pathutils.html">pathutils</a>, <a class="reference external" href="condsyms.html">condsyms</a>, <a class="reference external" href="modulepaths.html">modulepaths</a>, <a class="reference external" href="extccomp.html">extccomp</a>, <a class="reference external" href="cnif.html">cnif</a>, <a class="reference external" href="platform.html">platform</a>, <a class="reference external" href="icmodnames.html">icmodnames</a>, <a class="reference external" href="icnifcore.html">icnifcore</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="commandIc-procs-all">
<div id="commandIc,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#commandIc%2CConfigRef"><span class="Identifier">commandIc</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">frontendOnly</span> <span class="Other">=</span> <span class="Identifier">false</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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</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">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadEnvEffect</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">ExecIOEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</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>
Main entry point for <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">ic</span></span></tt>. With <tt class="docutils literal"><span class="pre"><span class="Identifier">frontendOnly</span></span></tt> (used by <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">track</span></span></tt> for IDE queries) it runs only Phase 1 — the incremental nifler + <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">m</span></span></tt> frontend that writes every module's <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">s</span><span class="Operator">.</span><span class="Identifier">bif</span></span></tt> — and skips the whole-program backend (<tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">nifc</span></span></tt> -&gt; C -&gt; link), which a goto-def / find-usages scan does not need.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/deps.nim#L1229" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/deps.nim#L1229" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="includerSbifs-procs-all">
<div id="includerSbifs,ConfigRef,AbsoluteFile">
<dt><pre><span class="Keyword">proc</span> <a href="#includerSbifs%2CConfigRef%2CAbsoluteFile"><span class="Identifier">includerSbifs</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">targetFile</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</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="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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="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>
For an include file <tt class="docutils literal"><span class="pre"><span class="Identifier">targetFile</span></span></tt>, return the <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">s</span><span class="Operator">.</span><span class="Identifier">bif</span></span></tt> paths of every module that includes it — directly OR transitively (following the include chain <tt class="docutils literal"><span class="pre"><span class="Identifier">module</span> <span class="Operator">-&gt;</span> <span class="Identifier">incA</span> <span class="Operator">-&gt;</span> <span class="Identifier">incB</span> <span class="Operator">-&gt;</span> <span class="Identifier">targetFile</span></span></tt>). <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">track</span></span></tt> uses this to avoid loading and scanning every module bif: an include file has no bif of its own, so its type-checked tokens live in the <em>including</em> module's bif. Only the small <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">deps</span><span class="Operator">.</span><span class="Identifier">nif</span></span></tt> preludes are read here, never a <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">s</span><span class="Operator">.</span><span class="Identifier">bif</span></span></tt>.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/deps.nim#L631" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/deps.nim#L631" 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: 2026-07-10 18:29:15 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

3
compiler/deps.idx Normal file
View File

@@ -0,0 +1,3 @@
nimTitle deps deps.html module deps 0
nim includerSbifs deps.html#includerSbifs,ConfigRef,AbsoluteFile proc includerSbifs(conf: ConfigRef; targetFile: AbsoluteFile): seq[string] 631
nim commandIc deps.html#commandIc,ConfigRef proc commandIc(conf: ConfigRef; frontendOnly = false) 1229

207
compiler/dfa.html Normal file
View File

@@ -0,0 +1,207 @@
<?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>dfa</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">dfa</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="#ControlFlowGraph" title="ControlFlowGraph = seq[Instr]">ControlFlowGraph</a></li>
<li><a class="reference" href="#Instr" title="Instr = object
case kind*: InstrKind
of goto, fork, loop:
dest*: int
of def, use:
n*: PNode">Instr</a></li>
<li><a class="reference" href="#InstrKind" title="InstrKind = enum
goto, loop, fork, def, use">InstrKind</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">constructCfg
<li><a class="reference" href="#constructCfg%2CPSym%2CPNode%2CPSym" title="constructCfg(s: PSym; body: PNode; root: PSym): ControlFlowGraph">constructCfg(s: PSym; body: PNode; root: PSym): ControlFlowGraph</a></li>
</ul>
<ul class="simple nested-toc-section">echoCfg
<li><a class="reference" href="#echoCfg%2CControlFlowGraph%2Cint%2Cint" title="echoCfg(c: ControlFlowGraph; start = 0; last = -1)">echoCfg(c: ControlFlowGraph; start = 0; last = -1)</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/dfa.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/dfa.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"><p>Data flow analysis for Nim. We transform the AST into a linear list of instructions first to make this easier to handle: There are only 3 different branching instructions: 'goto X' is an unconditional goto, 'fork X' is a conditional goto (either the next instruction or 'X' can be taken), 'loop X' is the only jump that jumps back.</p>
<p>Exhaustive case statements are translated so that the last branch is transformed into an 'else' branch. <tt class="docutils literal"><span class="pre">return</span></tt> and <tt class="docutils literal"><span class="pre">break</span></tt> are all covered by 'goto'.</p>
<p>The data structures and algorithms used here are inspired by &quot;A GraphFree Approach to DataFlow Analysis&quot; by Markus Mohnen. <a class="reference external" href="https://link.springer.com/content/pdf/10.1007/3-540-45937-5_6.pdf">https://link.springer.com/content/pdf/10.1007/3-540-45937-5_6.pdf</a></p>
</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="lineinfos.html">lineinfos</a>, <a class="reference external" href="renderer.html">renderer</a>, <a class="reference external" href="aliasanalysis.html">aliasanalysis</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="ControlFlowGraph">
<dt><pre><a href="#ControlFlowGraph"><span class="Identifier">ControlFlowGraph</span></a> <span class="Other">=</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="#Instr"><span class="Identifier">Instr</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/dfa.nim#L41" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/dfa.nim#L41" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="Instr">
<dt><pre><a href="#Instr"><span class="Identifier">Instr</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Keyword">case</span> <span class="Identifier">kind</span><span class="Operator">*</span><span class="Other">:</span> <a href="#InstrKind"><span class="Identifier">InstrKind</span></a>
<span class="Keyword">of</span> <span class="Identifier">goto</span><span class="Other">,</span> <span class="Identifier">fork</span><span class="Other">,</span> <span class="Identifier">loop</span><span class="Other">:</span>
<span class="Identifier">dest</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span>
<span class="Keyword">of</span> <span class="Identifier">def</span><span class="Other">,</span> <span class="Identifier">use</span><span class="Other">:</span>
<span class="Identifier">n</span><span class="Operator">*</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/dfa.nim#L35" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/dfa.nim#L35" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="InstrKind">
<dt><pre><a href="#InstrKind"><span class="Identifier">InstrKind</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">goto</span><span class="Other">,</span> <span class="Identifier">loop</span><span class="Other">,</span> <span class="Identifier">fork</span><span class="Other">,</span> <span class="Identifier">def</span><span class="Other">,</span> <span class="Identifier">use</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/dfa.nim#L33" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/dfa.nim#L33" 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="constructCfg-procs-all">
<div id="constructCfg,PSym,PNode,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#constructCfg%2CPSym%2CPNode%2CPSym"><span class="Identifier">constructCfg</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">body</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">root</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <a href="#ControlFlowGraph"><span class="Identifier">ControlFlowGraph</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">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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>
constructs a control flow graph for <tt class="docutils literal"><span class="pre">body</span></tt>.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/dfa.nim#L479" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/dfa.nim#L479" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="echoCfg-procs-all">
<div id="echoCfg,ControlFlowGraph,int,int">
<dt><pre><span class="Keyword">proc</span> <a href="#echoCfg%2CControlFlowGraph%2Cint%2Cint"><span class="Identifier">echoCfg</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="#ControlFlowGraph"><span class="Identifier">ControlFlowGraph</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">;</span> <span class="Identifier">last</span> <span class="Other">=</span> <span class="DecNumber">-1</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">deprecated</span><span class="Other">,</span>
<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>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
echos the ControlFlowGraph for debugging purposes.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/dfa.nim#L88" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/dfa.nim#L88" 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: 2026-07-10 18:29:11 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

11
compiler/dfa.idx Normal file
View File

@@ -0,0 +1,11 @@
nimTitle dfa dfa.html module dfa 0
nim goto dfa.html#goto InstrKind.goto 33
nim loop dfa.html#loop InstrKind.loop 33
nim fork dfa.html#fork InstrKind.fork 33
nim def dfa.html#def InstrKind.def 33
nim use dfa.html#use InstrKind.use 33
nim InstrKind dfa.html#InstrKind enum InstrKind 33
nim Instr dfa.html#Instr object Instr 35
nim ControlFlowGraph dfa.html#ControlFlowGraph type ControlFlowGraph 41
nim echoCfg dfa.html#echoCfg,ControlFlowGraph,int,int proc echoCfg(c: ControlFlowGraph; start = 0; last = -1) 88
nim constructCfg dfa.html#constructCfg,PSym,PNode,PSym proc constructCfg(s: PSym; body: PNode; root: PSym): ControlFlowGraph 479

501
compiler/docgen.html Normal file
View File

@@ -0,0 +1,501 @@
<?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>docgen</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">docgen</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="#PDoc" title="PDoc = ref TDocumentor">PDoc</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">commandBuildIndex
<li><a class="reference" href="#commandBuildIndex%2CConfigRef%2Cstring" title="commandBuildIndex(conf: ConfigRef; dir: string; outFile = RelativeFile&quot;&quot;)">commandBuildIndex(conf: ConfigRef; dir: string; outFile = RelativeFile&quot;&quot;)</a></li>
</ul>
<ul class="simple nested-toc-section">commandBuildIndexJson
<li><a class="reference" href="#commandBuildIndexJson%2CConfigRef%2Cstring" title="commandBuildIndexJson(conf: ConfigRef; dir: string; outFile = RelativeFile&quot;&quot;)">commandBuildIndexJson(conf: ConfigRef; dir: string; outFile = RelativeFile&quot;&quot;)</a></li>
</ul>
<ul class="simple nested-toc-section">commandDoc
<li><a class="reference" href="#commandDoc%2CIdentCache%2CConfigRef" title="commandDoc(cache: IdentCache; conf: ConfigRef)">commandDoc(cache: IdentCache; conf: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">commandJson
<li><a class="reference" href="#commandJson%2CIdentCache%2CConfigRef" title="commandJson(cache: IdentCache; conf: ConfigRef)">commandJson(cache: IdentCache; conf: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">commandRst2Html
<li><a class="reference" href="#commandRst2Html%2CIdentCache%2CConfigRef" title="commandRst2Html(cache: IdentCache; conf: ConfigRef; preferMarkdown = false)">commandRst2Html(cache: IdentCache; conf: ConfigRef; preferMarkdown = false)</a></li>
</ul>
<ul class="simple nested-toc-section">commandRst2TeX
<li><a class="reference" href="#commandRst2TeX%2CIdentCache%2CConfigRef" title="commandRst2TeX(cache: IdentCache; conf: ConfigRef; preferMarkdown = false)">commandRst2TeX(cache: IdentCache; conf: ConfigRef; preferMarkdown = false)</a></li>
</ul>
<ul class="simple nested-toc-section">commandTags
<li><a class="reference" href="#commandTags%2CIdentCache%2CConfigRef" title="commandTags(cache: IdentCache; conf: ConfigRef)">commandTags(cache: IdentCache; conf: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">documentRaises
<li><a class="reference" href="#documentRaises%2CIdentCache%2CPNode" title="documentRaises(cache: IdentCache; n: PNode)">documentRaises(cache: IdentCache; n: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">finishGenerateDoc
<li><a class="reference" href="#finishGenerateDoc%2CPDoc" title="finishGenerateDoc(d: var PDoc)">finishGenerateDoc(d: var PDoc)</a></li>
</ul>
<ul class="simple nested-toc-section">generateDoc
<li><a class="reference" href="#generateDoc%2CPDoc%2CPNode%2CPNode%2CConfigRef%2CDocFlags" title="generateDoc(d: PDoc; n, orig: PNode; config: ConfigRef;
docFlags: DocFlags = kDefault)">generateDoc(d: PDoc; n, orig: PNode; config: ConfigRef;
docFlags: DocFlags = kDefault)</a></li>
</ul>
<ul class="simple nested-toc-section">generateIndex
<li><a class="reference" href="#generateIndex%2CPDoc" title="generateIndex(d: PDoc)">generateIndex(d: PDoc)</a></li>
</ul>
<ul class="simple nested-toc-section">generateJson
<li><a class="reference" href="#generateJson%2CPDoc%2CPNode%2CConfigRef%2Cbool" title="generateJson(d: PDoc; n: PNode; config: ConfigRef; includeComments: bool = true)">generateJson(d: PDoc; n: PNode; config: ConfigRef; includeComments: bool = true)</a></li>
</ul>
<ul class="simple nested-toc-section">generateTags
<li><a class="reference" href="#generateTags%2CPDoc%2CPNode%2Cstring" title="generateTags(d: PDoc; n: PNode; r: var string)">generateTags(d: PDoc; n: PNode; r: var string)</a></li>
</ul>
<ul class="simple nested-toc-section">handleDocOutputOptions
<li><a class="reference" href="#handleDocOutputOptions%2CConfigRef" title="handleDocOutputOptions(conf: ConfigRef)">handleDocOutputOptions(conf: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">newDocumentor
<li><a class="reference" href="#newDocumentor%2CAbsoluteFile%2CIdentCache%2CConfigRef%2Cstring%2CPSym" title="newDocumentor(filename: AbsoluteFile; cache: IdentCache; conf: ConfigRef;
outExt: string = HtmlExt; module: PSym = nil;
standaloneDoc = false; preferMarkdown = true; hasToc = true): PDoc">newDocumentor(filename: AbsoluteFile; cache: IdentCache; conf: ConfigRef;
outExt: string = HtmlExt; module: PSym = nil;
standaloneDoc = false; preferMarkdown = true; hasToc = true): PDoc</a></li>
</ul>
<ul class="simple nested-toc-section">presentationPath
<li><a class="reference" href="#presentationPath%2CConfigRef%2CAbsoluteFile" title="presentationPath(conf: ConfigRef; file: AbsoluteFile): RelativeFile">presentationPath(conf: ConfigRef; file: AbsoluteFile): RelativeFile</a></li>
</ul>
<ul class="simple nested-toc-section">writeOutput
<li><a class="reference" href="#writeOutput%2CPDoc" title="writeOutput(d: PDoc; useWarning = false; groupedToc = false)">writeOutput(d: PDoc; useWarning = false; groupedToc = false)</a></li>
</ul>
<ul class="simple nested-toc-section">writeOutputJson
<li><a class="reference" href="#writeOutputJson%2CPDoc" title="writeOutputJson(d: PDoc; useWarning = false)">writeOutputJson(d: PDoc; useWarning = false)</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/docgen.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">This is the Nim documentation generator. Cross-references are generated by knowing how the anchors are going to be named.<p>For corresponding users' documentation see <a class="reference external" href="../docgen.html">Nim DocGen Tools Guide</a>.</p>
</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="options.html">options</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="wordrecg.html">wordrecg</a>, <a class="reference external" href="syntaxes.html">syntaxes</a>, <a class="reference external" href="renderer.html">renderer</a>, <a class="reference external" href="lexer.html">lexer</a>, <a class="reference external" href="trees.html">trees</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="typesrenderer.html">typesrenderer</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="pathutils.html">pathutils</a>, <a class="reference external" href="nimpaths.html">nimpaths</a>, <a class="reference external" href="renderverbatim.html">renderverbatim</a>, <a class="reference external" href="packages.html">packages</a>, <a class="reference external" href="nodejs.html">nodejs</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="PDoc">
<dt><pre><a href="#PDoc"><span class="Identifier">PDoc</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Identifier">TDocumentor</span></pre></dt>
<dd>
Alias to type less.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/docgen.nim#L111" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L111" 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="commandBuildIndex-procs-all">
<div id="commandBuildIndex,ConfigRef,string">
<dt><pre><span class="Keyword">proc</span> <a href="#commandBuildIndex%2CConfigRef%2Cstring"><span class="Identifier">commandBuildIndex</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">dir</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">outFile</span> <span class="Other">=</span> <a href="pathutils.html#RelativeFile"><span class="Identifier">RelativeFile</span></a><span class="StringLit">&quot;&quot;</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">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">,</span>
<span class="Identifier">ReadEnvEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/docgen.nim#L1935" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1935" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="commandBuildIndexJson-procs-all">
<div id="commandBuildIndexJson,ConfigRef,string">
<dt><pre><span class="Keyword">proc</span> <a href="#commandBuildIndexJson%2CConfigRef%2Cstring"><span class="Identifier">commandBuildIndexJson</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">dir</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">outFile</span> <span class="Other">=</span> <a href="pathutils.html#RelativeFile"><span class="Identifier">RelativeFile</span></a><span class="StringLit">&quot;&quot;</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">OSError</span><span class="Other">,</span>
<span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">RootEffect</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/docgen.nim#L1958" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1958" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="commandDoc-procs-all">
<div id="commandDoc,IdentCache,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#commandDoc%2CIdentCache%2CConfigRef"><span class="Identifier">commandDoc</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">conf</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</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="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ExecIOEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</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>
implementation of deprecated <tt class="docutils literal"><span class="pre">doc0</span></tt> command (without semantic checking)
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/docgen.nim#L1848" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1848" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="commandJson-procs-all">
<div id="commandJson,IdentCache,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#commandJson%2CIdentCache%2CConfigRef"><span class="Identifier">commandJson</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">conf</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</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">ValueError</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="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span>
<span class="Identifier">ValueError</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="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="Identifier">WriteDirEffect</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>
implementation of a deprecated jsondoc0 command
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/docgen.nim#L1884" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1884" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="commandRst2Html-procs-all">
<div id="commandRst2Html,IdentCache,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#commandRst2Html%2CIdentCache%2CConfigRef"><span class="Identifier">commandRst2Html</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">conf</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</span></a><span class="Other">;</span> <span class="Identifier">preferMarkdown</span> <span class="Other">=</span> <span class="Identifier">false</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">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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">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="Identifier">ReadIOEffect</span><span class="Other">,</span>
<span class="Identifier">ReadEnvEffect</span><span class="Other">,</span> <span class="Identifier">ExecIOEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</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/docgen.nim#L1876" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1876" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="commandRst2TeX-procs-all">
<div id="commandRst2TeX,IdentCache,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#commandRst2TeX%2CIdentCache%2CConfigRef"><span class="Identifier">commandRst2TeX</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">conf</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</span></a><span class="Other">;</span> <span class="Identifier">preferMarkdown</span> <span class="Other">=</span> <span class="Identifier">false</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">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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">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="Identifier">ReadIOEffect</span><span class="Other">,</span>
<span class="Identifier">ReadEnvEffect</span><span class="Other">,</span> <span class="Identifier">ExecIOEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</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/docgen.nim#L1880" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1880" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="commandTags-procs-all">
<div id="commandTags,IdentCache,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#commandTags%2CIdentCache%2CConfigRef"><span class="Identifier">commandTags</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">conf</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</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">ValueError</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="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span>
<span class="Identifier">ValueError</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="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="Identifier">WriteDirEffect</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/docgen.nim#L1911" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1911" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="documentRaises-procs-all">
<div id="documentRaises,IdentCache,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#documentRaises%2CIdentCache%2CPNode"><span class="Identifier">documentRaises</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">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/docgen.nim#L1353" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1353" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="finishGenerateDoc-procs-all">
<div id="finishGenerateDoc,PDoc">
<dt><pre><span class="Keyword">proc</span> <a href="#finishGenerateDoc%2CPDoc"><span class="Identifier">finishGenerateDoc</span></a><span class="Other">(</span><span class="Identifier">d</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#PDoc"><span class="Identifier">PDoc</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">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span>
<span class="Identifier">OSError</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">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</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>
Perform 2nd RST pass for resolution of links/footnotes/headings...
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/docgen.nim#L1461" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1461" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="generateDoc-procs-all">
<div id="generateDoc,PDoc,PNode,PNode,ConfigRef,DocFlags">
<dt><pre><span class="Keyword">proc</span> <a href="#generateDoc%2CPDoc%2CPNode%2CPNode%2CConfigRef%2CDocFlags"><span class="Identifier">generateDoc</span></a><span class="Other">(</span><span class="Identifier">d</span><span class="Other">:</span> <a href="#PDoc"><span class="Identifier">PDoc</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">,</span> <span class="Identifier">orig</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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="Identifier">docFlags</span><span class="Other">:</span> <span class="Identifier">DocFlags</span> <span class="Other">=</span> <span class="Identifier">kDefault</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">ValueError</span><span class="Other">,</span>
<span class="Identifier">Exception</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="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="Identifier">WriteDirEffect</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>
Goes through nim nodes recursively and collects doc comments. Main function for <tt class="docutils literal"><span class="pre option">doc</span></tt> command, which is implemented in <tt class="docutils literal"><span class="pre">docgen2.nim</span></tt>.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/docgen.nim#L1373" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1373" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="generateIndex-procs-all">
<div id="generateIndex,PDoc">
<dt><pre><span class="Keyword">proc</span> <a href="#generateIndex%2CPDoc"><span class="Identifier">generateIndex</span></a><span class="Other">(</span><span class="Identifier">d</span><span class="Other">:</span> <a href="#PDoc"><span class="Identifier">PDoc</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">OSError</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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="Identifier">WriteDirEffect</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/docgen.nim#L1774" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1774" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="generateJson-procs-all">
<div id="generateJson,PDoc,PNode,ConfigRef,bool">
<dt><pre><span class="Keyword">proc</span> <a href="#generateJson%2CPDoc%2CPNode%2CConfigRef%2Cbool"><span class="Identifier">generateJson</span></a><span class="Other">(</span><span class="Identifier">d</span><span class="Other">:</span> <a href="#PDoc"><span class="Identifier">PDoc</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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="Identifier">includeComments</span><span class="Other">:</span> <span class="Identifier">bool</span> <span class="Other">=</span> <span class="Identifier">true</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="Identifier">ValueError</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="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="Identifier">WriteDirEffect</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/docgen.nim#L1577" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1577" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="generateTags-procs-all">
<div id="generateTags,PDoc,PNode,string">
<dt><pre><span class="Keyword">proc</span> <a href="#generateTags%2CPDoc%2CPNode%2Cstring"><span class="Identifier">generateTags</span></a><span class="Other">(</span><span class="Identifier">d</span><span class="Other">:</span> <a href="#PDoc"><span class="Identifier">PDoc</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">r</span><span class="Other">:</span> <span class="Keyword">var</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="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/docgen.nim#L1622" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1622" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="handleDocOutputOptions-procs-all">
<div id="handleDocOutputOptions,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#handleDocOutputOptions%2CConfigRef"><span class="Identifier">handleDocOutputOptions</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><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="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/docgen.nim#L1841" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1841" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="newDocumentor-procs-all">
<div id="newDocumentor,AbsoluteFile,IdentCache,ConfigRef,string,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#newDocumentor%2CAbsoluteFile%2CIdentCache%2CConfigRef%2Cstring%2CPSym"><span class="Identifier">newDocumentor</span></a><span class="Other">(</span><span class="Identifier">filename</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</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">conf</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</span></a><span class="Other">;</span>
<span class="Identifier">outExt</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Other">=</span> <span class="Identifier">HtmlExt</span><span class="Other">;</span> <span class="Identifier">module</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a> <span class="Other">=</span> <span class="Keyword">nil</span><span class="Other">;</span>
<span class="Identifier">standaloneDoc</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span> <span class="Identifier">preferMarkdown</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">;</span> <span class="Identifier">hasToc</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">)</span><span class="Other">:</span> <a href="#PDoc"><span class="Identifier">PDoc</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">ValueError</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="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">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="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/docgen.nim#L324" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L324" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="presentationPath-procs-all">
<div id="presentationPath,ConfigRef,AbsoluteFile">
<dt><pre><span class="Keyword">proc</span> <a href="#presentationPath%2CConfigRef%2CAbsoluteFile"><span class="Identifier">presentationPath</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">file</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</span></a><span class="Other">)</span><span class="Other">:</span> <a href="pathutils.html#RelativeFile"><span class="Identifier">RelativeFile</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">ValueError</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="Identifier">Exception</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>
returns a relative file that will be appended to outDir
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/docgen.nim#L178" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L178" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="writeOutput-procs-all">
<div id="writeOutput,PDoc">
<dt><pre><span class="Keyword">proc</span> <a href="#writeOutput%2CPDoc"><span class="Identifier">writeOutput</span></a><span class="Other">(</span><span class="Identifier">d</span><span class="Other">:</span> <a href="#PDoc"><span class="Identifier">PDoc</span></a><span class="Other">;</span> <span class="Identifier">useWarning</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span> <span class="Identifier">groupedToc</span> <span class="Other">=</span> <span class="Identifier">false</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">ValueError</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="Identifier">Exception</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="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ExecIOEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</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/docgen.nim#L1786" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1786" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="writeOutputJson-procs-all">
<div id="writeOutputJson,PDoc">
<dt><pre><span class="Keyword">proc</span> <a href="#writeOutputJson%2CPDoc"><span class="Identifier">writeOutputJson</span></a><span class="Other">(</span><span class="Identifier">d</span><span class="Other">:</span> <a href="#PDoc"><span class="Identifier">PDoc</span></a><span class="Other">;</span> <span class="Identifier">useWarning</span> <span class="Other">=</span> <span class="Identifier">false</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">OSError</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">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</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">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ExecIOEffect</span><span class="Other">,</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</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/docgen.nim#L1817" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen.nim#L1817" 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: 2026-07-10 18:29:15 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

20
compiler/docgen.idx Normal file
View File

@@ -0,0 +1,20 @@
nimTitle docgen docgen.html module docgen 0
nim PDoc docgen.html#PDoc type PDoc 111
nim presentationPath docgen.html#presentationPath,ConfigRef,AbsoluteFile proc presentationPath(conf: ConfigRef; file: AbsoluteFile): RelativeFile 178
nim newDocumentor docgen.html#newDocumentor,AbsoluteFile,IdentCache,ConfigRef,string,PSym proc newDocumentor(filename: AbsoluteFile; cache: IdentCache; conf: ConfigRef;\n outExt: string = HtmlExt; module: PSym = nil;\n standaloneDoc = false; preferMarkdown = true; hasToc = true): PDoc 324
nim documentRaises docgen.html#documentRaises,IdentCache,PNode proc documentRaises(cache: IdentCache; n: PNode) 1353
nim generateDoc docgen.html#generateDoc,PDoc,PNode,PNode,ConfigRef,DocFlags proc generateDoc(d: PDoc; n, orig: PNode; config: ConfigRef;\n docFlags: DocFlags = kDefault) 1373
nim finishGenerateDoc docgen.html#finishGenerateDoc,PDoc proc finishGenerateDoc(d: var PDoc) 1461
nim generateJson docgen.html#generateJson,PDoc,PNode,ConfigRef,bool proc generateJson(d: PDoc; n: PNode; config: ConfigRef; includeComments: bool = true) 1577
nim generateTags docgen.html#generateTags,PDoc,PNode,string proc generateTags(d: PDoc; n: PNode; r: var string) 1622
nim generateIndex docgen.html#generateIndex,PDoc proc generateIndex(d: PDoc) 1774
nim writeOutput docgen.html#writeOutput,PDoc proc writeOutput(d: PDoc; useWarning = false; groupedToc = false) 1786
nim writeOutputJson docgen.html#writeOutputJson,PDoc proc writeOutputJson(d: PDoc; useWarning = false) 1817
nim handleDocOutputOptions docgen.html#handleDocOutputOptions,ConfigRef proc handleDocOutputOptions(conf: ConfigRef) 1841
nim commandDoc docgen.html#commandDoc,IdentCache,ConfigRef proc commandDoc(cache: IdentCache; conf: ConfigRef) 1848
nim commandRst2Html docgen.html#commandRst2Html,IdentCache,ConfigRef proc commandRst2Html(cache: IdentCache; conf: ConfigRef; preferMarkdown = false) 1876
nim commandRst2TeX docgen.html#commandRst2TeX,IdentCache,ConfigRef proc commandRst2TeX(cache: IdentCache; conf: ConfigRef; preferMarkdown = false) 1880
nim commandJson docgen.html#commandJson,IdentCache,ConfigRef proc commandJson(cache: IdentCache; conf: ConfigRef) 1884
nim commandTags docgen.html#commandTags,IdentCache,ConfigRef proc commandTags(cache: IdentCache; conf: ConfigRef) 1911
nim commandBuildIndex docgen.html#commandBuildIndex,ConfigRef,string proc commandBuildIndex(conf: ConfigRef; dir: string; outFile = RelativeFile"") 1935
nim commandBuildIndexJson docgen.html#commandBuildIndexJson,ConfigRef,string proc commandBuildIndexJson(conf: ConfigRef; dir: string; outFile = RelativeFile"") 1958

247
compiler/docgen2.html Normal file
View File

@@ -0,0 +1,247 @@
<?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>docgen2</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">docgen2</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">closeDoc
<li><a class="reference" href="#closeDoc%2CModuleGraph%2CPPassContext%2CPNode" title="closeDoc(graph: ModuleGraph; p: PPassContext; n: PNode): PNode">closeDoc(graph: ModuleGraph; p: PPassContext; n: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">closeJson
<li><a class="reference" href="#closeJson%2CModuleGraph%2CPPassContext%2CPNode" title="closeJson(graph: ModuleGraph; p: PPassContext; n: PNode): PNode">closeJson(graph: ModuleGraph; p: PPassContext; n: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">openHtml
<li><a class="reference" href="#openHtml%2CModuleGraph%2CPSym%2CIdGenerator" title="openHtml(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext">openHtml(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext</a></li>
</ul>
<ul class="simple nested-toc-section">openJson
<li><a class="reference" href="#openJson%2CModuleGraph%2CPSym%2CIdGenerator" title="openJson(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext">openJson(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext</a></li>
</ul>
<ul class="simple nested-toc-section">openTex
<li><a class="reference" href="#openTex%2CModuleGraph%2CPSym%2CIdGenerator" title="openTex(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext">openTex(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext</a></li>
</ul>
<ul class="simple nested-toc-section">processNode
<li><a class="reference" href="#processNode%2CPPassContext%2CPNode" title="processNode(c: PPassContext; n: PNode): PNode">processNode(c: PPassContext; n: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">processNodeJson
<li><a class="reference" href="#processNodeJson%2CPPassContext%2CPNode" title="processNodeJson(c: PPassContext; n: PNode): PNode">processNodeJson(c: PPassContext; n: PNode): PNode</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/docgen2.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen2.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="options.html">options</a>, <a class="reference external" href="ast.html">ast</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="docgen.html">docgen</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="pathutils.html">pathutils</a>, <a class="reference external" href="packages.html">packages</a>, <a class="reference external" href="modulegraphs.html">modulegraphs</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="closeDoc-procs-all">
<div id="closeDoc,ModuleGraph,PPassContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#closeDoc%2CModuleGraph%2CPPassContext%2CPNode"><span class="Identifier">closeDoc</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">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="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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">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="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ExecIOEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</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/docgen2.nim#L41" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen2.nim#L41" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="closeJson-procs-all">
<div id="closeJson,ModuleGraph,PPassContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#closeJson%2CModuleGraph%2CPPassContext%2CPNode"><span class="Identifier">closeJson</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">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="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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">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="Identifier">ExecIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</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/docgen2.nim#L46" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen2.nim#L46" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="openHtml-procs-all">
<div id="openHtml,ModuleGraph,PSym,IdGenerator">
<dt><pre><span class="Keyword">proc</span> <a href="#openHtml%2CModuleGraph%2CPSym%2CIdGenerator"><span class="Identifier">openHtml</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">module</span><span class="Other">:</span> <a href="astdef.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><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">ValueError</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="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">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="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/docgen2.nim#L73" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen2.nim#L73" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="openJson-procs-all">
<div id="openJson,ModuleGraph,PSym,IdGenerator">
<dt><pre><span class="Keyword">proc</span> <a href="#openJson%2CModuleGraph%2CPSym%2CIdGenerator"><span class="Identifier">openJson</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">module</span><span class="Other">:</span> <a href="astdef.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><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">ValueError</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="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">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="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/docgen2.nim#L79" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen2.nim#L79" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="openTex-procs-all">
<div id="openTex,ModuleGraph,PSym,IdGenerator">
<dt><pre><span class="Keyword">proc</span> <a href="#openTex%2CModuleGraph%2CPSym%2CIdGenerator"><span class="Identifier">openTex</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">module</span><span class="Other">:</span> <a href="astdef.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><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">ValueError</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="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">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="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/docgen2.nim#L76" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen2.nim#L76" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="processNode-procs-all">
<div id="processNode,PPassContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#processNode%2CPPassContext%2CPNode"><span class="Identifier">processNode</span></a><span class="Other">(</span><span class="Identifier">c</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="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</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">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="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="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/docgen2.nim#L51" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen2.nim#L51" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="processNodeJson-procs-all">
<div id="processNodeJson,PPassContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#processNodeJson%2CPPassContext%2CPNode"><span class="Identifier">processNodeJson</span></a><span class="Other">(</span><span class="Identifier">c</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="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="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="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/docgen2.nim#L57" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/docgen2.nim#L57" 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: 2026-07-10 18:29:15 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

8
compiler/docgen2.idx Normal file
View File

@@ -0,0 +1,8 @@
nimTitle docgen2 docgen2.html module docgen2 0
nim closeDoc docgen2.html#closeDoc,ModuleGraph,PPassContext,PNode proc closeDoc(graph: ModuleGraph; p: PPassContext; n: PNode): PNode 41
nim closeJson docgen2.html#closeJson,ModuleGraph,PPassContext,PNode proc closeJson(graph: ModuleGraph; p: PPassContext; n: PNode): PNode 46
nim processNode docgen2.html#processNode,PPassContext,PNode proc processNode(c: PPassContext; n: PNode): PNode 51
nim processNodeJson docgen2.html#processNodeJson,PPassContext,PNode proc processNodeJson(c: PPassContext; n: PNode): PNode 57
nim openHtml docgen2.html#openHtml,ModuleGraph,PSym,IdGenerator proc openHtml(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext 73
nim openTex docgen2.html#openTex,ModuleGraph,PSym,IdGenerator proc openTex(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext 76
nim openJson docgen2.html#openJson,ModuleGraph,PSym,IdGenerator proc openJson(graph: ModuleGraph; module: PSym; idgen: IdGenerator): PPassContext 79

1728
compiler/dochack.js Normal file

File diff suppressed because it is too large Load Diff

148
compiler/enumtostr.html Normal file
View File

@@ -0,0 +1,148 @@
<?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>enumtostr</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">enumtostr</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">genCaseObjDiscMapping
<li><a class="reference" href="#genCaseObjDiscMapping%2CPType%2CPSym%2CTLineInfo%2CModuleGraph%2CIdGenerator" title="genCaseObjDiscMapping(t: PType; field: PSym; info: TLineInfo; g: ModuleGraph;
idgen: IdGenerator): PSym">genCaseObjDiscMapping(t: PType; field: PSym; info: TLineInfo; g: ModuleGraph;
idgen: IdGenerator): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">genEnumToStrProc
<li><a class="reference" href="#genEnumToStrProc%2CPType%2CTLineInfo%2CModuleGraph%2CIdGenerator" title="genEnumToStrProc(t: PType; info: TLineInfo; g: ModuleGraph; idgen: IdGenerator): PSym">genEnumToStrProc(t: PType; info: TLineInfo; g: ModuleGraph; idgen: IdGenerator): PSym</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/enumtostr.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/enumtostr.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></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="idents.html">idents</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="modulegraphs.html">modulegraphs</a>, <a class="reference external" href="magicsys.html">magicsys</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="genCaseObjDiscMapping-procs-all">
<div id="genCaseObjDiscMapping,PType,PSym,TLineInfo,ModuleGraph,IdGenerator">
<dt><pre><span class="Keyword">proc</span> <a href="#genCaseObjDiscMapping%2CPType%2CPSym%2CTLineInfo%2CModuleGraph%2CIdGenerator"><span class="Identifier">genCaseObjDiscMapping</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</span></a><span class="Other">;</span> <span class="Identifier">field</span><span class="Other">:</span> <a href="astdef.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">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="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/enumtostr.nim#L74" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/enumtostr.nim#L74" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="genEnumToStrProc-procs-all">
<div id="genEnumToStrProc,PType,TLineInfo,ModuleGraph,IdGenerator">
<dt><pre><span class="Keyword">proc</span> <a href="#genEnumToStrProc%2CPType%2CTLineInfo%2CModuleGraph%2CIdGenerator"><span class="Identifier">genEnumToStrProc</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</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">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="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/enumtostr.nim#L8" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/enumtostr.nim#L8" 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: 2026-07-10 18:29:13 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

3
compiler/enumtostr.idx Normal file
View File

@@ -0,0 +1,3 @@
nimTitle enumtostr enumtostr.html module enumtostr 0
nim genEnumToStrProc enumtostr.html#genEnumToStrProc,PType,TLineInfo,ModuleGraph,IdGenerator proc genEnumToStrProc(t: PType; info: TLineInfo; g: ModuleGraph; idgen: IdGenerator): PSym 8
nim genCaseObjDiscMapping enumtostr.html#genCaseObjDiscMapping,PType,PSym,TLineInfo,ModuleGraph,IdGenerator proc genCaseObjDiscMapping(t: PType; field: PSym; info: TLineInfo; g: ModuleGraph;\n idgen: IdGenerator): PSym 74

200
compiler/errorhandling.html Normal file
View File

@@ -0,0 +1,200 @@
<?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>errorhandling</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">errorhandling</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="#ErrorKind" title="ErrorKind = enum
RawTypeMismatchError, ExpressionCannotBeCalled, CustomError,
WrongNumberOfArguments, AmbiguousCall">ErrorKind</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">errorSubNode
<li><a class="reference" href="#errorSubNode%2CPNode" title="errorSubNode(n: PNode): PNode">errorSubNode(n: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">errorToString
<li><a class="reference" href="#errorToString%2CConfigRef%2CPNode" title="errorToString(config: ConfigRef; n: PNode): string">errorToString(config: ConfigRef; n: PNode): string</a></li>
</ul>
<ul class="simple nested-toc-section">newError
<li><a class="reference" href="#newError%2CPNode%2CErrorKind%2Cvarargs%5BPNode%5D" title="newError(wrongNode: PNode; k: ErrorKind; args: varargs[PNode]): PNode">newError(wrongNode: PNode; k: ErrorKind; args: varargs[PNode]): PNode</a></li>
<li><a class="reference" href="#newError%2CPNode%2Cstring" title="newError(wrongNode: PNode; msg: string): PNode">newError(wrongNode: PNode; msg: string): PNode</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/errorhandling.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/errorhandling.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">This module contains support code for new-styled error handling via an <tt class="docutils literal"><span class="pre"><span class="Identifier">nkError</span></span></tt> node kind.</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="renderer.html">renderer</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="types.html">types</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="ErrorKind">
<dt><pre><a href="#ErrorKind"><span class="Identifier">ErrorKind</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">RawTypeMismatchError</span><span class="Other">,</span> <span class="Identifier">ExpressionCannotBeCalled</span><span class="Other">,</span> <span class="Identifier">CustomError</span><span class="Other">,</span>
<span class="Identifier">WrongNumberOfArguments</span><span class="Other">,</span> <span class="Identifier">AmbiguousCall</span></pre></dt>
<dd>
expand as you need.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/errorhandling.nim#L20" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/errorhandling.nim#L20" 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="errorSubNode-procs-all">
<div id="errorSubNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#errorSubNode%2CPNode"><span class="Identifier">errorSubNode</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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/errorhandling.nim#L27" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/errorhandling.nim#L27" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="errorToString-procs-all">
<div id="errorToString,ConfigRef,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#errorToString%2CConfigRef%2CPNode"><span class="Identifier">errorToString</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="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">ValueError</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">OSError</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">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/errorhandling.nim#L61" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/errorhandling.nim#L61" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="newError-procs-all">
<div id="newError,PNode,ErrorKind,varargs[PNode]">
<dt><pre><span class="Keyword">proc</span> <a href="#newError%2CPNode%2CErrorKind%2Cvarargs%5BPNode%5D"><span class="Identifier">newError</span></a><span class="Other">(</span><span class="Identifier">wrongNode</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">k</span><span class="Other">:</span> <a href="#ErrorKind"><span class="Identifier">ErrorKind</span></a><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">varargs</span><span class="Other">[</span><a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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="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/errorhandling.nim#L39" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/errorhandling.nim#L39" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="newError,PNode,string">
<dt><pre><span class="Keyword">proc</span> <a href="#newError%2CPNode%2Cstring"><span class="Identifier">newError</span></a><span class="Other">(</span><span class="Identifier">wrongNode</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">msg</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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="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/errorhandling.nim#L50" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/errorhandling.nim#L50" 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: 2026-07-10 18:29:09 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

View File

@@ -0,0 +1,12 @@
nimTitle errorhandling errorhandling.html module errorhandling 0
nim RawTypeMismatchError errorhandling.html#RawTypeMismatchError ErrorKind.RawTypeMismatchError 20
nim ExpressionCannotBeCalled errorhandling.html#ExpressionCannotBeCalled ErrorKind.ExpressionCannotBeCalled 20
nim CustomError errorhandling.html#CustomError ErrorKind.CustomError 20
nim WrongNumberOfArguments errorhandling.html#WrongNumberOfArguments ErrorKind.WrongNumberOfArguments 20
nim AmbiguousCall errorhandling.html#AmbiguousCall ErrorKind.AmbiguousCall 20
nim ErrorKind errorhandling.html#ErrorKind enum ErrorKind 20
nim errorSubNode errorhandling.html#errorSubNode,PNode proc errorSubNode(n: PNode): PNode 27
nim newError errorhandling.html#newError,PNode,ErrorKind,varargs[PNode] proc newError(wrongNode: PNode; k: ErrorKind; args: varargs[PNode]): PNode 39
nim newError errorhandling.html#newError,PNode,string proc newError(wrongNode: PNode; msg: string): PNode 50
nim errorToString errorhandling.html#errorToString,ConfigRef,PNode proc errorToString(config: ConfigRef; n: PNode): string 61
nimgrp newerror errorhandling.html#newError-procs-all proc 39

171
compiler/evaltempl.html Normal file
View File

@@ -0,0 +1,171 @@
<?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>evaltempl</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">evaltempl</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="#10" id="60">Consts</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#evalTemplateLimit" title="evalTemplateLimit = 1000">evalTemplateLimit</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">evalTemplate
<li><a class="reference" href="#evalTemplate%2CPNode%2CPSym%2CPSym%2CConfigRef%2CIdentCache%2Cref.int%2CIdGenerator" title="evalTemplate(n: PNode; tmpl, genSymOwner: PSym; conf: ConfigRef; ic: IdentCache;
instID: ref int; idgen: IdGenerator; fromHlo = false): PNode">evalTemplate(n: PNode; tmpl, genSymOwner: PSym; conf: ConfigRef; ic: IdentCache;
instID: ref int; idgen: IdGenerator; fromHlo = false): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">wrapInComesFrom
<li><a class="reference" href="#wrapInComesFrom%2CTLineInfo%2CPSym%2CPNode" title="wrapInComesFrom(info: TLineInfo; sym: PSym; res: PNode): PNode">wrapInComesFrom(info: TLineInfo; sym: PSym; res: PNode): PNode</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/evaltempl.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/evaltempl.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">Template evaluation engine. Now hygienic.</p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="options.html">options</a>, <a class="reference external" href="ast.html">ast</a>, <a class="reference external" href="astalgo.html">astalgo</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="renderer.html">renderer</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="trees.html">trees</a>
</dl>
</div>
<div class="section" id="10">
<h1><a class="toc-backref" href="#10">Consts</a></h1>
<dl class="item">
<div id="evalTemplateLimit">
<dt><pre><a href="#evalTemplateLimit"><span class="Identifier">evalTemplateLimit</span></a> <span class="Other">=</span> <span class="DecNumber">1000</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/evaltempl.nim#L163" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/evaltempl.nim#L163" 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="evalTemplate-procs-all">
<div id="evalTemplate,PNode,PSym,PSym,ConfigRef,IdentCache,ref.int,IdGenerator">
<dt><pre><span class="Keyword">proc</span> <a href="#evalTemplate%2CPNode%2CPSym%2CPSym%2CConfigRef%2CIdentCache%2Cref.int%2CIdGenerator"><span class="Identifier">evalTemplate</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">tmpl</span><span class="Other">,</span> <span class="Identifier">genSymOwner</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</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">ic</span><span class="Other">:</span> <a href="idents.html#IdentCache"><span class="Identifier">IdentCache</span></a><span class="Other">;</span> <span class="Identifier">instID</span><span class="Other">:</span> <span class="Keyword">ref</span> <span class="Identifier">int</span><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">fromHlo</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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/evaltempl.nim#L187" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/evaltempl.nim#L187" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="wrapInComesFrom-procs-all">
<div id="wrapInComesFrom,TLineInfo,PSym,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#wrapInComesFrom%2CTLineInfo%2CPSym%2CPNode"><span class="Identifier">wrapInComesFrom</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">sym</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">res</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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/evaltempl.nim#L165" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/evaltempl.nim#L165" 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: 2026-07-10 18:29:12 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

4
compiler/evaltempl.idx Normal file
View File

@@ -0,0 +1,4 @@
nimTitle evaltempl evaltempl.html module evaltempl 0
nim evalTemplateLimit evaltempl.html#evalTemplateLimit const evalTemplateLimit 163
nim wrapInComesFrom evaltempl.html#wrapInComesFrom,TLineInfo,PSym,PNode proc wrapInComesFrom(info: TLineInfo; sym: PSym; res: PNode): PNode 165
nim evalTemplate evaltempl.html#evalTemplate,PNode,PSym,PSym,ConfigRef,IdentCache,ref.int,IdGenerator proc evalTemplate(n: PNode; tmpl, genSymOwner: PSym; conf: ConfigRef; ic: IdentCache;\n instID: ref int; idgen: IdGenerator; fromHlo = false): PNode 187

View File

@@ -0,0 +1,144 @@
<?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>expanddefaults</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">expanddefaults</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">caseObjDefaultBranch
<li><a class="reference" href="#caseObjDefaultBranch%2CPNode%2CInt128" title="caseObjDefaultBranch(obj: PNode; branch: Int128): int">caseObjDefaultBranch(obj: PNode; branch: Int128): int</a></li>
</ul>
<ul class="simple nested-toc-section">expandDefault
<li><a class="reference" href="#expandDefault%2CPType%2CTLineInfo" title="expandDefault(t: PType; info: TLineInfo): PNode">expandDefault(t: PType; info: TLineInfo): PNode</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/expanddefaults.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/expanddefaults.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="ast.html">ast</a>, <a class="reference external" href="types.html">types</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="caseObjDefaultBranch-procs-all">
<div id="caseObjDefaultBranch,PNode,Int128">
<dt><pre><span class="Keyword">proc</span> <a href="#caseObjDefaultBranch%2CPNode%2CInt128"><span class="Identifier">caseObjDefaultBranch</span></a><span class="Other">(</span><span class="Identifier">obj</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">branch</span><span class="Other">:</span> <a href="int128.html#Int128"><span class="Identifier">Int128</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/expanddefaults.nim#L12" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/expanddefaults.nim#L12" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="expandDefault-procs-all">
<div id="expandDefault,PType,TLineInfo">
<dt><pre><span class="Keyword">proc</span> <a href="#expandDefault%2CPType%2CTLineInfo"><span class="Identifier">expandDefault</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</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="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/expanddefaults.nim#L30" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/expanddefaults.nim#L30" 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: 2026-07-10 18:29:11 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

View File

@@ -0,0 +1,3 @@
nimTitle expanddefaults expanddefaults.html module expanddefaults 0
nim caseObjDefaultBranch expanddefaults.html#caseObjDefaultBranch,PNode,Int128 proc caseObjDefaultBranch(obj: PNode; branch: Int128): int 12
nim expandDefault expanddefaults.html#expandDefault,PType,TLineInfo proc expandDefault(t: PType; info: TLineInfo): PNode 30

871
compiler/extccomp.html Normal file
View File

@@ -0,0 +1,871 @@
<?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>extccomp</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">extccomp</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="#TInfoCC" title="TInfoCC = tuple[name: string, objExt: string, optSpeed: string, optSize: string,
compilerExe: string, cppCompiler: string, compileTmpl: string,
buildGui: string, buildDll: string, buildLib: string,
linkerExe: string, linkTmpl: string, includeCmd: string,
linkDirCmd: string, linkLibCmd: string, debug: string,
pic: string, asmStmtFrmt: string, structStmtFmt: string,
produceAsm: string, cppXsupport: string, props: TInfoCCProps]">TInfoCC</a></li>
<li><a class="reference" href="#TInfoCCProp" title="TInfoCCProp = enum
hasSwitchRange, hasComputedGoto, hasCpp, hasAssume, hasGcGuard, hasGnuAsm,
hasDeclspec, hasAttribute, hasBuiltinUnreachable">TInfoCCProp</a></li>
<li><a class="reference" href="#TInfoCCProps" title="TInfoCCProps = set[TInfoCCProp]">TInfoCCProps</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#10" id="60">Consts</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#CC" title="CC: array[succ(low(TSystemCC)) .. high(TSystemCC), TInfoCC] = [(&quot;gcc&quot;, &quot;o&quot;,
&quot; -O3 -fno-ident&quot;, &quot; -Os -fno-ident&quot;, &quot;gcc&quot;, &quot;g++&quot;,
&quot;-c $options $include -o $objfile $file&quot;, &quot; -mwindows&quot;, &quot; -shared&quot;,
&quot;ar rcs $libfile $objfiles&quot;, &quot;&quot;,
&quot;$buildgui $builddll -o $exefile $objfiles $options&quot;, &quot; -I&quot;, &quot; -L&quot;, &quot; -l$1&quot;,
&quot;&quot;, &quot;-fPIC&quot;, &quot;__asm__($1);$n&quot;, &quot;$1 $3 $2 &quot;,
&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;,
&quot;-std=gnu++17 -funsigned-char&quot;, {hasSwitchRange, hasComputedGoto, hasCpp,
hasGcGuard, hasGnuAsm, hasAttribute,
hasBuiltinUnreachable}), (&quot;switch_gcc&quot;,
&quot;o&quot;, &quot; -O3 &quot;, &quot; -Os &quot;, &quot;aarch64-none-elf-gcc&quot;, &quot;aarch64-none-elf-g++&quot;,
&quot;-w -MMD -MP -MF $dfile -c $options $include -o $objfile $file&quot;,
&quot; -mwindows&quot;, &quot; -shared&quot;, &quot;aarch64-none-elf-gcc-ar rcs $libfile $objfiles&quot;,
&quot;aarch64-none-elf-gcc&quot;,
&quot;$buildgui $builddll -Wl,-Map,$mapfile -o $exefile $objfiles $options&quot;,
&quot; -I&quot;, &quot; -L&quot;, &quot; -l$1&quot;, &quot;&quot;, &quot;-fPIE&quot;, &quot;asm($1);$n&quot;, &quot;$1 $3 $2 &quot;,
&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;,
&quot;-std=gnu++17 -funsigned-char&quot;, {hasSwitchRange, hasComputedGoto, hasCpp,
hasGcGuard, hasGnuAsm, hasAttribute,
hasBuiltinUnreachable}), (&quot;llvm_gcc&quot;, &quot;o&quot;,
&quot; -O3 -fno-ident&quot;, &quot; -Os -fno-ident&quot;, &quot;llvm-gcc&quot;, &quot;llvm-g++&quot;,
&quot;-c $options $include -o $objfile $file&quot;, &quot; -mwindows&quot;, &quot; -shared&quot;,
&quot;llvm-ar rcs $libfile $objfiles&quot;, &quot;&quot;,
&quot;$buildgui $builddll -o $exefile $objfiles $options&quot;, &quot; -I&quot;, &quot; -L&quot;, &quot; -l$1&quot;,
&quot;&quot;, &quot;-fPIC&quot;, &quot;__asm__($1);$n&quot;, &quot;$1 $3 $2 &quot;,
&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;,
&quot;-std=gnu++17 -funsigned-char&quot;, {hasSwitchRange, hasComputedGoto, hasCpp,
hasGcGuard, hasGnuAsm, hasAttribute,
hasBuiltinUnreachable}), (&quot;clang&quot;, &quot;o&quot;,
&quot; -O3 -fno-ident&quot;, &quot; -Os -fno-ident&quot;, &quot;clang&quot;, &quot;clang++&quot;,
&quot;-c $options $include -o $objfile $file&quot;, &quot; -mwindows&quot;, &quot; -shared&quot;,
&quot;llvm-ar rcs $libfile $objfiles&quot;, &quot;&quot;,
&quot;$buildgui $builddll -o $exefile $objfiles $options&quot;, &quot; -I&quot;, &quot; -L&quot;, &quot; -l$1&quot;,
&quot;&quot;, &quot;-fPIC&quot;, &quot;__asm__($1);$n&quot;, &quot;$1 $3 $2 &quot;,
&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;,
&quot;-std=gnu++17 -funsigned-char&quot;, {hasSwitchRange, hasComputedGoto, hasCpp,
hasGcGuard, hasGnuAsm, hasAttribute,
hasBuiltinUnreachable}), (&quot;bcc&quot;, &quot;obj&quot;,
&quot; -O3 -6 &quot;, &quot; -O1 -6 &quot;, &quot;bcc32c&quot;, &quot;cpp32c&quot;,
&quot;-c $options $include -o$objfile $file&quot;, &quot; -tW&quot;, &quot; -tWD&quot;, &quot;&quot;, &quot;bcc32&quot;,
&quot;$options $buildgui $builddll -e$exefile $objfiles&quot;, &quot; -I&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;,
&quot;__asm{$n$1$n}$n&quot;, &quot;$1 $2&quot;, &quot;&quot;, &quot;&quot;,
{hasSwitchRange, hasComputedGoto, hasCpp, hasGcGuard, hasAttribute}), (
&quot;vcc&quot;, &quot;obj&quot;, &quot; /Ogityb2 &quot;, &quot; /O1 &quot;, &quot;cl&quot;, &quot;cl&quot;,
&quot;/c$vccplatform $options $include /nologo /Fo$objfile $file&quot;,
&quot; /SUBSYSTEM:WINDOWS user32.lib &quot;, &quot; /LD&quot;,
&quot;vccexe --command:lib$vccplatform /nologo /OUT:$libfile $objfiles&quot;, &quot;cl&quot;,
&quot;$builddll$vccplatform /Fe$exefile $objfiles $buildgui /nologo $options&quot;,
&quot; /I&quot;, &quot; /link /LIBPATH:&quot;, &quot; $1.lib&quot;, &quot; /RTC1 /Z7 &quot;, &quot;&quot;, &quot;__asm{$n$1$n}$n&quot;,
&quot;$3$n$1 $2&quot;, &quot;/Fa$asmfile&quot;, &quot;&quot;, {hasCpp, hasAssume, hasDeclspec}), (&quot;tcc&quot;,
&quot;o&quot;, &quot;&quot;, &quot;&quot;, &quot;tcc&quot;, &quot;&quot;, &quot;-c $options $include -o $objfile $file&quot;,
&quot;-Wl,-subsystem=gui&quot;, &quot; -shared&quot;, &quot;&quot;, &quot;tcc&quot;,
&quot;-o $exefile $options $buildgui $builddll $objfiles&quot;, &quot; -I&quot;, &quot; -L&quot;, &quot; -l$1&quot;,
&quot; -g &quot;, &quot;&quot;, &quot;asm($1);$n&quot;, &quot;$1 $2&quot;,
&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;, &quot;&quot;,
{hasSwitchRange, hasComputedGoto, hasGnuAsm}), (&quot;env&quot;, &quot;o&quot;, &quot; -O3 &quot;,
&quot; -O1 &quot;, &quot;&quot;, &quot;&quot;, &quot;-c $ccenvflags $options $include -o $objfile $file&quot;, &quot;&quot;,
&quot; -shared &quot;, &quot;&quot;, &quot;&quot;, &quot;-o $exefile $buildgui $builddll $objfiles $options&quot;,
&quot; -I&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;__asm{$n$1$n}$n&quot;, &quot;$1 $2&quot;, &quot;&quot;, &quot;&quot;, {hasGnuAsm}), (
&quot;icl&quot;, &quot;obj&quot;, &quot; /Ogityb2 &quot;, &quot; /O1 &quot;, &quot;icl&quot;, &quot;cl&quot;,
&quot;/c$vccplatform $options $include /nologo /Fo$objfile $file&quot;,
&quot; /SUBSYSTEM:WINDOWS user32.lib &quot;, &quot; /LD&quot;,
&quot;vccexe --command:lib$vccplatform /nologo /OUT:$libfile $objfiles&quot;, &quot;icl&quot;,
&quot;$builddll$vccplatform /Fe$exefile $objfiles $buildgui /nologo $options&quot;,
&quot; /I&quot;, &quot; /link /LIBPATH:&quot;, &quot; $1.lib&quot;, &quot; /RTC1 /Z7 &quot;, &quot;&quot;, &quot;__asm{$n$1$n}$n&quot;,
&quot;$3$n$1 $2&quot;, &quot;/Fa$asmfile&quot;, &quot;&quot;, {hasCpp, hasAssume, hasDeclspec}), (&quot;icc&quot;,
&quot;o&quot;, &quot; -O3 -fno-ident&quot;, &quot; -Os -fno-ident&quot;, &quot;icc&quot;, &quot;g++&quot;,
&quot;-c $options $include -o $objfile $file&quot;, &quot; -mwindows&quot;, &quot; -shared&quot;,
&quot;ar rcs $libfile $objfiles&quot;, &quot;icc&quot;,
&quot;$buildgui $builddll -o $exefile $objfiles $options&quot;, &quot; -I&quot;, &quot; -L&quot;, &quot; -l$1&quot;,
&quot;&quot;, &quot;-fPIC&quot;, &quot;__asm__($1);$n&quot;, &quot;$1 $3 $2 &quot;,
&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;,
&quot;-std=gnu++17 -funsigned-char&quot;, {hasSwitchRange, hasComputedGoto, hasCpp,
hasGcGuard, hasGnuAsm, hasAttribute,
hasBuiltinUnreachable}), (&quot;clang_cl&quot;,
&quot;obj&quot;, &quot; /Ogityb2 &quot;, &quot; /O1 &quot;, &quot;clang-cl&quot;, &quot;clang-cl&quot;,
&quot;/c$vccplatform $options $include /nologo /Fo$objfile $file&quot;,
&quot; /SUBSYSTEM:WINDOWS user32.lib &quot;, &quot; /LD&quot;,
&quot;vccexe --command:lib$vccplatform /nologo /OUT:$libfile $objfiles&quot;,
&quot;clang-cl&quot;, &quot;-fuse-ld=lld $builddll$vccplatform /Fe$exefile $objfiles $buildgui /nologo $options&quot;,
&quot; /I&quot;, &quot; /link /LIBPATH:&quot;, &quot; $1.lib&quot;, &quot; /RTC1 /Z7 &quot;, &quot;&quot;, &quot;__asm{$n$1$n}$n&quot;,
&quot;$3$n$1 $2&quot;, &quot;/Fa$asmfile&quot;, &quot;&quot;, {hasCpp, hasAssume, hasDeclspec}), (&quot;hipcc&quot;,
&quot;o&quot;, &quot; -O3 -fno-ident&quot;, &quot; -Os -fno-ident&quot;, &quot;hipcc&quot;, &quot;hipcc&quot;,
&quot;-c $options $include -o $objfile $file&quot;, &quot; -mwindows&quot;, &quot; -shared&quot;,
&quot;llvm-ar rcs $libfile $objfiles&quot;, &quot;&quot;,
&quot;$buildgui $builddll -o $exefile $objfiles $options&quot;, &quot; -I&quot;, &quot; -L&quot;, &quot; -l$1&quot;,
&quot;&quot;, &quot;-fPIC&quot;, &quot;__asm__($1);$n&quot;, &quot;$1 $3 $2 &quot;,
&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;,
&quot;-std=gnu++17 -funsigned-char&quot;, {hasSwitchRange, hasComputedGoto, hasCpp,
hasGcGuard, hasGnuAsm, hasAttribute,
hasBuiltinUnreachable}), (&quot;nvcc&quot;, &quot;o&quot;,
&quot; -O3 -fno-ident&quot;, &quot; -Os -fno-ident&quot;, &quot;nvcc&quot;, &quot;nvcc&quot;,
&quot;-c -x cu -Xcompiler=\&quot;$options\&quot; $include -o $objfile $file&quot;, &quot; -mwindows&quot;,
&quot; -shared&quot;, &quot;ar rcs $libfile $objfiles&quot;, &quot;&quot;,
&quot;$buildgui $builddll -o $exefile $objfiles -Xcompiler=\&quot;$options\&quot;&quot;, &quot; -I&quot;,
&quot; -L&quot;, &quot; -l$1&quot;, &quot;&quot;, &quot;-fPIC&quot;, &quot;__asm__($1);$n&quot;, &quot;$1 $3 $2 &quot;,
&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;,
&quot;-std=gnu++17 -funsigned-char&quot;, {hasSwitchRange, hasComputedGoto, hasCpp,
hasGcGuard, hasGnuAsm, hasAttribute,
hasBuiltinUnreachable})]">CC</a></li>
<li><a class="reference" href="#hExt" title="hExt = &quot;.h&quot;">hExt</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">addCompileOption
<li><a class="reference" href="#addCompileOption%2CConfigRef%2Cstring" title="addCompileOption(conf: ConfigRef; option: string)">addCompileOption(conf: ConfigRef; option: string)</a></li>
</ul>
<ul class="simple nested-toc-section">addCompileOptionCmd
<li><a class="reference" href="#addCompileOptionCmd%2CConfigRef%2Cstring" title="addCompileOptionCmd(conf: ConfigRef; option: string)">addCompileOptionCmd(conf: ConfigRef; option: string)</a></li>
</ul>
<ul class="simple nested-toc-section">addExternalFileToCompile
<li><a class="reference" href="#addExternalFileToCompile%2CConfigRef%2CCfile" title="addExternalFileToCompile(conf: ConfigRef; c: var Cfile)">addExternalFileToCompile(conf: ConfigRef; c: var Cfile)</a></li>
<li><a class="reference" href="#addExternalFileToCompile%2CConfigRef%2CAbsoluteFile" title="addExternalFileToCompile(conf: ConfigRef; filename: AbsoluteFile)">addExternalFileToCompile(conf: ConfigRef; filename: AbsoluteFile)</a></li>
</ul>
<ul class="simple nested-toc-section">addExternalFileToLink
<li><a class="reference" href="#addExternalFileToLink%2CConfigRef%2CAbsoluteFile" title="addExternalFileToLink(conf: ConfigRef; filename: AbsoluteFile)">addExternalFileToLink(conf: ConfigRef; filename: AbsoluteFile)</a></li>
</ul>
<ul class="simple nested-toc-section">addFileToCompile
<li><a class="reference" href="#addFileToCompile%2CConfigRef%2CCfile" title="addFileToCompile(conf: ConfigRef; cf: Cfile)">addFileToCompile(conf: ConfigRef; cf: Cfile)</a></li>
</ul>
<ul class="simple nested-toc-section">addLinkOption
<li><a class="reference" href="#addLinkOption%2CConfigRef%2Cstring" title="addLinkOption(conf: ConfigRef; option: string)">addLinkOption(conf: ConfigRef; option: string)</a></li>
</ul>
<ul class="simple nested-toc-section">addLinkOptionCmd
<li><a class="reference" href="#addLinkOptionCmd%2CConfigRef%2Cstring" title="addLinkOptionCmd(conf: ConfigRef; option: string)">addLinkOptionCmd(conf: ConfigRef; option: string)</a></li>
</ul>
<ul class="simple nested-toc-section">addLocalCompileOption
<li><a class="reference" href="#addLocalCompileOption%2CConfigRef%2Cstring%2CAbsoluteFile" title="addLocalCompileOption(conf: ConfigRef; option: string; nimfile: AbsoluteFile)">addLocalCompileOption(conf: ConfigRef; option: string; nimfile: AbsoluteFile)</a></li>
</ul>
<ul class="simple nested-toc-section">callCCompiler
<li><a class="reference" href="#callCCompiler%2CConfigRef" title="callCCompiler(conf: ConfigRef)">callCCompiler(conf: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">ccHasSaneOverflow
<li><a class="reference" href="#ccHasSaneOverflow%2CConfigRef" title="ccHasSaneOverflow(conf: ConfigRef): bool">ccHasSaneOverflow(conf: ConfigRef): bool</a></li>
</ul>
<ul class="simple nested-toc-section">changeDetectedViaJsonBuildInstructions
<li><a class="reference" href="#changeDetectedViaJsonBuildInstructions%2CConfigRef%2CAbsoluteFile" title="changeDetectedViaJsonBuildInstructions(conf: ConfigRef; jsonFile: AbsoluteFile): bool">changeDetectedViaJsonBuildInstructions(conf: ConfigRef; jsonFile: AbsoluteFile): bool</a></li>
</ul>
<ul class="simple nested-toc-section">completeCfilePath
<li><a class="reference" href="#completeCfilePath%2CConfigRef%2CAbsoluteFile%2Cbool" title="completeCfilePath(conf: ConfigRef; cfile: AbsoluteFile;
createSubDir: bool = true): AbsoluteFile">completeCfilePath(conf: ConfigRef; cfile: AbsoluteFile;
createSubDir: bool = true): AbsoluteFile</a></li>
</ul>
<ul class="simple nested-toc-section">execExternalProgram
<li><a class="reference" href="#execExternalProgram%2CConfigRef%2Cstring" title="execExternalProgram(conf: ConfigRef; cmd: string; msg = hintExecuting)">execExternalProgram(conf: ConfigRef; cmd: string; msg = hintExecuting)</a></li>
</ul>
<ul class="simple nested-toc-section">getCompileCFileCmd
<li><a class="reference" href="#getCompileCFileCmd%2CConfigRef%2CCfile" title="getCompileCFileCmd(conf: ConfigRef; cfile: Cfile; isMainFile = false;
produceOutput = false): string">getCompileCFileCmd(conf: ConfigRef; cfile: Cfile; isMainFile = false;
produceOutput = false): string</a></li>
</ul>
<ul class="simple nested-toc-section">initVars
<li><a class="reference" href="#initVars%2CConfigRef" title="initVars(conf: ConfigRef)">initVars(conf: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">isVSCompatible
<li><a class="reference" href="#isVSCompatible%2CConfigRef" title="isVSCompatible(conf: ConfigRef): bool">isVSCompatible(conf: ConfigRef): bool</a></li>
</ul>
<ul class="simple nested-toc-section">jsonBuildInstructionsFile
<li><a class="reference" href="#jsonBuildInstructionsFile%2CConfigRef" title="jsonBuildInstructionsFile(conf: ConfigRef): AbsoluteFile">jsonBuildInstructionsFile(conf: ConfigRef): AbsoluteFile</a></li>
</ul>
<ul class="simple nested-toc-section">nameToCC
<li><a class="reference" href="#nameToCC%2Cstring" title="nameToCC(name: string): TSystemCC">nameToCC(name: string): TSystemCC</a></li>
</ul>
<ul class="simple nested-toc-section">resetCompilationLists
<li><a class="reference" href="#resetCompilationLists%2CConfigRef" title="resetCompilationLists(conf: ConfigRef)">resetCompilationLists(conf: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">runJsonBuildInstructions
<li><a class="reference" href="#runJsonBuildInstructions%2CConfigRef%2CAbsoluteFile" title="runJsonBuildInstructions(conf: ConfigRef; jsonFile: AbsoluteFile)">runJsonBuildInstructions(conf: ConfigRef; jsonFile: AbsoluteFile)</a></li>
</ul>
<ul class="simple nested-toc-section">setCC
<li><a class="reference" href="#setCC%2CConfigRef%2Cstring%2CTLineInfo" title="setCC(conf: ConfigRef; ccname: string; info: TLineInfo)">setCC(conf: ConfigRef; ccname: string; info: TLineInfo)</a></li>
</ul>
<ul class="simple nested-toc-section">toObjFile
<li><a class="reference" href="#toObjFile%2CConfigRef%2CAbsoluteFile" title="toObjFile(conf: ConfigRef; filename: AbsoluteFile): AbsoluteFile">toObjFile(conf: ConfigRef; filename: AbsoluteFile): AbsoluteFile</a></li>
</ul>
<ul class="simple nested-toc-section">writeJsonBuildInstructions
<li><a class="reference" href="#writeJsonBuildInstructions%2CConfigRef%2CStringTableRef" title="writeJsonBuildInstructions(conf: ConfigRef; deps: StringTableRef)">writeJsonBuildInstructions(conf: ConfigRef; deps: StringTableRef)</a></li>
</ul>
<ul class="simple nested-toc-section">writeMapping
<li><a class="reference" href="#writeMapping%2CConfigRef%2CRope" title="writeMapping(conf: ConfigRef; symbolMapping: Rope)">writeMapping(conf: ConfigRef; symbolMapping: Rope)</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/extccomp.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="ropes.html">ropes</a>, <a class="reference external" href="platform.html">platform</a>, <a class="reference external" href="condsyms.html">condsyms</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="pathutils.html">pathutils</a>, <a class="reference external" href="modulepaths.html">modulepaths</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="TInfoCC">
<dt><pre><a href="#TInfoCC"><span class="Identifier">TInfoCC</span></a> <span class="Other">=</span> <span class="Keyword">tuple</span><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">objExt</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">optSpeed</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">optSize</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span>
<span class="Identifier">compilerExe</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">cppCompiler</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">compileTmpl</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span>
<span class="Identifier">buildGui</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">buildDll</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">buildLib</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span>
<span class="Identifier">linkerExe</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">linkTmpl</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">includeCmd</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span>
<span class="Identifier">linkDirCmd</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">linkLibCmd</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">debug</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span>
<span class="Identifier">pic</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">asmStmtFrmt</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">structStmtFmt</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span>
<span class="Identifier">produceAsm</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">cppXsupport</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">props</span><span class="Other">:</span> <a href="#TInfoCCProps"><span class="Identifier">TInfoCCProps</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/extccomp.nim#L38" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L38" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TInfoCCProp">
<dt><pre><a href="#TInfoCCProp"><span class="Identifier">TInfoCCProp</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">hasSwitchRange</span><span class="Other">,</span> <span class="Identifier">hasComputedGoto</span><span class="Other">,</span> <span class="Identifier">hasCpp</span><span class="Other">,</span> <span class="Identifier">hasAssume</span><span class="Other">,</span> <span class="Identifier">hasGcGuard</span><span class="Other">,</span> <span class="Identifier">hasGnuAsm</span><span class="Other">,</span>
<span class="Identifier">hasDeclspec</span><span class="Other">,</span> <span class="Identifier">hasAttribute</span><span class="Other">,</span> <span class="Identifier">hasBuiltinUnreachable</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/extccomp.nim#L27" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L27" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TInfoCCProps">
<dt><pre><a href="#TInfoCCProps"><span class="Identifier">TInfoCCProps</span></a> <span class="Other">=</span> <span class="Identifier">set</span><span class="Other">[</span><a href="#TInfoCCProp"><span class="Identifier">TInfoCCProp</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/extccomp.nim#L37" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L37" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</dl>
</div>
<div class="section" id="10">
<h1><a class="toc-backref" href="#10">Consts</a></h1>
<dl class="item">
<div id="CC">
<dt><pre><a href="#CC"><span class="Identifier">CC</span></a><span class="Other">:</span> <span class="Identifier">array</span><span class="Other">[</span><span class="Identifier">succ</span><span class="Other">(</span><span class="Identifier">low</span><span class="Other">(</span><a href="options.html#TSystemCC"><span class="Identifier">TSystemCC</span></a><span class="Other">)</span><span class="Other">)</span> <span class="Operator">..</span> <span class="Identifier">high</span><span class="Other">(</span><a href="options.html#TSystemCC"><span class="Identifier">TSystemCC</span></a><span class="Other">)</span><span class="Other">,</span> <a href="#TInfoCC"><span class="Identifier">TInfoCC</span></a><span class="Other">]</span> <span class="Other">=</span> <span class="Other">[</span><span class="Other">(</span><span class="StringLit">&quot;gcc&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;o&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; -O3 -fno-ident&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -Os -fno-ident&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;gcc&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;g++&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-c $options $include -o $objfile $file&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -mwindows&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -shared&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;ar rcs $libfile $objfiles&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;$buildgui $builddll -o $exefile $objfiles $options&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -I&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -L&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -l$1&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;-fPIC&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;__asm__($1);$n&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;$1 $3 $2 &quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-std=gnu++17 -funsigned-char&quot;</span><span class="Other">,</span> <span class="Other">{</span><span class="DecNumber">hasSwitchRange</span><span class="Other">,</span> <span class="DecNumber">hasComputedGoto</span><span class="Other">,</span> <span class="DecNumber">hasCpp</span><span class="Other">,</span>
<span class="DecNumber">hasGcGuard</span><span class="Other">,</span> <span class="DecNumber">hasGnuAsm</span><span class="Other">,</span> <span class="DecNumber">hasAttribute</span><span class="Other">,</span>
<span class="DecNumber">hasBuiltinUnreachable</span><span class="Other">}</span><span class="Other">)</span><span class="Other">,</span> <span class="Other">(</span><span class="StringLit">&quot;switch_gcc&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;o&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -O3 &quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -Os &quot;</span><span class="Other">,</span> <span class="StringLit">&quot;aarch64-none-elf-gcc&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;aarch64-none-elf-g++&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-w -MMD -MP -MF $dfile -c $options $include -o $objfile $file&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; -mwindows&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -shared&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;aarch64-none-elf-gcc-ar rcs $libfile $objfiles&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;aarch64-none-elf-gcc&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;$buildgui $builddll -Wl,-Map,$mapfile -o $exefile $objfiles $options&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; -I&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -L&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -l$1&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;-fPIE&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;asm($1);$n&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;$1 $3 $2 &quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-std=gnu++17 -funsigned-char&quot;</span><span class="Other">,</span> <span class="Other">{</span><span class="DecNumber">hasSwitchRange</span><span class="Other">,</span> <span class="DecNumber">hasComputedGoto</span><span class="Other">,</span> <span class="DecNumber">hasCpp</span><span class="Other">,</span>
<span class="DecNumber">hasGcGuard</span><span class="Other">,</span> <span class="DecNumber">hasGnuAsm</span><span class="Other">,</span> <span class="DecNumber">hasAttribute</span><span class="Other">,</span>
<span class="DecNumber">hasBuiltinUnreachable</span><span class="Other">}</span><span class="Other">)</span><span class="Other">,</span> <span class="Other">(</span><span class="StringLit">&quot;llvm_gcc&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;o&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; -O3 -fno-ident&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -Os -fno-ident&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;llvm-gcc&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;llvm-g++&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-c $options $include -o $objfile $file&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -mwindows&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -shared&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;llvm-ar rcs $libfile $objfiles&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;$buildgui $builddll -o $exefile $objfiles $options&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -I&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -L&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -l$1&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;-fPIC&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;__asm__($1);$n&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;$1 $3 $2 &quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-std=gnu++17 -funsigned-char&quot;</span><span class="Other">,</span> <span class="Other">{</span><span class="DecNumber">hasSwitchRange</span><span class="Other">,</span> <span class="DecNumber">hasComputedGoto</span><span class="Other">,</span> <span class="DecNumber">hasCpp</span><span class="Other">,</span>
<span class="DecNumber">hasGcGuard</span><span class="Other">,</span> <span class="DecNumber">hasGnuAsm</span><span class="Other">,</span> <span class="DecNumber">hasAttribute</span><span class="Other">,</span>
<span class="DecNumber">hasBuiltinUnreachable</span><span class="Other">}</span><span class="Other">)</span><span class="Other">,</span> <span class="Other">(</span><span class="StringLit">&quot;clang&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;o&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; -O3 -fno-ident&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -Os -fno-ident&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;clang&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;clang++&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-c $options $include -o $objfile $file&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -mwindows&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -shared&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;llvm-ar rcs $libfile $objfiles&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;$buildgui $builddll -o $exefile $objfiles $options&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -I&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -L&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -l$1&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;-fPIC&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;__asm__($1);$n&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;$1 $3 $2 &quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-std=gnu++17 -funsigned-char&quot;</span><span class="Other">,</span> <span class="Other">{</span><span class="DecNumber">hasSwitchRange</span><span class="Other">,</span> <span class="DecNumber">hasComputedGoto</span><span class="Other">,</span> <span class="DecNumber">hasCpp</span><span class="Other">,</span>
<span class="DecNumber">hasGcGuard</span><span class="Other">,</span> <span class="DecNumber">hasGnuAsm</span><span class="Other">,</span> <span class="DecNumber">hasAttribute</span><span class="Other">,</span>
<span class="DecNumber">hasBuiltinUnreachable</span><span class="Other">}</span><span class="Other">)</span><span class="Other">,</span> <span class="Other">(</span><span class="StringLit">&quot;bcc&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;obj&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; -O3 -6 &quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -O1 -6 &quot;</span><span class="Other">,</span> <span class="StringLit">&quot;bcc32c&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;cpp32c&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-c $options $include -o$objfile $file&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -tW&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -tWD&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;bcc32&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;$options $buildgui $builddll -e$exefile $objfiles&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -I&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;__asm{$n$1$n}$n&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;$1 $2&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span>
<span class="Other">{</span><span class="DecNumber">hasSwitchRange</span><span class="Other">,</span> <span class="DecNumber">hasComputedGoto</span><span class="Other">,</span> <span class="DecNumber">hasCpp</span><span class="Other">,</span> <span class="DecNumber">hasGcGuard</span><span class="Other">,</span> <span class="DecNumber">hasAttribute</span><span class="Other">}</span><span class="Other">)</span><span class="Other">,</span> <span class="Other">(</span>
<span class="StringLit">&quot;vcc&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;obj&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; /Ogityb2 &quot;</span><span class="Other">,</span> <span class="StringLit">&quot; /O1 &quot;</span><span class="Other">,</span> <span class="StringLit">&quot;cl&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;cl&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;/c$vccplatform $options $include /nologo /Fo$objfile $file&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; /SUBSYSTEM:WINDOWS user32.lib &quot;</span><span class="Other">,</span> <span class="StringLit">&quot; /LD&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;vccexe --command:lib$vccplatform /nologo /OUT:$libfile $objfiles&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;cl&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;$builddll$vccplatform /Fe$exefile $objfiles $buildgui /nologo $options&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; /I&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; /link /LIBPATH:&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; $1.lib&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; /RTC1 /Z7 &quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;__asm{$n$1$n}$n&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;$3$n$1 $2&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;/Fa$asmfile&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="Other">{</span><span class="DecNumber">hasCpp</span><span class="Other">,</span> <span class="DecNumber">hasAssume</span><span class="Other">,</span> <span class="DecNumber">hasDeclspec</span><span class="Other">}</span><span class="Other">)</span><span class="Other">,</span> <span class="Other">(</span><span class="StringLit">&quot;tcc&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;o&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;tcc&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;-c $options $include -o $objfile $file&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-Wl,-subsystem=gui&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -shared&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;tcc&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-o $exefile $options $buildgui $builddll $objfiles&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -I&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -L&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -l$1&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; -g &quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;asm($1);$n&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;$1 $2&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span>
<span class="Other">{</span><span class="DecNumber">hasSwitchRange</span><span class="Other">,</span> <span class="DecNumber">hasComputedGoto</span><span class="Other">,</span> <span class="DecNumber">hasGnuAsm</span><span class="Other">}</span><span class="Other">)</span><span class="Other">,</span> <span class="Other">(</span><span class="StringLit">&quot;env&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;o&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -O3 &quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; -O1 &quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;-c $ccenvflags $options $include -o $objfile $file&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; -shared &quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;-o $exefile $buildgui $builddll $objfiles $options&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; -I&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;__asm{$n$1$n}$n&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;$1 $2&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="Other">{</span><span class="DecNumber">hasGnuAsm</span><span class="Other">}</span><span class="Other">)</span><span class="Other">,</span> <span class="Other">(</span>
<span class="StringLit">&quot;icl&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;obj&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; /Ogityb2 &quot;</span><span class="Other">,</span> <span class="StringLit">&quot; /O1 &quot;</span><span class="Other">,</span> <span class="StringLit">&quot;icl&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;cl&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;/c$vccplatform $options $include /nologo /Fo$objfile $file&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; /SUBSYSTEM:WINDOWS user32.lib &quot;</span><span class="Other">,</span> <span class="StringLit">&quot; /LD&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;vccexe --command:lib$vccplatform /nologo /OUT:$libfile $objfiles&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;icl&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;$builddll$vccplatform /Fe$exefile $objfiles $buildgui /nologo $options&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; /I&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; /link /LIBPATH:&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; $1.lib&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; /RTC1 /Z7 &quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;__asm{$n$1$n}$n&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;$3$n$1 $2&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;/Fa$asmfile&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="Other">{</span><span class="DecNumber">hasCpp</span><span class="Other">,</span> <span class="DecNumber">hasAssume</span><span class="Other">,</span> <span class="DecNumber">hasDeclspec</span><span class="Other">}</span><span class="Other">)</span><span class="Other">,</span> <span class="Other">(</span><span class="StringLit">&quot;icc&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;o&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -O3 -fno-ident&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -Os -fno-ident&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;icc&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;g++&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-c $options $include -o $objfile $file&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -mwindows&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -shared&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;ar rcs $libfile $objfiles&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;icc&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;$buildgui $builddll -o $exefile $objfiles $options&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -I&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -L&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -l$1&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;-fPIC&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;__asm__($1);$n&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;$1 $3 $2 &quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-std=gnu++17 -funsigned-char&quot;</span><span class="Other">,</span> <span class="Other">{</span><span class="DecNumber">hasSwitchRange</span><span class="Other">,</span> <span class="DecNumber">hasComputedGoto</span><span class="Other">,</span> <span class="DecNumber">hasCpp</span><span class="Other">,</span>
<span class="DecNumber">hasGcGuard</span><span class="Other">,</span> <span class="DecNumber">hasGnuAsm</span><span class="Other">,</span> <span class="DecNumber">hasAttribute</span><span class="Other">,</span>
<span class="DecNumber">hasBuiltinUnreachable</span><span class="Other">}</span><span class="Other">)</span><span class="Other">,</span> <span class="Other">(</span><span class="StringLit">&quot;clang_cl&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;obj&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; /Ogityb2 &quot;</span><span class="Other">,</span> <span class="StringLit">&quot; /O1 &quot;</span><span class="Other">,</span> <span class="StringLit">&quot;clang-cl&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;clang-cl&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;/c$vccplatform $options $include /nologo /Fo$objfile $file&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; /SUBSYSTEM:WINDOWS user32.lib &quot;</span><span class="Other">,</span> <span class="StringLit">&quot; /LD&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;vccexe --command:lib$vccplatform /nologo /OUT:$libfile $objfiles&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;clang-cl&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;-fuse-ld=lld $builddll$vccplatform /Fe$exefile $objfiles $buildgui /nologo $options&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; /I&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; /link /LIBPATH:&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; $1.lib&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; /RTC1 /Z7 &quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;__asm{$n$1$n}$n&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;$3$n$1 $2&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;/Fa$asmfile&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="Other">{</span><span class="DecNumber">hasCpp</span><span class="Other">,</span> <span class="DecNumber">hasAssume</span><span class="Other">,</span> <span class="DecNumber">hasDeclspec</span><span class="Other">}</span><span class="Other">)</span><span class="Other">,</span> <span class="Other">(</span><span class="StringLit">&quot;hipcc&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;o&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -O3 -fno-ident&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -Os -fno-ident&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;hipcc&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;hipcc&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-c $options $include -o $objfile $file&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -mwindows&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -shared&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;llvm-ar rcs $libfile $objfiles&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;$buildgui $builddll -o $exefile $objfiles $options&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -I&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -L&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -l$1&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;-fPIC&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;__asm__($1);$n&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;$1 $3 $2 &quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-std=gnu++17 -funsigned-char&quot;</span><span class="Other">,</span> <span class="Other">{</span><span class="DecNumber">hasSwitchRange</span><span class="Other">,</span> <span class="DecNumber">hasComputedGoto</span><span class="Other">,</span> <span class="DecNumber">hasCpp</span><span class="Other">,</span>
<span class="DecNumber">hasGcGuard</span><span class="Other">,</span> <span class="DecNumber">hasGnuAsm</span><span class="Other">,</span> <span class="DecNumber">hasAttribute</span><span class="Other">,</span>
<span class="DecNumber">hasBuiltinUnreachable</span><span class="Other">}</span><span class="Other">)</span><span class="Other">,</span> <span class="Other">(</span><span class="StringLit">&quot;nvcc&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;o&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; -O3 -fno-ident&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -Os -fno-ident&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;nvcc&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;nvcc&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-c -x cu -Xcompiler=\&quot;$options\&quot; $include -o $objfile $file&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -mwindows&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; -shared&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;ar rcs $libfile $objfiles&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;$buildgui $builddll -o $exefile $objfiles -Xcompiler=\&quot;$options\&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -I&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot; -L&quot;</span><span class="Other">,</span> <span class="StringLit">&quot; -l$1&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;-fPIC&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;__asm__($1);$n&quot;</span><span class="Other">,</span> <span class="StringLit">&quot;$1 $3 $2 &quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-Wa,-acdl=$asmfile -g -fverbose-asm -masm=intel&quot;</span><span class="Other">,</span>
<span class="StringLit">&quot;-std=gnu++17 -funsigned-char&quot;</span><span class="Other">,</span> <span class="Other">{</span><span class="DecNumber">hasSwitchRange</span><span class="Other">,</span> <span class="DecNumber">hasComputedGoto</span><span class="Other">,</span> <span class="DecNumber">hasCpp</span><span class="Other">,</span>
<span class="DecNumber">hasGcGuard</span><span class="Other">,</span> <span class="DecNumber">hasGnuAsm</span><span class="Other">,</span> <span class="DecNumber">hasAttribute</span><span class="Other">,</span>
<span class="DecNumber">hasBuiltinUnreachable</span><span class="Other">}</span><span class="Other">)</span><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/extccomp.nim#L297" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L297" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="hExt">
<dt><pre><a href="#hExt"><span class="Identifier">hExt</span></a> <span class="Other">=</span> <span class="StringLit">&quot;.h&quot;</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/extccomp.nim#L312" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L312" 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="addCompileOption-procs-all">
<div id="addCompileOption,ConfigRef,string">
<dt><pre><span class="Keyword">proc</span> <a href="#addCompileOption%2CConfigRef%2Cstring"><span class="Identifier">addCompileOption</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">option</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/extccomp.nim#L381" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L381" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addCompileOptionCmd-procs-all">
<div id="addCompileOptionCmd,ConfigRef,string">
<dt><pre><span class="Keyword">proc</span> <a href="#addCompileOptionCmd%2CConfigRef%2Cstring"><span class="Identifier">addCompileOptionCmd</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">option</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/extccomp.nim#L388" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L388" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addExternalFileToCompile-procs-all">
<div id="addExternalFileToCompile,ConfigRef,Cfile">
<dt><pre><span class="Keyword">proc</span> <a href="#addExternalFileToCompile%2CConfigRef%2CCfile"><span class="Identifier">addExternalFileToCompile</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">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="options.html#Cfile"><span class="Identifier">Cfile</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">OSError</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">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span> <span class="Identifier">EOFError</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">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">WriteDirEffect</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/extccomp.nim#L691" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L691" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="addExternalFileToCompile,ConfigRef,AbsoluteFile">
<dt><pre><span class="Keyword">proc</span> <a href="#addExternalFileToCompile%2CConfigRef%2CAbsoluteFile"><span class="Identifier">addExternalFileToCompile</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">filename</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</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">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</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">ERecoverableError</span><span class="Other">,</span>
<span class="Identifier">EOFError</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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/extccomp.nim#L703" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L703" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addExternalFileToLink-procs-all">
<div id="addExternalFileToLink,ConfigRef,AbsoluteFile">
<dt><pre><span class="Keyword">proc</span> <a href="#addExternalFileToLink%2CConfigRef%2CAbsoluteFile"><span class="Identifier">addExternalFileToLink</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">filename</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</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/extccomp.nim#L427" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L427" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addFileToCompile-procs-all">
<div id="addFileToCompile,ConfigRef,Cfile">
<dt><pre><span class="Keyword">proc</span> <a href="#addFileToCompile%2CConfigRef%2CCfile"><span class="Identifier">addFileToCompile</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">cf</span><span class="Other">:</span> <a href="options.html#Cfile"><span class="Identifier">Cfile</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/extccomp.nim#L409" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L409" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addLinkOption-procs-all">
<div id="addLinkOption,ConfigRef,string">
<dt><pre><span class="Keyword">proc</span> <a href="#addLinkOption%2CConfigRef%2Cstring"><span class="Identifier">addLinkOption</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">option</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/extccomp.nim#L378" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L378" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addLinkOptionCmd-procs-all">
<div id="addLinkOptionCmd,ConfigRef,string">
<dt><pre><span class="Keyword">proc</span> <a href="#addLinkOptionCmd%2CConfigRef%2Cstring"><span class="Identifier">addLinkOptionCmd</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">option</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/extccomp.nim#L385" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L385" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addLocalCompileOption-procs-all">
<div id="addLocalCompileOption,ConfigRef,string,AbsoluteFile">
<dt><pre><span class="Keyword">proc</span> <a href="#addLocalCompileOption%2CConfigRef%2Cstring%2CAbsoluteFile"><span class="Identifier">addLocalCompileOption</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">option</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">nimfile</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</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">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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/extccomp.nim#L412" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L412" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="callCCompiler-procs-all">
<div id="callCCompiler,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#callCCompiler%2CConfigRef"><span class="Identifier">callCCompiler</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><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">ValueError</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="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">ReadEnvEffect</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">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ExecIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</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/extccomp.nim#L971" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L971" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="ccHasSaneOverflow-procs-all">
<div id="ccHasSaneOverflow,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#ccHasSaneOverflow%2CConfigRef"><span class="Identifier">ccHasSaneOverflow</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="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">ValueError</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">ExecIOEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</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/extccomp.nim#L561" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L561" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="changeDetectedViaJsonBuildInstructions-procs-all">
<div id="changeDetectedViaJsonBuildInstructions,ConfigRef,AbsoluteFile">
<dt><pre><span class="Keyword">proc</span> <a href="#changeDetectedViaJsonBuildInstructions%2CConfigRef%2CAbsoluteFile"><span class="Identifier">changeDetectedViaJsonBuildInstructions</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">jsonFile</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</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">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</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="Identifier">ReadIOEffect</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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/extccomp.nim#L1122" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L1122" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="completeCfilePath-procs-all">
<div id="completeCfilePath,ConfigRef,AbsoluteFile,bool">
<dt><pre><span class="Keyword">proc</span> <a href="#completeCfilePath%2CConfigRef%2CAbsoluteFile%2Cbool"><span class="Identifier">completeCfilePath</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">cfile</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</span></a><span class="Other">;</span>
<span class="Identifier">createSubDir</span><span class="Other">:</span> <span class="Identifier">bool</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">)</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</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="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="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Generate the absolute file path to the generated modules.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/extccomp.nim#L400" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L400" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="execExternalProgram-procs-all">
<div id="execExternalProgram,ConfigRef,string">
<dt><pre><span class="Keyword">proc</span> <a href="#execExternalProgram%2CConfigRef%2Cstring"><span class="Identifier">execExternalProgram</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">cmd</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">msg</span> <span class="Other">=</span> <span class="Identifier">hintExecuting</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="Identifier">ValueError</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="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="Identifier">ExecIOEffect</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/extccomp.nim#L434" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L434" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getCompileCFileCmd-procs-all">
<div id="getCompileCFileCmd,ConfigRef,Cfile">
<dt><pre><span class="Keyword">proc</span> <a href="#getCompileCFileCmd%2CConfigRef%2CCfile"><span class="Identifier">getCompileCFileCmd</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">cfile</span><span class="Other">:</span> <a href="options.html#Cfile"><span class="Identifier">Cfile</span></a><span class="Other">;</span> <span class="Identifier">isMainFile</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span>
<span class="Identifier">produceOutput</span> <span class="Other">=</span> <span class="Identifier">false</span><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="Identifier">ValueError</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="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">ReadEnvEffect</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">WriteDirEffect</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/extccomp.nim#L579" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L579" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="initVars-procs-all">
<div id="initVars,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#initVars%2CConfigRef"><span class="Identifier">initVars</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><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/extccomp.nim#L391" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L391" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isVSCompatible-procs-all">
<div id="isVSCompatible,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#isVSCompatible%2CConfigRef"><span class="Identifier">isVSCompatible</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="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/extccomp.nim#L333" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L333" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="jsonBuildInstructionsFile-procs-all">
<div id="jsonBuildInstructionsFile,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#jsonBuildInstructionsFile%2CConfigRef"><span class="Identifier">jsonBuildInstructionsFile</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="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</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="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="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/extccomp.nim#L1063" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L1063" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="nameToCC-procs-all">
<div id="nameToCC,string">
<dt><pre><span class="Keyword">proc</span> <a href="#nameToCC%2Cstring"><span class="Identifier">nameToCC</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="options.html#TSystemCC"><span class="Identifier">TSystemCC</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 the kind of compiler referred to by <tt class="docutils literal"><span class="pre"><span class="Identifier">name</span></span></tt>, or ccNone if the name doesn't refer to any known compiler.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/extccomp.nim#L319" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L319" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="resetCompilationLists-procs-all">
<div id="resetCompilationLists,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#resetCompilationLists%2CConfigRef"><span class="Identifier">resetCompilationLists</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><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/extccomp.nim#L419" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L419" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="runJsonBuildInstructions-procs-all">
<div id="runJsonBuildInstructions,ConfigRef,AbsoluteFile">
<dt><pre><span class="Keyword">proc</span> <a href="#runJsonBuildInstructions%2CConfigRef%2CAbsoluteFile"><span class="Identifier">runJsonBuildInstructions</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">jsonFile</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</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">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">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</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">ReadIOEffect</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">ReadDirEffect</span><span class="Other">,</span>
<span class="Identifier">ReadEnvEffect</span><span class="Other">,</span> <span class="Identifier">ExecIOEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</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/extccomp.nim#L1142" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L1142" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="setCC-procs-all">
<div id="setCC,ConfigRef,string,TLineInfo">
<dt><pre><span class="Keyword">proc</span> <a href="#setCC%2CConfigRef%2Cstring%2CTLineInfo"><span class="Identifier">setCC</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">ccname</span><span class="Other">:</span> <span class="Identifier">string</span><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><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">ValueError</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="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/extccomp.nim#L364" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L364" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="toObjFile-procs-all">
<div id="toObjFile,ConfigRef,AbsoluteFile">
<dt><pre><span class="Keyword">proc</span> <a href="#toObjFile%2CConfigRef%2CAbsoluteFile"><span class="Identifier">toObjFile</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">filename</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</span></a><span class="Other">)</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</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/extccomp.nim#L405" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L405" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="writeJsonBuildInstructions-procs-all">
<div id="writeJsonBuildInstructions,ConfigRef,StringTableRef">
<dt><pre><span class="Keyword">proc</span> <a href="#writeJsonBuildInstructions%2CConfigRef%2CStringTableRef"><span class="Identifier">writeJsonBuildInstructions</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">deps</span><span class="Other">:</span> <span class="Identifier">StringTableRef</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</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">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadEnvEffect</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">ReadIOEffect</span><span class="Other">,</span>
<span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</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/extccomp.nim#L1087" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L1087" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="writeMapping-procs-all">
<div id="writeMapping,ConfigRef,Rope">
<dt><pre><span class="Keyword">proc</span> <a href="#writeMapping%2CConfigRef%2CRope"><span class="Identifier">writeMapping</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">symbolMapping</span><span class="Other">:</span> <a href="ropes.html#Rope"><span class="Identifier">Rope</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">ValueError</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">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">WriteIOEffect</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">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/extccomp.nim#L1171" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/extccomp.nim#L1171" 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: 2026-07-10 18:29:08 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

41
compiler/extccomp.idx Normal file
View File

@@ -0,0 +1,41 @@
nimTitle extccomp extccomp.html module extccomp 0
nim hasSwitchRange extccomp.html#hasSwitchRange TInfoCCProp.hasSwitchRange 27
nim hasComputedGoto extccomp.html#hasComputedGoto TInfoCCProp.hasComputedGoto 27
nim hasCpp extccomp.html#hasCpp TInfoCCProp.hasCpp 27
nim hasAssume extccomp.html#hasAssume TInfoCCProp.hasAssume 27
nim hasGcGuard extccomp.html#hasGcGuard TInfoCCProp.hasGcGuard 27
nim hasGnuAsm extccomp.html#hasGnuAsm TInfoCCProp.hasGnuAsm 27
nim hasDeclspec extccomp.html#hasDeclspec TInfoCCProp.hasDeclspec 27
nim hasAttribute extccomp.html#hasAttribute TInfoCCProp.hasAttribute 27
nim hasBuiltinUnreachable extccomp.html#hasBuiltinUnreachable TInfoCCProp.hasBuiltinUnreachable 27
nim TInfoCCProp extccomp.html#TInfoCCProp enum TInfoCCProp 27
nim TInfoCCProps extccomp.html#TInfoCCProps type TInfoCCProps 37
nim TInfoCC extccomp.html#TInfoCC tuple TInfoCC 38
nim CC extccomp.html#CC const CC 297
nim hExt extccomp.html#hExt const hExt 312
nim nameToCC extccomp.html#nameToCC,string proc nameToCC(name: string): TSystemCC 319
nim isVSCompatible extccomp.html#isVSCompatible,ConfigRef proc isVSCompatible(conf: ConfigRef): bool 333
nim setCC extccomp.html#setCC,ConfigRef,string,TLineInfo proc setCC(conf: ConfigRef; ccname: string; info: TLineInfo) 364
nim addLinkOption extccomp.html#addLinkOption,ConfigRef,string proc addLinkOption(conf: ConfigRef; option: string) 378
nim addCompileOption extccomp.html#addCompileOption,ConfigRef,string proc addCompileOption(conf: ConfigRef; option: string) 381
nim addLinkOptionCmd extccomp.html#addLinkOptionCmd,ConfigRef,string proc addLinkOptionCmd(conf: ConfigRef; option: string) 385
nim addCompileOptionCmd extccomp.html#addCompileOptionCmd,ConfigRef,string proc addCompileOptionCmd(conf: ConfigRef; option: string) 388
nim initVars extccomp.html#initVars,ConfigRef proc initVars(conf: ConfigRef) 391
nim completeCfilePath extccomp.html#completeCfilePath,ConfigRef,AbsoluteFile,bool proc completeCfilePath(conf: ConfigRef; cfile: AbsoluteFile;\n createSubDir: bool = true): AbsoluteFile 400
nim toObjFile extccomp.html#toObjFile,ConfigRef,AbsoluteFile proc toObjFile(conf: ConfigRef; filename: AbsoluteFile): AbsoluteFile 405
nim addFileToCompile extccomp.html#addFileToCompile,ConfigRef,Cfile proc addFileToCompile(conf: ConfigRef; cf: Cfile) 409
nim addLocalCompileOption extccomp.html#addLocalCompileOption,ConfigRef,string,AbsoluteFile proc addLocalCompileOption(conf: ConfigRef; option: string; nimfile: AbsoluteFile) 412
nim resetCompilationLists extccomp.html#resetCompilationLists,ConfigRef proc resetCompilationLists(conf: ConfigRef) 419
nim addExternalFileToLink extccomp.html#addExternalFileToLink,ConfigRef,AbsoluteFile proc addExternalFileToLink(conf: ConfigRef; filename: AbsoluteFile) 427
nim execExternalProgram extccomp.html#execExternalProgram,ConfigRef,string proc execExternalProgram(conf: ConfigRef; cmd: string; msg = hintExecuting) 434
nim ccHasSaneOverflow extccomp.html#ccHasSaneOverflow,ConfigRef proc ccHasSaneOverflow(conf: ConfigRef): bool 561
nim getCompileCFileCmd extccomp.html#getCompileCFileCmd,ConfigRef,Cfile proc getCompileCFileCmd(conf: ConfigRef; cfile: Cfile; isMainFile = false;\n produceOutput = false): string 579
nim addExternalFileToCompile extccomp.html#addExternalFileToCompile,ConfigRef,Cfile proc addExternalFileToCompile(conf: ConfigRef; c: var Cfile) 691
nim addExternalFileToCompile extccomp.html#addExternalFileToCompile,ConfigRef,AbsoluteFile proc addExternalFileToCompile(conf: ConfigRef; filename: AbsoluteFile) 703
nim callCCompiler extccomp.html#callCCompiler,ConfigRef proc callCCompiler(conf: ConfigRef) 971
nim jsonBuildInstructionsFile extccomp.html#jsonBuildInstructionsFile,ConfigRef proc jsonBuildInstructionsFile(conf: ConfigRef): AbsoluteFile 1063
nim writeJsonBuildInstructions extccomp.html#writeJsonBuildInstructions,ConfigRef,StringTableRef proc writeJsonBuildInstructions(conf: ConfigRef; deps: StringTableRef) 1087
nim changeDetectedViaJsonBuildInstructions extccomp.html#changeDetectedViaJsonBuildInstructions,ConfigRef,AbsoluteFile proc changeDetectedViaJsonBuildInstructions(conf: ConfigRef; jsonFile: AbsoluteFile): bool 1122
nim runJsonBuildInstructions extccomp.html#runJsonBuildInstructions,ConfigRef,AbsoluteFile proc runJsonBuildInstructions(conf: ConfigRef; jsonFile: AbsoluteFile) 1142
nim writeMapping extccomp.html#writeMapping,ConfigRef,Rope proc writeMapping(conf: ConfigRef; symbolMapping: Rope) 1171
nimgrp addexternalfiletocompile extccomp.html#addExternalFileToCompile-procs-all proc 691

127
compiler/filter_tmpl.html Normal file
View File

@@ -0,0 +1,127 @@
<?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>filter_tmpl</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">filter_tmpl</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">filterTmpl
<li><a class="reference" href="#filterTmpl%2CConfigRef%2CPLLStream%2CAbsoluteFile%2CPNode" title="filterTmpl(conf: ConfigRef; stdin: PLLStream; filename: AbsoluteFile;
call: PNode): PLLStream">filterTmpl(conf: ConfigRef; stdin: PLLStream; filename: AbsoluteFile;
call: PNode): PLLStream</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/filter_tmpl.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/filter_tmpl.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="llstream.html">llstream</a>, <a class="reference external" href="ast.html">ast</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="filters.html">filters</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="pathutils.html">pathutils</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="filterTmpl-procs-all">
<div id="filterTmpl,ConfigRef,PLLStream,AbsoluteFile,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#filterTmpl%2CConfigRef%2CPLLStream%2CAbsoluteFile%2CPNode"><span class="Identifier">filterTmpl</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">stdin</span><span class="Other">:</span> <a href="llstream.html#PLLStream"><span class="Identifier">PLLStream</span></a><span class="Other">;</span> <span class="Identifier">filename</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</span></a><span class="Other">;</span>
<span class="Identifier">call</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="llstream.html#PLLStream"><span class="Identifier">PLLStream</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">ValueError</span><span class="Other">,</span>
<span class="Identifier">OSError</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">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">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="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/filter_tmpl.nim#L204" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/filter_tmpl.nim#L204" 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: 2026-07-10 18:29:08 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

2
compiler/filter_tmpl.idx Normal file
View File

@@ -0,0 +1,2 @@
nimTitle filter_tmpl filter_tmpl.html module filter_tmpl 0
nim filterTmpl filter_tmpl.html#filterTmpl,ConfigRef,PLLStream,AbsoluteFile,PNode proc filterTmpl(conf: ConfigRef; stdin: PLLStream; filename: AbsoluteFile;\n call: PNode): PLLStream 204

209
compiler/filters.html Normal file
View File

@@ -0,0 +1,209 @@
<?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>filters</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">filters</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">boolArg
<li><a class="reference" href="#boolArg%2CConfigRef%2CPNode%2Cstring%2Cint%2Cbool" title="boolArg(conf: ConfigRef; n: PNode; name: string; pos: int; default: bool): bool">boolArg(conf: ConfigRef; n: PNode; name: string; pos: int; default: bool): bool</a></li>
</ul>
<ul class="simple nested-toc-section">charArg
<li><a class="reference" href="#charArg%2CConfigRef%2CPNode%2Cstring%2Cint%2Cchar" title="charArg(conf: ConfigRef; n: PNode; name: string; pos: int; default: char): char">charArg(conf: ConfigRef; n: PNode; name: string; pos: int; default: char): char</a></li>
</ul>
<ul class="simple nested-toc-section">filterReplace
<li><a class="reference" href="#filterReplace%2CConfigRef%2CPLLStream%2CAbsoluteFile%2CPNode" title="filterReplace(conf: ConfigRef; stdin: PLLStream; filename: AbsoluteFile;
call: PNode): PLLStream">filterReplace(conf: ConfigRef; stdin: PLLStream; filename: AbsoluteFile;
call: PNode): PLLStream</a></li>
</ul>
<ul class="simple nested-toc-section">filterStrip
<li><a class="reference" href="#filterStrip%2CConfigRef%2CPLLStream%2CAbsoluteFile%2CPNode" title="filterStrip(conf: ConfigRef; stdin: PLLStream; filename: AbsoluteFile;
call: PNode): PLLStream">filterStrip(conf: ConfigRef; stdin: PLLStream; filename: AbsoluteFile;
call: PNode): PLLStream</a></li>
</ul>
<ul class="simple nested-toc-section">strArg
<li><a class="reference" href="#strArg%2CConfigRef%2CPNode%2Cstring%2Cint%2Cstring" title="strArg(conf: ConfigRef; n: PNode; name: string; pos: int; default: string): string">strArg(conf: ConfigRef; n: PNode; name: string; pos: int; default: string): string</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/filters.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/filters.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="llstream.html">llstream</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="ast.html">ast</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="renderer.html">renderer</a>, <a class="reference external" href="pathutils.html">pathutils</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="boolArg-procs-all">
<div id="boolArg,ConfigRef,PNode,string,int,bool">
<dt><pre><span class="Keyword">proc</span> <a href="#boolArg%2CConfigRef%2CPNode%2Cstring%2Cint%2Cbool"><span class="Identifier">boolArg</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">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">pos</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">default</span><span class="Other">:</span> <span class="Identifier">bool</span><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">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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/filters.nim#L50" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/filters.nim#L50" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="charArg-procs-all">
<div id="charArg,ConfigRef,PNode,string,int,char">
<dt><pre><span class="Keyword">proc</span> <a href="#charArg%2CConfigRef%2CPNode%2Cstring%2Cint%2Cchar"><span class="Identifier">charArg</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">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">pos</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">default</span><span class="Other">:</span> <span class="Identifier">char</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">char</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">ValueError</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="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/filters.nim#L33" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/filters.nim#L33" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="filterReplace-procs-all">
<div id="filterReplace,ConfigRef,PLLStream,AbsoluteFile,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#filterReplace%2CConfigRef%2CPLLStream%2CAbsoluteFile%2CPNode"><span class="Identifier">filterReplace</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">stdin</span><span class="Other">:</span> <a href="llstream.html#PLLStream"><span class="Identifier">PLLStream</span></a><span class="Other">;</span> <span class="Identifier">filename</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</span></a><span class="Other">;</span>
<span class="Identifier">call</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="llstream.html#PLLStream"><span class="Identifier">PLLStream</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">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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/filters.nim#L73" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/filters.nim#L73" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="filterStrip-procs-all">
<div id="filterStrip,ConfigRef,PLLStream,AbsoluteFile,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#filterStrip%2CConfigRef%2CPLLStream%2CAbsoluteFile%2CPNode"><span class="Identifier">filterStrip</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">stdin</span><span class="Other">:</span> <a href="llstream.html#PLLStream"><span class="Identifier">PLLStream</span></a><span class="Other">;</span> <span class="Identifier">filename</span><span class="Other">:</span> <a href="pathutils.html#AbsoluteFile"><span class="Identifier">AbsoluteFile</span></a><span class="Other">;</span>
<span class="Identifier">call</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="llstream.html#PLLStream"><span class="Identifier">PLLStream</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">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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/filters.nim#L59" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/filters.nim#L59" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="strArg-procs-all">
<div id="strArg,ConfigRef,PNode,string,int,string">
<dt><pre><span class="Keyword">proc</span> <a href="#strArg%2CConfigRef%2CPNode%2Cstring%2Cint%2Cstring"><span class="Identifier">strArg</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">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">pos</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">default</span><span class="Other">:</span> <span class="Identifier">string</span><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="Identifier">ValueError</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="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/filters.nim#L42" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/filters.nim#L42" 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: 2026-07-10 18:29:08 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

6
compiler/filters.idx Normal file
View File

@@ -0,0 +1,6 @@
nimTitle filters filters.html module filters 0
nim charArg filters.html#charArg,ConfigRef,PNode,string,int,char proc charArg(conf: ConfigRef; n: PNode; name: string; pos: int; default: char): char 33
nim strArg filters.html#strArg,ConfigRef,PNode,string,int,string proc strArg(conf: ConfigRef; n: PNode; name: string; pos: int; default: string): string 42
nim boolArg filters.html#boolArg,ConfigRef,PNode,string,int,bool proc boolArg(conf: ConfigRef; n: PNode; name: string; pos: int; default: bool): bool 50
nim filterStrip filters.html#filterStrip,ConfigRef,PLLStream,AbsoluteFile,PNode proc filterStrip(conf: ConfigRef; stdin: PLLStream; filename: AbsoluteFile;\n call: PNode): PLLStream 59
nim filterReplace filters.html#filterReplace,ConfigRef,PLLStream,AbsoluteFile,PNode proc filterReplace(conf: ConfigRef; stdin: PLLStream; filename: AbsoluteFile;\n call: PNode): PLLStream 73

127
compiler/gorgeimpl.html Normal file
View File

@@ -0,0 +1,127 @@
<?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>gorgeimpl</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">gorgeimpl</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">opGorge
<li><a class="reference" href="#opGorge%2Cstring%2Cstring%2Cstring%2CTLineInfo%2CConfigRef" title="opGorge(cmd, input, cache: string; info: TLineInfo; conf: ConfigRef): (string,
int)">opGorge(cmd, input, cache: string; info: TLineInfo; conf: ConfigRef): (string,
int)</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/gorgeimpl.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/gorgeimpl.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">Module that implements <tt class="docutils literal"><span class="pre">gorge</span></tt> for the compiler.</p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="pathutils.html">pathutils</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="opGorge-procs-all">
<div id="opGorge,string,string,string,TLineInfo,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#opGorge%2Cstring%2Cstring%2Cstring%2CTLineInfo%2CConfigRef"><span class="Identifier">opGorge</span></a><span class="Other">(</span><span class="Identifier">cmd</span><span class="Other">,</span> <span class="Identifier">input</span><span class="Other">,</span> <span class="Identifier">cache</span><span class="Other">:</span> <span class="Identifier">string</span><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">conf</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Other">(</span>
<span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">int</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">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">ValueError</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">ExecIOEffect</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">TimeEffect</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/gorgeimpl.nim#L31" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/gorgeimpl.nim#L31" 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: 2026-07-10 18:29:12 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

2
compiler/gorgeimpl.idx Normal file
View File

@@ -0,0 +1,2 @@
nimTitle gorgeimpl gorgeimpl.html module gorgeimpl 0
nim opGorge gorgeimpl.html#opGorge,string,string,string,TLineInfo,ConfigRef proc opGorge(cmd, input, cache: string; info: TLineInfo; conf: ConfigRef): (string,\n int) 31

584
compiler/guards.html Normal file
View File

@@ -0,0 +1,584 @@
<?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>guards</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">guards</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="#TModel" title="TModel = object
s*: seq[PNode]
g*: ModuleGraph
beSmart*: bool">TModel</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">addAsgnFact
<li><a class="reference" href="#addAsgnFact%2CTModel%2CPNode%2CPNode" title="addAsgnFact(m: var TModel; key, value: PNode)">addAsgnFact(m: var TModel; key, value: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">addCaseBranchFacts
<li><a class="reference" href="#addCaseBranchFacts%2CTModel%2CPNode%2Cint" title="addCaseBranchFacts(m: var TModel; n: PNode; i: int)">addCaseBranchFacts(m: var TModel; n: PNode; i: int)</a></li>
</ul>
<ul class="simple nested-toc-section">addDiscriminantFact
<li><a class="reference" href="#addDiscriminantFact%2CTModel%2CPNode" title="addDiscriminantFact(m: var TModel; n: PNode)">addDiscriminantFact(m: var TModel; n: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">addFact
<li><a class="reference" href="#addFact%2CTModel%2CPNode" title="addFact(m: var TModel; nn: PNode)">addFact(m: var TModel; nn: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">addFactLe
<li><a class="reference" href="#addFactLe%2CTModel%2CPNode%2CPNode" title="addFactLe(m: var TModel; a, b: PNode)">addFactLe(m: var TModel; a, b: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">addFactLt
<li><a class="reference" href="#addFactLt%2CTModel%2CPNode%2CPNode" title="addFactLt(m: var TModel; a, b: PNode)">addFactLt(m: var TModel; a, b: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">addFactNeg
<li><a class="reference" href="#addFactNeg%2CTModel%2CPNode" title="addFactNeg(m: var TModel; n: PNode)">addFactNeg(m: var TModel; n: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">buildAdd
<li><a class="reference" href="#buildAdd%2CPNode%2CBiggestInt%2COperators" title="buildAdd(a: PNode; b: BiggestInt; o: Operators): PNode">buildAdd(a: PNode; b: BiggestInt; o: Operators): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">buildCall
<li><a class="reference" href="#buildCall%2CPSym%2CPNode%2CPNode" title="buildCall(op: PSym; a, b: PNode): PNode">buildCall(op: PSym; a, b: PNode): PNode</a></li>
<li><a class="reference" href="#buildCall%2CPSym%2CPNode" title="buildCall(op: PSym; a: PNode): PNode">buildCall(op: PSym; a: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">buildLe
<li><a class="reference" href="#buildLe%2COperators%2CPNode%2CPNode" title="buildLe(o: Operators; a, b: PNode): PNode">buildLe(o: Operators; a, b: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">canon
<li><a class="reference" href="#canon%2CPNode%2COperators" title="canon(n: PNode; o: Operators): PNode">canon(n: PNode; o: Operators): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">checkFieldAccess
<li><a class="reference" href="#checkFieldAccess%2CTModel%2CPNode%2CConfigRef%2Cbool" title="checkFieldAccess(m: TModel; n: PNode; conf: ConfigRef; produceError: bool)">checkFieldAccess(m: TModel; n: PNode; conf: ConfigRef; produceError: bool)</a></li>
</ul>
<ul class="simple nested-toc-section">doesImply
<li><a class="reference" href="#doesImply%2CTModel%2CPNode" title="doesImply(facts: TModel; prop: PNode): TImplication">doesImply(facts: TModel; prop: PNode): TImplication</a></li>
</ul>
<ul class="simple nested-toc-section">highBound
<li><a class="reference" href="#highBound%2CConfigRef%2CPNode%2COperators" title="highBound(conf: ConfigRef; x: PNode; o: Operators): PNode">highBound(conf: ConfigRef; x: PNode; o: Operators): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">impliesNotNil
<li><a class="reference" href="#impliesNotNil%2CTModel%2CPNode" title="impliesNotNil(m: TModel; arg: PNode): TImplication">impliesNotNil(m: TModel; arg: PNode): TImplication</a></li>
</ul>
<ul class="simple nested-toc-section">interestingCaseExpr
<li><a class="reference" href="#interestingCaseExpr%2CPNode" title="interestingCaseExpr(m: PNode): bool">interestingCaseExpr(m: PNode): bool</a></li>
</ul>
<ul class="simple nested-toc-section">invalidateFacts
<li><a class="reference" href="#invalidateFacts%2CTModel%2CPNode" title="invalidateFacts(m: var TModel; n: PNode)">invalidateFacts(m: var TModel; n: PNode)</a></li>
<li><a class="reference" href="#invalidateFacts%2Cseq%5BPNode%5D%2CPNode" title="invalidateFacts(s: var seq[PNode]; n: PNode)">invalidateFacts(s: var seq[PNode]; n: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">lowBound
<li><a class="reference" href="#lowBound%2CConfigRef%2CPNode" title="lowBound(conf: ConfigRef; x: PNode): PNode">lowBound(conf: ConfigRef; x: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">proveLe
<li><a class="reference" href="#proveLe%2CTModel%2CPNode%2CPNode" title="proveLe(m: TModel; a, b: PNode): TImplication">proveLe(m: TModel; a, b: PNode): TImplication</a></li>
</ul>
<ul class="simple nested-toc-section">sameSubexprs
<li><a class="reference" href="#sameSubexprs%2CTModel%2CPNode%2CPNode" title="sameSubexprs(m: TModel; a, b: PNode): bool">sameSubexprs(m: TModel; a, b: PNode): bool</a></li>
</ul>
<ul class="simple nested-toc-section">sameTree
<li><a class="reference" href="#sameTree%2CPNode%2CPNode" title="sameTree(a, b: PNode): bool">sameTree(a, b: PNode): bool</a></li>
</ul>
<ul class="simple nested-toc-section">simpleSlice
<li><a class="reference" href="#simpleSlice%2CPNode%2CPNode" title="simpleSlice(a, b: PNode): BiggestInt">simpleSlice(a, b: PNode): BiggestInt</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/guards.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">This module implements the 'implies' relation for guards.</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="msgs.html">msgs</a>, <a class="reference external" href="magicsys.html">magicsys</a>, <a class="reference external" href="nimsets.html">nimsets</a>, <a class="reference external" href="trees.html">trees</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="renderer.html">renderer</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="saturate.html">saturate</a>, <a class="reference external" href="modulegraphs.html">modulegraphs</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="int128.html">int128</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="TModel">
<dt><pre><a href="#TModel"><span class="Identifier">TModel</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">s</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">]</span>
<span class="Identifier">g</span><span class="Operator">*</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a>
<span class="Identifier">beSmart</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/guards.nim#L415" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L415" 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="addAsgnFact-procs-all">
<div id="addAsgnFact,TModel,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#addAsgnFact%2CTModel%2CPNode%2CPNode"><span class="Identifier">addAsgnFact</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TModel"><span class="Identifier">TModel</span></a><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">,</span> <span class="Identifier">value</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/guards.nim#L1134" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L1134" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addCaseBranchFacts-procs-all">
<div id="addCaseBranchFacts,TModel,PNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#addCaseBranchFacts%2CTModel%2CPNode%2Cint"><span class="Identifier">addCaseBranchFacts</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TModel"><span class="Identifier">TModel</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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/guards.nim#L1157" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L1157" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addDiscriminantFact-procs-all">
<div id="addDiscriminantFact,TModel,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#addDiscriminantFact%2CTModel%2CPNode"><span class="Identifier">addDiscriminantFact</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TModel"><span class="Identifier">TModel</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/guards.nim#L1127" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L1127" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addFact-procs-all">
<div id="addFact,TModel,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#addFact%2CTModel%2CPNode"><span class="Identifier">addFact</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TModel"><span class="Identifier">TModel</span></a><span class="Other">;</span> <span class="Identifier">nn</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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/guards.nim#L420" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L420" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addFactLe-procs-all">
<div id="addFactLe,TModel,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#addFactLe%2CTModel%2CPNode%2CPNode"><span class="Identifier">addFactLe</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TModel"><span class="Identifier">TModel</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="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/guards.nim#L1093" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L1093" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addFactLt-procs-all">
<div id="addFactLt,TModel,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#addFactLt%2CTModel%2CPNode%2CPNode"><span class="Identifier">addFactLt</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TModel"><span class="Identifier">TModel</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="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/guards.nim#L1096" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L1096" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addFactNeg-procs-all">
<div id="addFactNeg,TModel,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#addFactNeg%2CTModel%2CPNode"><span class="Identifier">addFactNeg</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TModel"><span class="Identifier">TModel</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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/guards.nim#L433" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L433" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="buildAdd-procs-all">
<div id="buildAdd,PNode,BiggestInt,Operators">
<dt><pre><span class="Keyword">proc</span> <a href="#buildAdd%2CPNode%2CBiggestInt%2COperators"><span class="Identifier">buildAdd</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">b</span><span class="Other">:</span> <span class="Identifier">BiggestInt</span><span class="Other">;</span> <span class="Identifier">o</span><span class="Other">:</span> <a href="modulegraphs.html#Operators"><span class="Identifier">Operators</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/guards.nim#L324" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L324" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="buildCall-procs-all">
<div id="buildCall,PSym,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#buildCall%2CPSym%2CPNode%2CPNode"><span class="Identifier">buildCall</span></a><span class="Other">(</span><span class="Identifier">op</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</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="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/guards.nim#L156" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L156" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="buildCall,PSym,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#buildCall%2CPSym%2CPNode"><span class="Identifier">buildCall</span></a><span class="Other">(</span><span class="Identifier">op</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">a</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/guards.nim#L151" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L151" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="buildLe-procs-all">
<div id="buildLe,Operators,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#buildLe%2COperators%2CPNode%2CPNode"><span class="Identifier">buildLe</span></a><span class="Other">(</span><span class="Identifier">o</span><span class="Other">:</span> <a href="modulegraphs.html#Operators"><span class="Identifier">Operators</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="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/guards.nim#L244" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L244" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="canon-procs-all">
<div id="canon,PNode,Operators">
<dt><pre><span class="Keyword">proc</span> <a href="#canon%2CPNode%2COperators"><span class="Identifier">canon</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">o</span><span class="Other">:</span> <a href="modulegraphs.html#Operators"><span class="Identifier">Operators</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/guards.nim#L247" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L247" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="checkFieldAccess-procs-all">
<div id="checkFieldAccess,TModel,PNode,ConfigRef,bool">
<dt><pre><span class="Keyword">proc</span> <a href="#checkFieldAccess%2CTModel%2CPNode%2CConfigRef%2Cbool"><span class="Identifier">checkFieldAccess</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="#TModel"><span class="Identifier">TModel</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">produceError</span><span class="Other">:</span> <span class="Identifier">bool</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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="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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/guards.nim#L1182" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L1182" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="doesImply-procs-all">
<div id="doesImply,TModel,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#doesImply%2CTModel%2CPNode"><span class="Identifier">doesImply</span></a><span class="Other">(</span><span class="Identifier">facts</span><span class="Other">:</span> <a href="#TModel"><span class="Identifier">TModel</span></a><span class="Other">;</span> <span class="Identifier">prop</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#TImplication"><span class="Identifier">TImplication</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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="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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/guards.nim#L842" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L842" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="highBound-procs-all">
<div id="highBound,ConfigRef,PNode,Operators">
<dt><pre><span class="Keyword">proc</span> <a href="#highBound%2CConfigRef%2CPNode%2COperators"><span class="Identifier">highBound</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">x</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">o</span><span class="Other">:</span> <a href="modulegraphs.html#Operators"><span class="Identifier">Operators</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/guards.nim#L206" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L206" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="impliesNotNil-procs-all">
<div id="impliesNotNil,TModel,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#impliesNotNil%2CTModel%2CPNode"><span class="Identifier">impliesNotNil</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="#TModel"><span class="Identifier">TModel</span></a><span class="Other">;</span> <span class="Identifier">arg</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#TImplication"><span class="Identifier">TImplication</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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="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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/guards.nim#L851" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L851" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="interestingCaseExpr-procs-all">
<div id="interestingCaseExpr,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#interestingCaseExpr%2CPNode"><span class="Identifier">interestingCaseExpr</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/guards.nim#L93" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L93" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="invalidateFacts-procs-all">
<div id="invalidateFacts,TModel,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#invalidateFacts%2CTModel%2CPNode"><span class="Identifier">invalidateFacts</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#TModel"><span class="Identifier">TModel</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/guards.nim#L505" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L505" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="invalidateFacts,seq[PNode],PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#invalidateFacts%2Cseq%5BPNode%5D%2CPNode"><span class="Identifier">invalidateFacts</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/guards.nim#L484" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L484" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="lowBound-procs-all">
<div id="lowBound,ConfigRef,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#lowBound%2CConfigRef%2CPNode"><span class="Identifier">lowBound</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">x</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/guards.nim#L202" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L202" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="proveLe-procs-all">
<div id="proveLe,TModel,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#proveLe%2CTModel%2CPNode%2CPNode"><span class="Identifier">proveLe</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="#TModel"><span class="Identifier">TModel</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="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#TImplication"><span class="Identifier">TImplication</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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</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="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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/guards.nim#L1084" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L1084" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="sameSubexprs-procs-all">
<div id="sameSubexprs,TModel,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#sameSubexprs%2CTModel%2CPNode%2CPNode"><span class="Identifier">sameSubexprs</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="#TModel"><span class="Identifier">TModel</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="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</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="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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/guards.nim#L1141" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L1141" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="sameTree-procs-all">
<div id="sameTree,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#sameTree%2CPNode%2CPNode"><span class="Identifier">sameTree</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="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span>
<span class="Identifier">ValueError</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">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/guards.nim#L449" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L449" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="simpleSlice-procs-all">
<div id="simpleSlice,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#simpleSlice%2CPNode%2CPNode"><span class="Identifier">simpleSlice</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="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">BiggestInt</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/guards.nim#L854" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/guards.nim#L854" 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: 2026-07-10 18:29:09 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

28
compiler/guards.idx Normal file
View File

@@ -0,0 +1,28 @@
nimTitle guards guards.html module guards 0
nim interestingCaseExpr guards.html#interestingCaseExpr,PNode proc interestingCaseExpr(m: PNode): bool 93
nim buildCall guards.html#buildCall,PSym,PNode proc buildCall(op: PSym; a: PNode): PNode 151
nim buildCall guards.html#buildCall,PSym,PNode,PNode proc buildCall(op: PSym; a, b: PNode): PNode 156
nim lowBound guards.html#lowBound,ConfigRef,PNode proc lowBound(conf: ConfigRef; x: PNode): PNode 202
nim highBound guards.html#highBound,ConfigRef,PNode,Operators proc highBound(conf: ConfigRef; x: PNode; o: Operators): PNode 206
nim buildLe guards.html#buildLe,Operators,PNode,PNode proc buildLe(o: Operators; a, b: PNode): PNode 244
nim canon guards.html#canon,PNode,Operators proc canon(n: PNode; o: Operators): PNode 247
nim buildAdd guards.html#buildAdd,PNode,BiggestInt,Operators proc buildAdd(a: PNode; b: BiggestInt; o: Operators): PNode 324
nim TModel guards.html#TModel object TModel 415
nim addFact guards.html#addFact,TModel,PNode proc addFact(m: var TModel; nn: PNode) 420
nim addFactNeg guards.html#addFactNeg,TModel,PNode proc addFactNeg(m: var TModel; n: PNode) 433
nim sameTree guards.html#sameTree,PNode,PNode proc sameTree(a, b: PNode): bool 449
nim invalidateFacts guards.html#invalidateFacts,seq[PNode],PNode proc invalidateFacts(s: var seq[PNode]; n: PNode) 484
nim invalidateFacts guards.html#invalidateFacts,TModel,PNode proc invalidateFacts(m: var TModel; n: PNode) 505
nim doesImply guards.html#doesImply,TModel,PNode proc doesImply(facts: TModel; prop: PNode): TImplication 842
nim impliesNotNil guards.html#impliesNotNil,TModel,PNode proc impliesNotNil(m: TModel; arg: PNode): TImplication 851
nim simpleSlice guards.html#simpleSlice,PNode,PNode proc simpleSlice(a, b: PNode): BiggestInt 854
nim proveLe guards.html#proveLe,TModel,PNode,PNode proc proveLe(m: TModel; a, b: PNode): TImplication 1084
nim addFactLe guards.html#addFactLe,TModel,PNode,PNode proc addFactLe(m: var TModel; a, b: PNode) 1093
nim addFactLt guards.html#addFactLt,TModel,PNode,PNode proc addFactLt(m: var TModel; a, b: PNode) 1096
nim addDiscriminantFact guards.html#addDiscriminantFact,TModel,PNode proc addDiscriminantFact(m: var TModel; n: PNode) 1127
nim addAsgnFact guards.html#addAsgnFact,TModel,PNode,PNode proc addAsgnFact(m: var TModel; key, value: PNode) 1134
nim sameSubexprs guards.html#sameSubexprs,TModel,PNode,PNode proc sameSubexprs(m: TModel; a, b: PNode): bool 1141
nim addCaseBranchFacts guards.html#addCaseBranchFacts,TModel,PNode,int proc addCaseBranchFacts(m: var TModel; n: PNode; i: int) 1157
nim checkFieldAccess guards.html#checkFieldAccess,TModel,PNode,ConfigRef,bool proc checkFieldAccess(m: TModel; n: PNode; conf: ConfigRef; produceError: bool) 1182
nimgrp buildcall guards.html#buildCall-procs-all proc 151
nimgrp invalidatefacts guards.html#invalidateFacts-procs-all proc 484

414
compiler/ic/enum2nif.html Normal file
View File

@@ -0,0 +1,414 @@
<?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>ic/enum2nif</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">ic/enum2nif</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">genFlags
<li><a class="reference" href="#genFlags%2Cset%5BTLocFlag%5D%2Cstring" title="genFlags(s: set[TLocFlag]; dest: var string)">genFlags(s: set[TLocFlag]; dest: var string)</a></li>
<li><a class="reference" href="#genFlags%2Cset%5BTNodeFlag%5D%2Cstring" title="genFlags(s: set[TNodeFlag]; dest: var string)">genFlags(s: set[TNodeFlag]; dest: var string)</a></li>
<li><a class="reference" href="#genFlags%2Cset%5BTOption%5D%2Cstring" title="genFlags(s: set[TOption]; dest: var string)">genFlags(s: set[TOption]; dest: var string)</a></li>
<li><a class="reference" href="#genFlags%2Cset%5BTSymFlag%5D%2Cstring" title="genFlags(s: set[TSymFlag]; dest: var string)">genFlags(s: set[TSymFlag]; dest: var string)</a></li>
<li><a class="reference" href="#genFlags%2Cset%5BTTypeFlag%5D%2Cstring" title="genFlags(s: set[TTypeFlag]; dest: var string)">genFlags(s: set[TTypeFlag]; dest: var string)</a></li>
</ul>
<ul class="simple nested-toc-section">parse
<li><a class="reference" href="#parse%2Ctypedesc%5BTCallingConvention%5D%2Cstring" title="parse(t: typedesc[TCallingConvention]; s: string): TCallingConvention">parse(t: typedesc[TCallingConvention]; s: string): TCallingConvention</a></li>
<li><a class="reference" href="#parse%2Ctypedesc%5BTLibKind%5D%2Cstring" title="parse(t: typedesc[TLibKind]; s: string): TLibKind">parse(t: typedesc[TLibKind]; s: string): TLibKind</a></li>
<li><a class="reference" href="#parse%2Ctypedesc%5BTLocFlag%5D%2Cstring" title="parse(t: typedesc[TLocFlag]; s: string): set[TLocFlag]">parse(t: typedesc[TLocFlag]; s: string): set[TLocFlag]</a></li>
<li><a class="reference" href="#parse%2Ctypedesc%5BTLocKind%5D%2Cstring" title="parse(t: typedesc[TLocKind]; s: string): TLocKind">parse(t: typedesc[TLocKind]; s: string): TLocKind</a></li>
<li><a class="reference" href="#parse%2Ctypedesc%5BTMagic%5D%2Cstring" title="parse(t: typedesc[TMagic]; s: string): TMagic">parse(t: typedesc[TMagic]; s: string): TMagic</a></li>
<li><a class="reference" href="#parse%2Ctypedesc%5BTNodeFlag%5D%2Cstring" title="parse(t: typedesc[TNodeFlag]; s: string): set[TNodeFlag]">parse(t: typedesc[TNodeFlag]; s: string): set[TNodeFlag]</a></li>
<li><a class="reference" href="#parse%2Ctypedesc%5BTNodeKind%5D%2Cstring" title="parse(t: typedesc[TNodeKind]; s: string): TNodeKind">parse(t: typedesc[TNodeKind]; s: string): TNodeKind</a></li>
<li><a class="reference" href="#parse%2Ctypedesc%5BTOption%5D%2Cstring" title="parse(t: typedesc[TOption]; s: string): set[TOption]">parse(t: typedesc[TOption]; s: string): set[TOption]</a></li>
<li><a class="reference" href="#parse%2Ctypedesc%5BTStorageLoc%5D%2Cstring" title="parse(t: typedesc[TStorageLoc]; s: string): TStorageLoc">parse(t: typedesc[TStorageLoc]; s: string): TStorageLoc</a></li>
<li><a class="reference" href="#parse%2Ctypedesc%5BTSymFlag%5D%2Cstring" title="parse(t: typedesc[TSymFlag]; s: string): set[TSymFlag]">parse(t: typedesc[TSymFlag]; s: string): set[TSymFlag]</a></li>
<li><a class="reference" href="#parse%2Ctypedesc%5BTSymKind%5D%2Cstring" title="parse(t: typedesc[TSymKind]; s: string): TSymKind">parse(t: typedesc[TSymKind]; s: string): TSymKind</a></li>
<li><a class="reference" href="#parse%2Ctypedesc%5BTTypeFlag%5D%2Cstring" title="parse(t: typedesc[TTypeFlag]; s: string): set[TTypeFlag]">parse(t: typedesc[TTypeFlag]; s: string): set[TTypeFlag]</a></li>
<li><a class="reference" href="#parse%2Ctypedesc%5BTTypeKind%5D%2Cstring" title="parse(t: typedesc[TTypeKind]; s: string): TTypeKind">parse(t: typedesc[TTypeKind]; s: string): TTypeKind</a></li>
</ul>
<ul class="simple nested-toc-section">toNifTag
<li><a class="reference" href="#toNifTag%2CTCallingConvention" title="toNifTag(s: TCallingConvention): string">toNifTag(s: TCallingConvention): string</a></li>
<li><a class="reference" href="#toNifTag%2CTLibKind" title="toNifTag(s: TLibKind): string">toNifTag(s: TLibKind): string</a></li>
<li><a class="reference" href="#toNifTag%2CTLocKind" title="toNifTag(s: TLocKind): string">toNifTag(s: TLocKind): string</a></li>
<li><a class="reference" href="#toNifTag%2CTMagic" title="toNifTag(s: TMagic): string">toNifTag(s: TMagic): string</a></li>
<li><a class="reference" href="#toNifTag%2CTNodeKind" title="toNifTag(s: TNodeKind): string">toNifTag(s: TNodeKind): string</a></li>
<li><a class="reference" href="#toNifTag%2CTStorageLoc" title="toNifTag(s: TStorageLoc): string">toNifTag(s: TStorageLoc): string</a></li>
<li><a class="reference" href="#toNifTag%2CTSymKind" title="toNifTag(s: TSymKind): string">toNifTag(s: TSymKind): string</a></li>
<li><a class="reference" href="#toNifTag%2CTTypeKind" title="toNifTag(s: TTypeKind): string">toNifTag(s: TTypeKind): string</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/ic/enum2nif.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></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="../options.html">../options</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="genFlags-procs-all">
<div id="genFlags,set[TLocFlag],string">
<dt><pre><span class="Keyword">proc</span> <a href="#genFlags%2Cset%5BTLocFlag%5D%2Cstring"><span class="Identifier">genFlags</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">set</span><span class="Other">[</span><a href="../astdef.html#TLocFlag"><span class="Identifier">TLocFlag</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">dest</span><span class="Other">:</span> <span class="Keyword">var</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/ic/enum2nif.nim#L1724" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L1724" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="genFlags,set[TNodeFlag],string">
<dt><pre><span class="Keyword">proc</span> <a href="#genFlags%2Cset%5BTNodeFlag%5D%2Cstring"><span class="Identifier">genFlags</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">set</span><span class="Other">[</span><a href="../astdef.html#TNodeFlag"><span class="Identifier">TNodeFlag</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">dest</span><span class="Other">:</span> <span class="Keyword">var</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/ic/enum2nif.nim#L1446" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L1446" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="genFlags,set[TOption],string">
<dt><pre><span class="Keyword">proc</span> <a href="#genFlags%2Cset%5BTOption%5D%2Cstring"><span class="Identifier">genFlags</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">set</span><span class="Other">[</span><a href="../options.html#TOption"><span class="Identifier">TOption</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">dest</span><span class="Other">:</span> <span class="Keyword">var</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/ic/enum2nif.nim#L1760" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L1760" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="genFlags,set[TSymFlag],string">
<dt><pre><span class="Keyword">proc</span> <a href="#genFlags%2Cset%5BTSymFlag%5D%2Cstring"><span class="Identifier">genFlags</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">set</span><span class="Other">[</span><a href="../astdef.html#TSymFlag"><span class="Identifier">TSymFlag</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">dest</span><span class="Other">:</span> <span class="Keyword">var</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/ic/enum2nif.nim#L1203" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L1203" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="genFlags,set[TTypeFlag],string">
<dt><pre><span class="Keyword">proc</span> <a href="#genFlags%2Cset%5BTTypeFlag%5D%2Cstring"><span class="Identifier">genFlags</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">set</span><span class="Other">[</span><a href="../astdef.html#TTypeFlag"><span class="Identifier">TTypeFlag</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">dest</span><span class="Other">:</span> <span class="Keyword">var</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/ic/enum2nif.nim#L1543" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L1543" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="parse-procs-all">
<div id="parse,typedesc[TCallingConvention],string">
<dt><pre><span class="Keyword">proc</span> <a href="#parse%2Ctypedesc%5BTCallingConvention%5D%2Cstring"><span class="Identifier">parse</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">[</span><a href="../astdef.html#TCallingConvention"><span class="Identifier">TCallingConvention</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="../astdef.html#TCallingConvention"><span class="Identifier">TCallingConvention</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ic/enum2nif.nim#L591" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L591" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="parse,typedesc[TLibKind],string">
<dt><pre><span class="Keyword">proc</span> <a href="#parse%2Ctypedesc%5BTLibKind%5D%2Cstring"><span class="Identifier">parse</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">[</span><a href="../astdef.html#TLibKind"><span class="Identifier">TLibKind</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="../astdef.html#TLibKind"><span class="Identifier">TLibKind</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ic/enum2nif.nim#L1196" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L1196" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="parse,typedesc[TLocFlag],string">
<dt><pre><span class="Keyword">proc</span> <a href="#parse%2Ctypedesc%5BTLocFlag%5D%2Cstring"><span class="Identifier">parse</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">[</span><a href="../astdef.html#TLocFlag"><span class="Identifier">TLocFlag</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">set</span><span class="Other">[</span><a href="../astdef.html#TLocFlag"><span class="Identifier">TLocFlag</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ic/enum2nif.nim#L1739" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L1739" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="parse,typedesc[TLocKind],string">
<dt><pre><span class="Keyword">proc</span> <a href="#parse%2Ctypedesc%5BTLocKind%5D%2Cstring"><span class="Identifier">parse</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">[</span><a href="../astdef.html#TLocKind"><span class="Identifier">TLocKind</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="../astdef.html#TLocKind"><span class="Identifier">TLocKind</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ic/enum2nif.nim#L559" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L559" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="parse,typedesc[TMagic],string">
<dt><pre><span class="Keyword">proc</span> <a href="#parse%2Ctypedesc%5BTMagic%5D%2Cstring"><span class="Identifier">parse</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">[</span><a href="../astdef.html#TMagic"><span class="Identifier">TMagic</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="../astdef.html#TMagic"><span class="Identifier">TMagic</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ic/enum2nif.nim#L890" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L890" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="parse,typedesc[TNodeFlag],string">
<dt><pre><span class="Keyword">proc</span> <a href="#parse%2Ctypedesc%5BTNodeFlag%5D%2Cstring"><span class="Identifier">parse</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">[</span><a href="../astdef.html#TNodeFlag"><span class="Identifier">TNodeFlag</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">set</span><span class="Other">[</span><a href="../astdef.html#TNodeFlag"><span class="Identifier">TNodeFlag</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ic/enum2nif.nim#L1480" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L1480" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="parse,typedesc[TNodeKind],string">
<dt><pre><span class="Keyword">proc</span> <a href="#parse%2Ctypedesc%5BTNodeKind%5D%2Cstring"><span class="Identifier">parse</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">[</span><a href="../nodekinds.html#TNodeKind"><span class="Identifier">TNodeKind</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="../nodekinds.html#TNodeKind"><span class="Identifier">TNodeKind</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ic/enum2nif.nim#L175" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L175" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="parse,typedesc[TOption],string">
<dt><pre><span class="Keyword">proc</span> <a href="#parse%2Ctypedesc%5BTOption%5D%2Cstring"><span class="Identifier">parse</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">[</span><a href="../options.html#TOption"><span class="Identifier">TOption</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">set</span><span class="Other">[</span><a href="../options.html#TOption"><span class="Identifier">TOption</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ic/enum2nif.nim#L1794" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L1794" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="parse,typedesc[TStorageLoc],string">
<dt><pre><span class="Keyword">proc</span> <a href="#parse%2Ctypedesc%5BTStorageLoc%5D%2Cstring"><span class="Identifier">parse</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">[</span><a href="../astdef.html#TStorageLoc"><span class="Identifier">TStorageLoc</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="../astdef.html#TStorageLoc"><span class="Identifier">TStorageLoc</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ic/enum2nif.nim#L1181" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L1181" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="parse,typedesc[TSymFlag],string">
<dt><pre><span class="Keyword">proc</span> <a href="#parse%2Ctypedesc%5BTSymFlag%5D%2Cstring"><span class="Identifier">parse</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">[</span><a href="../astdef.html#TSymFlag"><span class="Identifier">TSymFlag</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">set</span><span class="Other">[</span><a href="../astdef.html#TSymFlag"><span class="Identifier">TSymFlag</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ic/enum2nif.nim#L1271" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L1271" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="parse,typedesc[TSymKind],string">
<dt><pre><span class="Keyword">proc</span> <a href="#parse%2Ctypedesc%5BTSymKind%5D%2Cstring"><span class="Identifier">parse</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">[</span><a href="../astdef.html#TSymKind"><span class="Identifier">TSymKind</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="../astdef.html#TSymKind"><span class="Identifier">TSymKind</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ic/enum2nif.nim#L375" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L375" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="parse,typedesc[TTypeFlag],string">
<dt><pre><span class="Keyword">proc</span> <a href="#parse%2Ctypedesc%5BTTypeFlag%5D%2Cstring"><span class="Identifier">parse</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">[</span><a href="../astdef.html#TTypeFlag"><span class="Identifier">TTypeFlag</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">set</span><span class="Other">[</span><a href="../astdef.html#TTypeFlag"><span class="Identifier">TTypeFlag</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ic/enum2nif.nim#L1596" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L1596" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="parse,typedesc[TTypeKind],string">
<dt><pre><span class="Keyword">proc</span> <a href="#parse%2Ctypedesc%5BTTypeKind%5D%2Cstring"><span class="Identifier">parse</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">[</span><a href="../astdef.html#TTypeKind"><span class="Identifier">TTypeKind</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="../astdef.html#TTypeKind"><span class="Identifier">TTypeKind</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ic/enum2nif.nim#L474" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L474" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="toNifTag-procs-all">
<div id="toNifTag,TCallingConvention">
<dt><pre><span class="Keyword">proc</span> <a href="#toNifTag%2CTCallingConvention"><span class="Identifier">toNifTag</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="../astdef.html#TCallingConvention"><span class="Identifier">TCallingConvention</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/ic/enum2nif.nim#L575" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L575" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="toNifTag,TLibKind">
<dt><pre><span class="Keyword">proc</span> <a href="#toNifTag%2CTLibKind"><span class="Identifier">toNifTag</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="../astdef.html#TLibKind"><span class="Identifier">TLibKind</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/ic/enum2nif.nim#L1190" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L1190" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="toNifTag,TLocKind">
<dt><pre><span class="Keyword">proc</span> <a href="#toNifTag%2CTLocKind"><span class="Identifier">toNifTag</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="../astdef.html#TLocKind"><span class="Identifier">TLocKind</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/ic/enum2nif.nim#L544" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L544" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="toNifTag,TMagic">
<dt><pre><span class="Keyword">proc</span> <a href="#toNifTag%2CTMagic"><span class="Identifier">toNifTag</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="../astdef.html#TMagic"><span class="Identifier">TMagic</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/ic/enum2nif.nim#L608" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L608" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="toNifTag,TNodeKind">
<dt><pre><span class="Keyword">proc</span> <a href="#toNifTag%2CTNodeKind"><span class="Identifier">toNifTag</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="../nodekinds.html#TNodeKind"><span class="Identifier">TNodeKind</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/ic/enum2nif.nim#L5" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L5" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="toNifTag,TStorageLoc">
<dt><pre><span class="Keyword">proc</span> <a href="#toNifTag%2CTStorageLoc"><span class="Identifier">toNifTag</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="../astdef.html#TStorageLoc"><span class="Identifier">TStorageLoc</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/ic/enum2nif.nim#L1173" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L1173" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="toNifTag,TSymKind">
<dt><pre><span class="Keyword">proc</span> <a href="#toNifTag%2CTSymKind"><span class="Identifier">toNifTag</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="../astdef.html#TSymKind"><span class="Identifier">TSymKind</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/ic/enum2nif.nim#L346" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L346" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="toNifTag,TTypeKind">
<dt><pre><span class="Keyword">proc</span> <a href="#toNifTag%2CTTypeKind"><span class="Identifier">toNifTag</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="../astdef.html#TTypeKind"><span class="Identifier">TTypeKind</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/ic/enum2nif.nim#L405" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/enum2nif.nim#L405" 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: 2026-07-10 18:29:07 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

30
compiler/ic/enum2nif.idx Normal file
View File

@@ -0,0 +1,30 @@
nimTitle enum2nif ic/enum2nif.html module ic/enum2nif 0
nim toNifTag ic/enum2nif.html#toNifTag,TNodeKind proc toNifTag(s: TNodeKind): string 5
nim parse ic/enum2nif.html#parse,typedesc[TNodeKind],string proc parse(t: typedesc[TNodeKind]; s: string): TNodeKind 175
nim toNifTag ic/enum2nif.html#toNifTag,TSymKind proc toNifTag(s: TSymKind): string 346
nim parse ic/enum2nif.html#parse,typedesc[TSymKind],string proc parse(t: typedesc[TSymKind]; s: string): TSymKind 375
nim toNifTag ic/enum2nif.html#toNifTag,TTypeKind proc toNifTag(s: TTypeKind): string 405
nim parse ic/enum2nif.html#parse,typedesc[TTypeKind],string proc parse(t: typedesc[TTypeKind]; s: string): TTypeKind 474
nim toNifTag ic/enum2nif.html#toNifTag,TLocKind proc toNifTag(s: TLocKind): string 544
nim parse ic/enum2nif.html#parse,typedesc[TLocKind],string proc parse(t: typedesc[TLocKind]; s: string): TLocKind 559
nim toNifTag ic/enum2nif.html#toNifTag,TCallingConvention proc toNifTag(s: TCallingConvention): string 575
nim parse ic/enum2nif.html#parse,typedesc[TCallingConvention],string proc parse(t: typedesc[TCallingConvention]; s: string): TCallingConvention 591
nim toNifTag ic/enum2nif.html#toNifTag,TMagic proc toNifTag(s: TMagic): string 608
nim parse ic/enum2nif.html#parse,typedesc[TMagic],string proc parse(t: typedesc[TMagic]; s: string): TMagic 890
nim toNifTag ic/enum2nif.html#toNifTag,TStorageLoc proc toNifTag(s: TStorageLoc): string 1173
nim parse ic/enum2nif.html#parse,typedesc[TStorageLoc],string proc parse(t: typedesc[TStorageLoc]; s: string): TStorageLoc 1181
nim toNifTag ic/enum2nif.html#toNifTag,TLibKind proc toNifTag(s: TLibKind): string 1190
nim parse ic/enum2nif.html#parse,typedesc[TLibKind],string proc parse(t: typedesc[TLibKind]; s: string): TLibKind 1196
nim genFlags ic/enum2nif.html#genFlags,set[TSymFlag],string proc genFlags(s: set[TSymFlag]; dest: var string) 1203
nim parse ic/enum2nif.html#parse,typedesc[TSymFlag],string proc parse(t: typedesc[TSymFlag]; s: string): set[TSymFlag] 1271
nim genFlags ic/enum2nif.html#genFlags,set[TNodeFlag],string proc genFlags(s: set[TNodeFlag]; dest: var string) 1446
nim parse ic/enum2nif.html#parse,typedesc[TNodeFlag],string proc parse(t: typedesc[TNodeFlag]; s: string): set[TNodeFlag] 1480
nim genFlags ic/enum2nif.html#genFlags,set[TTypeFlag],string proc genFlags(s: set[TTypeFlag]; dest: var string) 1543
nim parse ic/enum2nif.html#parse,typedesc[TTypeFlag],string proc parse(t: typedesc[TTypeFlag]; s: string): set[TTypeFlag] 1596
nim genFlags ic/enum2nif.html#genFlags,set[TLocFlag],string proc genFlags(s: set[TLocFlag]; dest: var string) 1724
nim parse ic/enum2nif.html#parse,typedesc[TLocFlag],string proc parse(t: typedesc[TLocFlag]; s: string): set[TLocFlag] 1739
nim genFlags ic/enum2nif.html#genFlags,set[TOption],string proc genFlags(s: set[TOption]; dest: var string) 1760
nim parse ic/enum2nif.html#parse,typedesc[TOption],string proc parse(t: typedesc[TOption]; s: string): set[TOption] 1794
nimgrp parse ic/enum2nif.html#parse-procs-all proc 175
nimgrp genflags ic/enum2nif.html#genFlags-procs-all proc 1203
nimgrp toniftag ic/enum2nif.html#toNifTag-procs-all proc 5

145
compiler/ic/replayer.html Normal file
View File

@@ -0,0 +1,145 @@
<?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>ic/replayer</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">ic/replayer</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">replayBackendActions
<li><a class="reference" href="#replayBackendActions%2CModuleGraph%2CPSym%2CPNode" title="replayBackendActions(g: ModuleGraph; module: PSym; list: PNode)">replayBackendActions(g: ModuleGraph; module: PSym; list: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">replayStateChanges
<li><a class="reference" href="#replayStateChanges%2CPSym%2CModuleGraph%2CPNode" title="replayStateChanges(module: PSym; g: ModuleGraph; list: PNode)">replayStateChanges(module: PSym; g: ModuleGraph; list: PNode)</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/ic/replayer.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/replayer.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">Module that contains code to replay global VM state changes and pragma state like <tt class="docutils literal"><span class="pre">{.compile: &quot;foo.c&quot;.}</span></tt>. For IC (= Incremental compilation) support.</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="../modulegraphs.html">../modulegraphs</a>, <a class="reference external" href="../trees.html">../trees</a>, <a class="reference external" href="../extccomp.html">../extccomp</a>, <a class="reference external" href="../btrees.html">../btrees</a>, <a class="reference external" href="../msgs.html">../msgs</a>, <a class="reference external" href="../lineinfos.html">../lineinfos</a>, <a class="reference external" href="../pathutils.html">../pathutils</a>, <a class="reference external" href="../options.html">../options</a>, <a class="reference external" href="../cgmeth.html">../cgmeth</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="replayBackendActions-procs-all">
<div id="replayBackendActions,ModuleGraph,PSym,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#replayBackendActions%2CModuleGraph%2CPSym%2CPNode"><span class="Identifier">replayBackendActions</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="../astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">list</span><span class="Other">:</span> <a href="../astdef.html#PNode"><span class="Identifier">PNode</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">OSError</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">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span>
<span class="Identifier">EOFError</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">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">WriteDirEffect</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>
Applies the backend-relevant replay actions (C compile/link directives) found in a NIF-loaded module's top-level statement list. The <tt class="docutils literal"><span class="pre"><span class="Identifier">nifc</span></span></tt> backend loads modules without going through sem's <tt class="docutils literal"><span class="pre"><span class="Identifier">replayStateChanges</span></span></tt>, so e.g. math's <tt class="docutils literal"><span class="pre"><span class="Punctuation">{</span><span class="Operator">.</span><span class="Identifier">passL</span><span class="Punctuation">:</span> <span class="StringLit">&quot;-lm&quot;</span><span class="Operator">.</span><span class="Punctuation">}</span></span></tt> was lost and the final link failed with undefined references. VM cache actions are deliberately NOT replayed here — codegen does not run macros.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ic/replayer.nim#L94" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/replayer.nim#L94" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="replayStateChanges-procs-all">
<div id="replayStateChanges,PSym,ModuleGraph,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#replayStateChanges%2CPSym%2CModuleGraph%2CPNode"><span class="Identifier">replayStateChanges</span></a><span class="Other">(</span><span class="Identifier">module</span><span class="Other">:</span> <a href="../astdef.html#PSym"><span class="Identifier">PSym</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">list</span><span class="Other">:</span> <a href="../astdef.html#PNode"><span class="Identifier">PNode</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">ValueError</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="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span>
<span class="Identifier">EOFError</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="Identifier">WriteDirEffect</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>
<tt class="docutils literal"><span class="pre"><span class="Identifier">list</span></span></tt> is an <tt class="docutils literal"><span class="pre"><span class="Identifier">nkStmtList</span></span></tt> of <tt class="docutils literal"><span class="pre"><span class="Identifier">nkReplayAction</span></span></tt> nodes (macro-cache puts/incs/ adds/incls and a few pragmas) recorded for <tt class="docutils literal"><span class="pre"><span class="Identifier">module</span></span></tt>. Under the NIF backend a loaded module's <tt class="docutils literal"><span class="pre"><span class="Identifier">ast</span></span></tt> is never reconstructed, so the caller passes the replay actions it parsed out of the module's NIF directly.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/ic/replayer.nim#L22" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/ic/replayer.nim#L22" 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: 2026-07-10 18:29:15 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

3
compiler/ic/replayer.idx Normal file
View File

@@ -0,0 +1,3 @@
nimTitle replayer ic/replayer.html module ic/replayer 0
nim replayStateChanges ic/replayer.html#replayStateChanges,PSym,ModuleGraph,PNode proc replayStateChanges(module: PSym; g: ModuleGraph; list: PNode) 22
nim replayBackendActions ic/replayer.html#replayBackendActions,ModuleGraph,PSym,PNode proc replayBackendActions(g: ModuleGraph; module: PSym; list: PNode) 94

229
compiler/icconfig.html Normal file
View File

@@ -0,0 +1,229 @@
<?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>icconfig</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">icconfig</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="#10" id="60">Consts</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#IcConfigVersion" title="IcConfigVersion = &quot;2&quot;">IcConfigVersion</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">applyIcConfig
<li><a class="reference" href="#applyIcConfig%2CConfigRef%2Cstring" title="applyIcConfig(conf: ConfigRef; infile: string): bool">applyIcConfig(conf: ConfigRef; infile: string): bool</a></li>
</ul>
<ul class="simple nested-toc-section">ensureIcConfig
<li><a class="reference" href="#ensureIcConfig%2CConfigRef" title="ensureIcConfig(conf: ConfigRef)">ensureIcConfig(conf: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">produceIcConfig
<li><a class="reference" href="#produceIcConfig%2CConfigRef" title="produceIcConfig(conf: ConfigRef)">produceIcConfig(conf: ConfigRef)</a></li>
</ul>
<ul class="simple nested-toc-section">sourcesChanged
<li><a class="reference" href="#sourcesChanged%2Cstring" title="sourcesChanged(configFile: string): bool">sourcesChanged(configFile: string): bool</a></li>
</ul>
<ul class="simple nested-toc-section">writeIcConfig
<li><a class="reference" href="#writeIcConfig%2CConfigRef%2Cstring" title="writeIcConfig(conf: ConfigRef; outfile: string)">writeIcConfig(conf: ConfigRef; outfile: string)</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/icconfig.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icconfig.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"><p>Precompiled config for the incremental compiler (<tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">ic</span></span></tt>).</p>
<p><tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">ic</span></span></tt> builds the program by spawning one <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">m</span></span></tt> child per module (or strongly-connected import group) plus a final <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">nifc</span></span></tt>. Each child is a full Nim process, so each would normally re-read the whole <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span><span class="Operator">.</span><span class="Identifier">cfg</span></span></tt> chain <em>and</em> re-run <tt class="docutils literal"><span class="pre"><span class="Identifier">config</span><span class="Operator">.</span><span class="Identifier">nims</span></span></tt> through the VM — work that is identical for every child and, because of the VM run, far from free. With ~85 modules in the compiler itself that config work is paid ~85 times during <tt class="docutils literal"><span class="pre"><span class="Identifier">koch</span> <span class="Identifier">bootic</span></span></tt>.</p>
<p>The fix mirrors Nimony's <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">cfg</span><span class="Operator">.</span><span class="Identifier">nif</span></span></tt>: the driver parses config once, records the net effect, and the children replay it. Every config-file switch funnels through <tt class="docutils literal"><span class="pre"><span class="Identifier">processSwitch</span><span class="Punctuation">(</span><span class="Operator">...</span><span class="Punctuation">,</span> <span class="Identifier">passPP</span><span class="Punctuation">,</span> <span class="Operator">...</span><span class="Punctuation">)</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="Identifier">nimconf</span><span class="Operator">.</span><span class="Identifier">parseAssignment</span></span></tt> and the <tt class="docutils literal"><span class="pre"><span class="Identifier">switch</span><span class="Punctuation">(</span><span class="Punctuation">)</span></span></tt> callback in <tt class="docutils literal"><span class="pre"><span class="Identifier">scriptconfig</span></span></tt>), so the recorded sequence of those switches, replayed in order, reproduces an identical <tt class="docutils literal"><span class="pre"><span class="Identifier">ConfigRef</span></span></tt> without any file read or VM run. The one config side effect that does not go through <tt class="docutils literal"><span class="pre"><span class="Identifier">processSwitch</span></span></tt> is <tt class="docutils literal"><span class="pre"><span class="Identifier">cppDefine</span></span></tt> (it mutates <tt class="docutils literal"><span class="pre"><span class="Identifier">conf</span><span class="Operator">.</span><span class="Identifier">cppDefines</span></span></tt> directly), so the resolved set is serialised alongside.</p>
<p>Path-search switches are deliberately excluded from the recording (see <tt class="docutils literal"><span class="pre"><span class="Identifier">commands</span><span class="Operator">.</span><span class="Identifier">processSwitch</span></span></tt>): their resolved result already lives in <tt class="docutils literal"><span class="pre"><span class="Identifier">conf</span><span class="Operator">.</span><span class="Identifier">searchPaths</span></span></tt>, which the driver forwards to every child as absolute <tt class="docutils literal"><span class="pre"><span class="Operator">--</span><span class="Identifier">path</span></span></tt> arguments; replaying their raw, config-dir-relative arguments here would misresolve.</p>
</p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="options.html">options</a>, <a class="reference external" href="commands.html">commands</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="pathutils.html">pathutils</a>, <a class="reference external" href="msgs.html">msgs</a>
</dl>
</div>
<div class="section" id="10">
<h1><a class="toc-backref" href="#10">Consts</a></h1>
<dl class="item">
<div id="IcConfigVersion">
<dt><pre><a href="#IcConfigVersion"><span class="Identifier">IcConfigVersion</span></a> <span class="Other">=</span> <span class="StringLit">&quot;2&quot;</span></pre></dt>
<dd>
Artifact format version. Bump on any layout change here so a child built by an older compiler rejects a stale artifact and falls back to normal config loading instead of replaying a format it cannot parse.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icconfig.nim#L39" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icconfig.nim#L39" 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="applyIcConfig-procs-all">
<div id="applyIcConfig,ConfigRef,string">
<dt><pre><span class="Keyword">proc</span> <a href="#applyIcConfig%2CConfigRef%2Cstring"><span class="Identifier">applyIcConfig</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">infile</span><span class="Other">:</span> <span class="Identifier">string</span><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">ValueError</span><span class="Other">,</span>
<span class="Identifier">Exception</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="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span> <span class="Identifier">EOFError</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="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="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">WriteEnvEffect</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>
Replay the precompiled config into <tt class="docutils literal"><span class="pre"><span class="Identifier">conf</span></span></tt>. Returns false (and applies nothing meaningful) when the artifact is missing or written by a compiler with an incompatible format version, so the caller can fall back to reading the config files normally.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icconfig.nim#L91" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icconfig.nim#L91" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="ensureIcConfig-procs-all">
<div id="ensureIcConfig,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#ensureIcConfig%2CConfigRef"><span class="Identifier">ensureIcConfig</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><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">ValueError</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">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">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">ExecIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</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>
Driver-side (<tt class="docutils literal"><span class="pre"><span class="Identifier">cmdIc</span></span></tt>). Make sure an up-to-date precompiled config exists, (re)producing it in a <em>separate</em> process when missing or stale, then point <tt class="docutils literal"><span class="pre"><span class="Identifier">conf</span><span class="Operator">.</span><span class="Identifier">icPreparsedConfig</span></span></tt> at it so the driver replays the very same config its <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">m</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">nifc</span></span></tt> children will — perfect speed (config parsed at most once, skipped entirely when nothing changed) and consistency (one producer, every process replays its output). The artifact lives in the nimcache derived from the command line (pre-config-parse), which is the one the children are told; a <tt class="docutils literal"><span class="pre"><span class="Operator">--</span><span class="Identifier">nimcache</span><span class="Punctuation">:</span></span></tt> set inside <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span><span class="Operator">.</span><span class="Identifier">cfg</span></span></tt> is recovered from the artifact itself.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icconfig.nim#L238" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icconfig.nim#L238" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="produceIcConfig-procs-all">
<div id="produceIcConfig,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#produceIcConfig%2CConfigRef"><span class="Identifier">produceIcConfig</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><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">ValueError</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="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="Identifier">WriteDirEffect</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 <tt class="docutils literal"><span class="pre"><span class="Identifier">cmdIcConfig</span></span></tt> command. By the time it runs, the normal pipeline has already fully parsed the <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span><span class="Operator">.</span><span class="Identifier">cfg</span></span></tt> chain and run <tt class="docutils literal"><span class="pre"><span class="Identifier">config</span><span class="Operator">.</span><span class="Identifier">nims</span></span></tt>, so the resolved config is sitting in <tt class="docutils literal"><span class="pre"><span class="Identifier">conf</span></span></tt>; just serialise it to <tt class="docutils literal"><span class="pre"><span class="Operator">--</span><span class="Identifier">o</span></span></tt>.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icconfig.nim#L227" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icconfig.nim#L227" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="sourcesChanged-procs-all">
<div id="sourcesChanged,string">
<dt><pre><span class="Keyword">proc</span> <a href="#sourcesChanged%2Cstring"><span class="Identifier">sourcesChanged</span></a><span class="Other">(</span><span class="Identifier">configFile</span><span class="Other">:</span> <span class="Identifier">string</span><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">OSError</span><span class="Other">,</span> <span class="Identifier">ValueError</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>
True when the precompiled config at <tt class="docutils literal"><span class="pre"><span class="Identifier">configFile</span></span></tt> is missing, malformed, written by an incompatible version, or any recorded config <em>source</em> file is newer than it (or has vanished) — i.e. the artifact must be regenerated. Mirrors nifler's <tt class="docutils literal"><span class="pre"><span class="Identifier">sourcesChanged</span></span></tt>: the source list lives inside the artifact so this needs no out-of-band knowledge of which <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span><span class="Operator">.</span><span class="Identifier">cfg</span></span></tt>s were read.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icconfig.nim#L184" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icconfig.nim#L184" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="writeIcConfig-procs-all">
<div id="writeIcConfig,ConfigRef,string">
<dt><pre><span class="Keyword">proc</span> <a href="#writeIcConfig%2CConfigRef%2Cstring"><span class="Identifier">writeIcConfig</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">outfile</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="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>
Serialise the resolved config (the config-file switches recorded during <tt class="docutils literal"><span class="pre"><span class="Identifier">loadConfigs</span></span></tt>, the resolved <tt class="docutils literal"><span class="pre"><span class="Identifier">cppDefines</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">searchPaths</span></span></tt>, the nimcache dir, and the list of config <em>source</em> files for staleness detection) into <tt class="docutils literal"><span class="pre"><span class="Identifier">outfile</span></span></tt>. <tt class="docutils literal"><span class="pre"><span class="Identifier">OnlyIfChanged</span></span></tt>: when the content is byte-identical to what is already on disk the file is left untouched so its mtime does not advance — otherwise every <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">ic</span></span></tt> run would re-fire the whole nifmake graph (see <tt class="docutils literal"><span class="pre"><span class="Identifier">nifler</span></span></tt>'s <tt class="docutils literal"><span class="pre"><span class="Identifier">produceConfig</span></span></tt>, whose model this mirrors).
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icconfig.nim#L44" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icconfig.nim#L44" 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: 2026-07-10 18:29:15 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

7
compiler/icconfig.idx Normal file
View File

@@ -0,0 +1,7 @@
nimTitle icconfig icconfig.html module icconfig 0
nim IcConfigVersion icconfig.html#IcConfigVersion const IcConfigVersion 39
nim writeIcConfig icconfig.html#writeIcConfig,ConfigRef,string proc writeIcConfig(conf: ConfigRef; outfile: string) 44
nim applyIcConfig icconfig.html#applyIcConfig,ConfigRef,string proc applyIcConfig(conf: ConfigRef; infile: string): bool 91
nim sourcesChanged icconfig.html#sourcesChanged,string proc sourcesChanged(configFile: string): bool 184
nim produceIcConfig icconfig.html#produceIcConfig,ConfigRef proc produceIcConfig(conf: ConfigRef) 227
nim ensureIcConfig icconfig.html#ensureIcConfig,ConfigRef proc ensureIcConfig(conf: ConfigRef) 238

117
compiler/icmodnames.html Normal file
View File

@@ -0,0 +1,117 @@
<?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>icmodnames</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">icmodnames</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>
<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">moduleSuffix
<li><a class="reference" href="#moduleSuffix%2Cstring%2CopenArray%5Bstring%5D" title="moduleSuffix(path: string; searchPaths: openArray[string]): string">moduleSuffix(path: string; searchPaths: openArray[string]): string</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/icmodnames.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icmodnames.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"><p>Nim's OWN module-suffix, replacing nimony's <tt class="docutils literal"><span class="pre"><span class="Identifier">gear2</span><span class="Operator">/</span><span class="Identifier">modnames</span><span class="Operator">.</span><span class="Identifier">moduleSuffix</span></span></tt>.</p>
<p>nimony's version hashes a path made RELATIVE to <tt class="docutils literal"><span class="pre"><span class="Identifier">getCurrentDir</span><span class="Punctuation">(</span><span class="Punctuation">)</span></span></tt> (or the shortest search-path-relative form), so the produced suffix depends on the current working directory AND the searchPath set. Under <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">ic</span></span></tt> the DISCOVERY pass (<tt class="docutils literal"><span class="pre"><span class="Identifier">deps</span><span class="Operator">.</span><span class="Identifier">nim</span></span></tt>, in the driver process) and the COMPILE pass (<tt class="docutils literal"><span class="pre"><span class="Identifier">nifgen</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">typekeys</span></span></tt>, in a child <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">m</span></span></tt> process) can run with different CWDs or <tt class="docutils literal"><span class="pre"><span class="Operator">--</span><span class="Identifier">path</span></span></tt> sets, so the SAME file hashes to two different suffixes: e.g. <tt class="docutils literal"><span class="pre"><span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">staticos</span></span></tt> became <tt class="docutils literal"><span class="pre"><span class="Identifier">sta5rk8sn1</span></span></tt> at discovery but <tt class="docutils literal"><span class="pre"><span class="Identifier">sta4c0qxk</span></span></tt> at compile, so every importer waited forever for a <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">s</span><span class="Operator">.</span><span class="Identifier">bif</span></span></tt> that was actually written under the other name — a cold <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">ic</span></span></tt> build (of anything pulling in <tt class="docutils literal"><span class="pre"><span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">os</span></span></tt>, whose <tt class="docutils literal"><span class="pre"><span class="Identifier">oscommon</span></span></tt> does <tt class="docutils literal"><span class="pre"><span class="Keyword">from</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">staticos</span> <span class="Keyword">import</span> <span class="Identifier">PathComponent</span></span></tt>) never converged.</p>
<p>Hashing the CANONICAL ABSOLUTE path makes the suffix a pure function of the file, identical across every process and call site. The base-name prefix + base-36 <tt class="docutils literal"><span class="pre"><span class="Identifier">uhash</span></span></tt> layout is kept byte-for-byte compatible with the old scheme so nothing but the hashed string changes.</p>
</p>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="moduleSuffix-procs-all">
<div id="moduleSuffix,string,openArray[string]">
<dt><pre><span class="Keyword">proc</span> <a href="#moduleSuffix%2Cstring%2CopenArray%5Bstring%5D"><span class="Identifier">moduleSuffix</span></a><span class="Other">(</span><span class="Identifier">path</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">searchPaths</span><span class="Other">:</span> <span class="Identifier">openArray</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><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>
<tt class="docutils literal"><span class="pre"><span class="Identifier">searchPaths</span></span></tt> is accepted for signature-compatibility with the replaced <tt class="docutils literal"><span class="pre"><span class="Identifier">modnames</span><span class="Operator">.</span><span class="Identifier">moduleSuffix</span></span></tt> but is deliberately IGNORED — the suffix must not depend on the search-path set or the CWD (see the module doc).
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icmodnames.nim#L35" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icmodnames.nim#L35" 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: 2026-07-10 18:29:07 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

2
compiler/icmodnames.idx Normal file
View File

@@ -0,0 +1,2 @@
nimTitle icmodnames icmodnames.html module icmodnames 0
nim moduleSuffix icmodnames.html#moduleSuffix,string,openArray[string] proc moduleSuffix(path: string; searchPaths: openArray[string]): string 35

670
compiler/icnifcore.html Normal file
View File

@@ -0,0 +1,670 @@
<?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>icnifcore</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">icnifcore</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="#CookieKind" title="CookieKind = enum
ckParLe, ckParRi, ckSym, ckSymDef, ckIdent, ckStr, ckInt, ckUInt, ckFloat,
ckChar, ckDot">CookieKind</a></li>
<li><a class="reference" href="#CookieTok" title="CookieTok = object
kind*: CookieKind
tag*: string
name*: string
sym*: uint32
str*: string
ival*: int64
uval*: uint64
fval*: float64
cval*: uint32">CookieTok</a></li>
<li><a class="reference" href="#IcBuilder" title="IcBuilder = object
buf*: TokenBuf">IcBuilder</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#9" id="59">Lets</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#icPool" title="icPool = newPool()">icPool</a></li>
<li><a class="reference" href="#icTags" title="icTags = newTagPool()">icTags</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">addAll
<li><a class="reference" href="#addAll%2CIcBuilder%2CIcBuilder" title="addAll(dest: var IcBuilder; src: var IcBuilder)">addAll(dest: var IcBuilder; src: var IcBuilder)</a></li>
</ul>
<ul class="simple nested-toc-section">addCharLit
<li><a class="reference" href="#addCharLit%2CIcBuilder%2Cchar" title="addCharLit(b: var IcBuilder; c: char)">addCharLit(b: var IcBuilder; c: char)</a></li>
</ul>
<ul class="simple nested-toc-section">addDotToken
<li><a class="reference" href="#addDotToken%2CIcBuilder" title="addDotToken(b: var IcBuilder)">addDotToken(b: var IcBuilder)</a></li>
</ul>
<ul class="simple nested-toc-section">addFloatLit
<li><a class="reference" href="#addFloatLit%2CIcBuilder%2Cfloat64" title="addFloatLit(b: var IcBuilder; v: float64)">addFloatLit(b: var IcBuilder; v: float64)</a></li>
</ul>
<ul class="simple nested-toc-section">addIdent
<li><a class="reference" href="#addIdent%2CIcBuilder%2Cstring" title="addIdent(b: var IcBuilder; s: string)">addIdent(b: var IcBuilder; s: string)</a></li>
</ul>
<ul class="simple nested-toc-section">addIntLit
<li><a class="reference" href="#addIntLit%2CIcBuilder%2Cint64" title="addIntLit(b: var IcBuilder; v: int64)">addIntLit(b: var IcBuilder; v: int64)</a></li>
</ul>
<ul class="simple nested-toc-section">addStmtsBody
<li><a class="reference" href="#addStmtsBody%2CIcBuilder%2CIcBuilder" title="addStmtsBody(dest: var IcBuilder; src: var IcBuilder)">addStmtsBody(dest: var IcBuilder; src: var IcBuilder)</a></li>
</ul>
<ul class="simple nested-toc-section">addStrLit
<li><a class="reference" href="#addStrLit%2CIcBuilder%2Cstring" title="addStrLit(b: var IcBuilder; s: string)">addStrLit(b: var IcBuilder; s: string)</a></li>
</ul>
<ul class="simple nested-toc-section">addSymDef
<li><a class="reference" href="#addSymDef%2CIcBuilder%2Cstring" title="addSymDef(b: var IcBuilder; s: string)">addSymDef(b: var IcBuilder; s: string)</a></li>
</ul>
<ul class="simple nested-toc-section">addSymUse
<li><a class="reference" href="#addSymUse%2CIcBuilder%2Cstring" title="addSymUse(b: var IcBuilder; s: string)">addSymUse(b: var IcBuilder; s: string)</a></li>
</ul>
<ul class="simple nested-toc-section">addUIntLit
<li><a class="reference" href="#addUIntLit%2CIcBuilder%2Cuint64" title="addUIntLit(b: var IcBuilder; v: uint64)">addUIntLit(b: var IcBuilder; v: uint64)</a></li>
</ul>
<ul class="simple nested-toc-section">closeTag
<li><a class="reference" href="#closeTag%2CIcBuilder" title="closeTag(b: var IcBuilder)">closeTag(b: var IcBuilder)</a></li>
</ul>
<ul class="simple nested-toc-section">collectBifStrLits
<li><a class="reference" href="#collectBifStrLits%2Cstring" title="collectBifStrLits(path: string): seq[string]">collectBifStrLits(path: string): seq[string]</a></li>
</ul>
<ul class="simple nested-toc-section">createIcBuf
<li><a class="reference" href="#createIcBuf%2Cint" title="createIcBuf(cap = 16): TokenBuf">createIcBuf(cap = 16): TokenBuf</a></li>
</ul>
<ul class="simple nested-toc-section">cursorPool
<li><a class="reference" href="#cursorPool%2CCursor" title="cursorPool(c: Cursor): Pool">cursorPool(c: Cursor): Pool</a></li>
</ul>
<ul class="simple nested-toc-section">flattenForCookie
<li><a class="reference" href="#flattenForCookie%2CIcBuilder" title="flattenForCookie(b: var IcBuilder): seq[CookieTok]">flattenForCookie(b: var IcBuilder): seq[CookieTok]</a></li>
</ul>
<ul class="simple nested-toc-section">lineInfo
<li><a class="reference" href="#lineInfo%2CIcBuilder%2Cstring%2Cint32%2Cint32%2Cstring" title="lineInfo(b: var IcBuilder; file: string; line, col: int32; comment = &quot;&quot;)">lineInfo(b: var IcBuilder; file: string; line, col: int32; comment = &quot;&quot;)</a></li>
</ul>
<ul class="simple nested-toc-section">newIcBuilder
<li><a class="reference" href="#newIcBuilder%2Cint" title="newIcBuilder(cap = 16): IcBuilder">newIcBuilder(cap = 16): IcBuilder</a></li>
</ul>
<ul class="simple nested-toc-section">openTag
<li><a class="reference" href="#openTag%2CIcBuilder%2Cstring" title="openTag(b: var IcBuilder; tag: string)">openTag(b: var IcBuilder; tag: string)</a></li>
</ul>
<ul class="simple nested-toc-section">storeBif
<li><a class="reference" href="#storeBif%2CIcBuilder%2Cstring%2Cstring" title="storeBif(b: var IcBuilder; path: string; dottedSuffix: string)">storeBif(b: var IcBuilder; path: string; dottedSuffix: string)</a></li>
</ul>
<ul class="simple nested-toc-section">storeBifStable
<li><a class="reference" href="#storeBifStable%2CIcBuilder%2Cstring%2Cstring" title="storeBifStable(b: var IcBuilder; path: string; dottedSuffix: string)">storeBifStable(b: var IcBuilder; path: string; dottedSuffix: string)</a></li>
</ul>
<ul class="simple nested-toc-section">tagId
<li><a class="reference" href="#tagId%2Cstring" title="tagId(s: string): TagId">tagId(s: string): TagId</a></li>
</ul>
<ul class="simple nested-toc-section">writeFileStable
<li><a class="reference" href="#writeFileStable%2CTokenBuf%2Cstring" title="writeFileStable(b: var TokenBuf; path: string; onlyIfChanged = false)">writeFileStable(b: var TokenBuf; path: string; onlyIfChanged = false)</a></li>
</ul>
<ul class="simple nested-toc-section">writeSemDeps
<li><a class="reference" href="#writeSemDeps%2CConfigRef%2Cint32%2Cseq%5Bstring%5D" title="writeSemDeps(config: ConfigRef; thisModule: int32; importPaths: seq[string])">writeSemDeps(config: ConfigRef; thisModule: int32; importPaths: seq[string])</a></li>
</ul>
<ul class="simple nested-toc-section">writeStable
<li><a class="reference" href="#writeStable%2CIcBuilder%2Cstring" title="writeStable(b: var IcBuilder; path: string; onlyIfChanged = false)">writeStable(b: var IcBuilder; path: string; onlyIfChanged = false)</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/icnifcore.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"><p>nifcore-based IC serialization helpers — Stage 1 of porting the IC backend from the old <tt class="docutils literal"><span class="pre"><span class="Identifier">nifstreams</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">nifcursors</span></span></tt> NIF stack to <tt class="docutils literal"><span class="pre"><span class="Identifier">nifcore</span></span></tt> (see <tt class="docutils literal"><span class="pre"><span class="Identifier">doc</span><span class="Operator">/</span><span class="Identifier">ic_nifcore_port</span><span class="Operator">.</span><span class="Identifier">md</span></span></tt>).</p>
<p>It hosts:</p>
<ul class="simple"><li>the process-wide shared <tt class="docutils literal"><span class="pre"><span class="Identifier">Pool</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">TagPool</span></span></tt> that stands in for the old global <tt class="docutils literal"><span class="pre"><span class="Identifier">nifstreams</span><span class="Operator">.</span><span class="Identifier">pool</span></span></tt>,</li>
<li><tt class="docutils literal"><span class="pre"><span class="Identifier">writeFileStable</span></span></tt>, the content-stable file writer mirroring <tt class="docutils literal"><span class="pre"><span class="Identifier">nifcursors</span><span class="Operator">.</span><span class="Identifier">writeFile</span><span class="Punctuation">(</span><span class="Operator">...</span><span class="Punctuation">,</span> <span class="Identifier">OnlyIfChanged</span><span class="Punctuation">)</span></span></tt>,</li>
<li>the first ported writer (<tt class="docutils literal"><span class="pre"><span class="Identifier">writeSemDeps</span></span></tt>), used as the migration spike.</li>
</ul>
<p>No <tt class="docutils literal"><span class="pre"><span class="Identifier">nifstreams</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">nifcursors</span></span></tt> types cross this module's boundary: callers pass plain Nim values (config, ids, string lists), so it can coexist with the still-old-API <tt class="docutils literal"><span class="pre"><span class="Identifier">ast2nif</span><span class="Operator">.</span><span class="Identifier">nim</span></span></tt> during the migration.</p>
</p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="options.html">options</a>, <a class="reference external" href="pathutils.html">pathutils</a>, <a class="reference external" href="typekeys.html">typekeys</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="CookieKind">
<dt><pre><a href="#CookieKind"><span class="Identifier">CookieKind</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">ckParLe</span><span class="Other">,</span> <span class="Identifier">ckParRi</span><span class="Other">,</span> <span class="Identifier">ckSym</span><span class="Other">,</span> <span class="Identifier">ckSymDef</span><span class="Other">,</span> <span class="Identifier">ckIdent</span><span class="Other">,</span> <span class="Identifier">ckStr</span><span class="Other">,</span> <span class="Identifier">ckInt</span><span class="Other">,</span> <span class="Identifier">ckUInt</span><span class="Other">,</span> <span class="Identifier">ckFloat</span><span class="Other">,</span>
<span class="Identifier">ckChar</span><span class="Other">,</span> <span class="Identifier">ckDot</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L167" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L167" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="CookieTok">
<dt><pre><a href="#CookieTok"><span class="Identifier">CookieTok</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">kind</span><span class="Operator">*</span><span class="Other">:</span> <a href="#CookieKind"><span class="Identifier">CookieKind</span></a>
<span class="Identifier">tag</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">name</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">sym</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">uint32</span>
<span class="Identifier">str</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">ival</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int64</span>
<span class="Identifier">uval</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">uint64</span>
<span class="Identifier">fval</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">float64</span>
<span class="Identifier">cval</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">uint32</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L169" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L169" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="IcBuilder">
<dt><pre><a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">buf</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">TokenBuf</span></pre></dt>
<dd>
A thin nifcore <tt class="docutils literal"><span class="pre"><span class="Identifier">TokenBuf</span></span></tt> builder whose surface is <em>primitive types only</em> (strings/ints/floats). It lets the still-old-API <tt class="docutils literal"><span class="pre"><span class="Identifier">ast2nif</span><span class="Operator">.</span><span class="Identifier">nim</span></span></tt> drive a nifcore buffer without any nifcore type crossing the module boundary — the bridge that routes IC output onto the nifcore serializer (Stage 2).
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L47" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L47" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</dl>
</div>
<div class="section" id="9">
<h1><a class="toc-backref" href="#9">Lets</a></h1>
<dl class="item">
<div id="icPool">
<dt><pre><a href="#icPool"><span class="Identifier">icPool</span></a> <span class="Other">=</span> <span class="Identifier">newPool</span><span class="Other">(</span><span class="Other">)</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L35" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L35" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="icTags">
<dt><pre><a href="#icTags"><span class="Identifier">icTags</span></a> <span class="Other">=</span> <span class="Identifier">newTagPool</span><span class="Other">(</span><span class="Other">)</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L36" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L36" 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="addAll-procs-all">
<div id="addAll,IcBuilder,IcBuilder">
<dt><pre><span class="Keyword">proc</span> <a href="#addAll%2CIcBuilder%2CIcBuilder"><span class="Identifier">addAll</span></a><span class="Other">(</span><span class="Identifier">dest</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">src</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</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>
Append every top-level subtree of <tt class="docutils literal"><span class="pre"><span class="Identifier">src</span></span></tt> into <tt class="docutils literal"><span class="pre"><span class="Identifier">dest</span></span></tt> — the nifcore analogue of the old <tt class="docutils literal"><span class="pre"><span class="Identifier">dest</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">wholeBuffer</span></span></tt> splice.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L140" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L140" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addCharLit-procs-all">
<div id="addCharLit,IcBuilder,char">
<dt><pre><span class="Keyword">proc</span> <a href="#addCharLit%2CIcBuilder%2Cchar"><span class="Identifier">addCharLit</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">c</span><span class="Other">:</span> <span class="Identifier">char</span><span class="Other">)</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/icnifcore.nim#L65" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L65" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addDotToken-procs-all">
<div id="addDotToken,IcBuilder">
<dt><pre><span class="Keyword">proc</span> <a href="#addDotToken%2CIcBuilder"><span class="Identifier">addDotToken</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">)</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/icnifcore.nim#L66" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L66" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addFloatLit-procs-all">
<div id="addFloatLit,IcBuilder,float64">
<dt><pre><span class="Keyword">proc</span> <a href="#addFloatLit%2CIcBuilder%2Cfloat64"><span class="Identifier">addFloatLit</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">v</span><span class="Other">:</span> <span class="Identifier">float64</span><span class="Other">)</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/icnifcore.nim#L64" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L64" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addIdent-procs-all">
<div id="addIdent,IcBuilder,string">
<dt><pre><span class="Keyword">proc</span> <a href="#addIdent%2CIcBuilder%2Cstring"><span class="Identifier">addIdent</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</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/icnifcore.nim#L60" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L60" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addIntLit-procs-all">
<div id="addIntLit,IcBuilder,int64">
<dt><pre><span class="Keyword">proc</span> <a href="#addIntLit%2CIcBuilder%2Cint64"><span class="Identifier">addIntLit</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">v</span><span class="Other">:</span> <span class="Identifier">int64</span><span class="Other">)</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/icnifcore.nim#L62" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L62" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addStmtsBody-procs-all">
<div id="addStmtsBody,IcBuilder,IcBuilder">
<dt><pre><span class="Keyword">proc</span> <a href="#addStmtsBody%2CIcBuilder%2CIcBuilder"><span class="Identifier">addStmtsBody</span></a><span class="Other">(</span><span class="Identifier">dest</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">src</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</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>
Append the BODY of a <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">stmts</span> <span class="Operator">.</span> <span class="Operator">.</span> <span class="Operator">&lt;</span><span class="Identifier">body</span><span class="Operator">&gt;</span> <span class="Punctuation">)</span></span></tt> builder into <tt class="docutils literal"><span class="pre"><span class="Identifier">dest</span></span></tt>, dropping the wrapper tag and its two leading dot slots (flags/type) — the nifcore analogue of the old <tt class="docutils literal"><span class="pre"><span class="Keyword">for</span> <span class="Identifier">i</span> <span class="Keyword">in</span> <span class="DecNumber">3</span> <span class="Operator">..&lt;</span> <span class="Identifier">content</span><span class="Operator">.</span><span class="Identifier">len</span><span class="Operator">-</span><span class="DecNumber">1</span><span class="Punctuation">:</span> <span class="Identifier">dest</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">content</span><span class="Punctuation">[</span><span class="Identifier">i</span><span class="Punctuation">]</span></span></tt>.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L148" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L148" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addStrLit-procs-all">
<div id="addStrLit,IcBuilder,string">
<dt><pre><span class="Keyword">proc</span> <a href="#addStrLit%2CIcBuilder%2Cstring"><span class="Identifier">addStrLit</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</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/icnifcore.nim#L61" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L61" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addSymDef-procs-all">
<div id="addSymDef,IcBuilder,string">
<dt><pre><span class="Keyword">proc</span> <a href="#addSymDef%2CIcBuilder%2Cstring"><span class="Identifier">addSymDef</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</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/icnifcore.nim#L59" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L59" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addSymUse-procs-all">
<div id="addSymUse,IcBuilder,string">
<dt><pre><span class="Keyword">proc</span> <a href="#addSymUse%2CIcBuilder%2Cstring"><span class="Identifier">addSymUse</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</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/icnifcore.nim#L58" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L58" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="addUIntLit-procs-all">
<div id="addUIntLit,IcBuilder,uint64">
<dt><pre><span class="Keyword">proc</span> <a href="#addUIntLit%2CIcBuilder%2Cuint64"><span class="Identifier">addUIntLit</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">v</span><span class="Other">:</span> <span class="Identifier">uint64</span><span class="Other">)</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/icnifcore.nim#L63" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L63" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="closeTag-procs-all">
<div id="closeTag,IcBuilder">
<dt><pre><span class="Keyword">proc</span> <a href="#closeTag%2CIcBuilder"><span class="Identifier">closeTag</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">)</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/icnifcore.nim#L57" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L57" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="collectBifStrLits-procs-all">
<div id="collectBifStrLits,string">
<dt><pre><span class="Keyword">proc</span> <a href="#collectBifStrLits%2Cstring"><span class="Identifier">collectBifStrLits</span></a><span class="Other">(</span><span class="Identifier">path</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</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="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>
<p>Read a small <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">tag</span> <span class="StringLit">&quot;s&quot;</span> <span class="StringLit">&quot;s&quot;</span> <span class="Identifier"></span><span class="Punctuation">)</span></span></tt> bif sidecar (<tt class="docutils literal"><span class="pre"><span class="Identifier">semdeps</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">edges</span></span></tt>) and return every string literal it holds, in order — the binary analogue of the old nifstreams scan that collected <tt class="docutils literal"><span class="pre"><span class="Identifier">StrLit</span></span></tt>s. Keeps nifcore types out of <tt class="docutils literal"><span class="pre"><span class="Identifier">deps</span><span class="Operator">.</span><span class="Identifier">nim</span></span></tt>, which only needs the recorded string list.</p>
<p>Uses <tt class="docutils literal"><span class="pre"><span class="Identifier">loadFromFile</span></span></tt> (a full read into owned memory) rather than the mmap-backed <tt class="docutils literal"><span class="pre"><span class="Identifier">bif</span><span class="Operator">.</span><span class="Identifier">load</span></span></tt>, then CLOSES the handle. <tt class="docutils literal"><span class="pre"><span class="Identifier">bif</span><span class="Operator">.</span><span class="Identifier">load</span></span></tt> intentionally leaves the mapping resident for the process lifetime; for the <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">ic</span></span></tt> driver that reads these sidecars while <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">m</span></span></tt> children rewrite them, a lingering read mapping is a Windows sharing violation: the child's <tt class="docutils literal"><span class="pre"><span class="Identifier">open</span><span class="Punctuation">(</span><span class="Identifier">path</span><span class="Punctuation">,</span> <span class="Identifier">fmWrite</span><span class="Punctuation">)</span></span></tt> fails with <tt class="docutils literal"><span class="pre"><span class="Identifier">IOError</span><span class="Punctuation">:</span> <span class="Identifier">cannot</span> <span class="Identifier">open</span></span></tt>. These sidecars are tiny, so the zero-copy mmap buys nothing here anyway.</p>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L217" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L217" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="createIcBuf-procs-all">
<div id="createIcBuf,int">
<dt><pre><span class="Keyword">proc</span> <a href="#createIcBuf%2Cint"><span class="Identifier">createIcBuf</span></a><span class="Other">(</span><span class="Identifier">cap</span> <span class="Other">=</span> <span class="DecNumber">16</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">TokenBuf</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 <tt class="docutils literal"><span class="pre"><span class="Identifier">TokenBuf</span></span></tt> bound to the shared IC pools.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L38" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L38" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="cursorPool-procs-all">
<div id="cursorPool,Cursor">
<dt><pre><span class="Keyword">proc</span> <a href="#cursorPool%2CCursor"><span class="Identifier">cursorPool</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Identifier">Cursor</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Pool</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>
The literals pool the cursor's buffer was built against. <tt class="docutils literal"><span class="pre"><span class="Identifier">ast2nif</span><span class="Operator">.</span><span class="Identifier">nim</span></span></tt> imports <tt class="docutils literal"><span class="pre"><span class="Identifier">nifcore</span></span></tt> with <tt class="docutils literal"><span class="pre"><span class="Keyword">except</span> <span class="Identifier">pool</span></span></tt> (to keep nifstreams' global <tt class="docutils literal"><span class="pre"><span class="Identifier">pool</span></span></tt> var the writer uses), so the reader reaches a cursor's pool through here — needed once <tt class="docutils literal"><span class="pre"><span class="Identifier">bif</span></span></tt>-loaded buffers carry their OWN fresh pool rather than the shared <tt class="docutils literal"><span class="pre"><span class="Identifier">icPool</span></span></tt>.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L95" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L95" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="flattenForCookie-procs-all">
<div id="flattenForCookie,IcBuilder">
<dt><pre><span class="Keyword">proc</span> <a href="#flattenForCookie%2CIcBuilder"><span class="Identifier">flattenForCookie</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="#CookieTok"><span class="Identifier">CookieTok</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>
Flatten the nifcore module buffer to the cookie hashers' flat token list.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L211" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L211" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="lineInfo-procs-all">
<div id="lineInfo,IcBuilder,string,int32,int32,string">
<dt><pre><span class="Keyword">proc</span> <a href="#lineInfo%2CIcBuilder%2Cstring%2Cint32%2Cint32%2Cstring"><span class="Identifier">lineInfo</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">file</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">line</span><span class="Other">,</span> <span class="Identifier">col</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">;</span> <span class="Identifier">comment</span> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</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>
Attach line info (+ optional <tt class="docutils literal"><span class="pre"><span class="Comment">#comment#</span></span></tt>) to the head just emitted. No-op when <tt class="docutils literal"><span class="pre"><span class="Identifier">file</span></span></tt> is empty (matches the old &quot;emit only when info is valid&quot;). Strings are interned in the shared pools; the file/comment ids reproduce the old <tt class="docutils literal"><span class="pre"><span class="Identifier">pool</span><span class="Operator">.</span><span class="Identifier">files</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">pool</span><span class="Operator">.</span><span class="Identifier">strings</span></span></tt> entries by string value.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L68" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L68" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="newIcBuilder-procs-all">
<div id="newIcBuilder,int">
<dt><pre><span class="Keyword">proc</span> <a href="#newIcBuilder%2Cint"><span class="Identifier">newIcBuilder</span></a><span class="Other">(</span><span class="Identifier">cap</span> <span class="Other">=</span> <span class="DecNumber">16</span><span class="Other">)</span><span class="Other">:</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</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/icnifcore.nim#L54" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L54" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="openTag-procs-all">
<div id="openTag,IcBuilder,string">
<dt><pre><span class="Keyword">proc</span> <a href="#openTag%2CIcBuilder%2Cstring"><span class="Identifier">openTag</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">tag</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</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/icnifcore.nim#L56" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L56" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="storeBif-procs-all">
<div id="storeBif,IcBuilder,string,string">
<dt><pre><span class="Keyword">proc</span> <a href="#storeBif%2CIcBuilder%2Cstring%2Cstring"><span class="Identifier">storeBif</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">path</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">dottedSuffix</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="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">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>
Persist the buffer as a compact, self-contained binary NIF (<tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">bif</span></span></tt>).
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L114" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L114" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="storeBifStable-procs-all">
<div id="storeBifStable,IcBuilder,string,string">
<dt><pre><span class="Keyword">proc</span> <a href="#storeBifStable%2CIcBuilder%2Cstring%2Cstring"><span class="Identifier">storeBifStable</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">path</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">dottedSuffix</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="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</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">WriteIOEffect</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="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Content-stable <tt class="docutils literal"><span class="pre"><span class="Identifier">bif</span></span></tt> write — the binary analogue of <tt class="docutils literal"><span class="pre"><span class="Identifier">writeFileStable</span></span></tt>'s <tt class="docutils literal"><span class="pre"><span class="Identifier">onlyIfChanged</span></span></tt>: only replace <tt class="docutils literal"><span class="pre"><span class="Identifier">path</span></span></tt> when the encoded bytes differ, so an unchanged sidecar keeps its mtime and nifmake prunes the dependent rebuild cascade. Used for the iface/impl cookies + dep sidecars whose byte-stability gates incremental builds. (bif encoding is deterministic for a given buffer under fresh pools, so equal content ⇒ equal bytes.)
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L119" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L119" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="tagId-procs-all">
<div id="tagId,string">
<dt><pre><span class="Keyword">proc</span> <a href="#tagId%2Cstring"><span class="Identifier">tagId</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">TagId</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>
Intern a tag name in the shared tag pool.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L42" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L42" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="writeFileStable-procs-all">
<div id="writeFileStable,TokenBuf,string">
<dt><pre><span class="Keyword">proc</span> <a href="#writeFileStable%2CTokenBuf%2Cstring"><span class="Identifier">writeFileStable</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">TokenBuf</span><span class="Other">;</span> <span class="Identifier">path</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">onlyIfChanged</span> <span class="Other">=</span> <span class="Identifier">false</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="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">RootEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</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>
Serialize <tt class="docutils literal"><span class="pre"><span class="Identifier">b</span></span></tt> to canonical module NIF text and write it. Mirrors <tt class="docutils literal"><span class="pre"><span class="Identifier">nifcursors</span><span class="Operator">.</span><span class="Identifier">writeFile</span></span></tt>: the module suffix is derived from <tt class="docutils literal"><span class="pre"><span class="Identifier">path</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="StringLit">&quot;.&quot;</span> <span class="Operator">&amp;</span> <span class="Identifier">extractModuleSuffix</span></span></tt>), and <tt class="docutils literal"><span class="pre"><span class="Identifier">onlyIfChanged</span></span></tt> skips the write when the on-disk bytes already match — the content-stability nifmake's incremental rebuild depends on.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L78" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L78" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="writeSemDeps-procs-all">
<div id="writeSemDeps,ConfigRef,int32,seq[string]">
<dt><pre><span class="Keyword">proc</span> <a href="#writeSemDeps%2CConfigRef%2Cint32%2Cseq%5Bstring%5D"><span class="Identifier">writeSemDeps</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="Identifier">thisModule</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">;</span> <span class="Identifier">importPaths</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><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="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="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">WriteIOEffect</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="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Stage 1 spike: the nifcore port of <tt class="docutils literal"><span class="pre"><span class="Identifier">ast2nif</span><span class="Operator">.</span><span class="Identifier">writeSemDeps</span></span></tt>. Serializes the module's resolved direct imports as <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">semdeps</span> <span class="StringLit">&quot;path&quot;</span> <span class="Operator">...</span><span class="Punctuation">)</span></span></tt>. Byte-identical to the old writer (verified), so <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">ic</span></span></tt> build graphs are unaffected.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L239" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L239" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="writeStable-procs-all">
<div id="writeStable,IcBuilder,string">
<dt><pre><span class="Keyword">proc</span> <a href="#writeStable%2CIcBuilder%2Cstring"><span class="Identifier">writeStable</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">path</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">onlyIfChanged</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">)</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="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">RootEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L92" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L92" 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: 2026-07-10 18:29:07 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

42
compiler/icnifcore.idx Normal file
View File

@@ -0,0 +1,42 @@
nimTitle icnifcore icnifcore.html module icnifcore 0
nim icPool icnifcore.html#icPool let icPool 35
nim icTags icnifcore.html#icTags let icTags 36
nim createIcBuf icnifcore.html#createIcBuf,int proc createIcBuf(cap = 16): TokenBuf 38
nim tagId icnifcore.html#tagId,string proc tagId(s: string): TagId 42
nim IcBuilder icnifcore.html#IcBuilder object IcBuilder 47
nim newIcBuilder icnifcore.html#newIcBuilder,int proc newIcBuilder(cap = 16): IcBuilder 54
nim openTag icnifcore.html#openTag,IcBuilder,string proc openTag(b: var IcBuilder; tag: string) 56
nim closeTag icnifcore.html#closeTag,IcBuilder proc closeTag(b: var IcBuilder) 57
nim addSymUse icnifcore.html#addSymUse,IcBuilder,string proc addSymUse(b: var IcBuilder; s: string) 58
nim addSymDef icnifcore.html#addSymDef,IcBuilder,string proc addSymDef(b: var IcBuilder; s: string) 59
nim addIdent icnifcore.html#addIdent,IcBuilder,string proc addIdent(b: var IcBuilder; s: string) 60
nim addStrLit icnifcore.html#addStrLit,IcBuilder,string proc addStrLit(b: var IcBuilder; s: string) 61
nim addIntLit icnifcore.html#addIntLit,IcBuilder,int64 proc addIntLit(b: var IcBuilder; v: int64) 62
nim addUIntLit icnifcore.html#addUIntLit,IcBuilder,uint64 proc addUIntLit(b: var IcBuilder; v: uint64) 63
nim addFloatLit icnifcore.html#addFloatLit,IcBuilder,float64 proc addFloatLit(b: var IcBuilder; v: float64) 64
nim addCharLit icnifcore.html#addCharLit,IcBuilder,char proc addCharLit(b: var IcBuilder; c: char) 65
nim addDotToken icnifcore.html#addDotToken,IcBuilder proc addDotToken(b: var IcBuilder) 66
nim lineInfo icnifcore.html#lineInfo,IcBuilder,string,int32,int32,string proc lineInfo(b: var IcBuilder; file: string; line, col: int32; comment = "") 68
nim writeFileStable icnifcore.html#writeFileStable,TokenBuf,string proc writeFileStable(b: var TokenBuf; path: string; onlyIfChanged = false) 78
nim writeStable icnifcore.html#writeStable,IcBuilder,string proc writeStable(b: var IcBuilder; path: string; onlyIfChanged = false) 92
nim cursorPool icnifcore.html#cursorPool,Cursor proc cursorPool(c: Cursor): Pool 95
nim storeBif icnifcore.html#storeBif,IcBuilder,string,string proc storeBif(b: var IcBuilder; path: string; dottedSuffix: string) 114
nim storeBifStable icnifcore.html#storeBifStable,IcBuilder,string,string proc storeBifStable(b: var IcBuilder; path: string; dottedSuffix: string) 119
nim addAll icnifcore.html#addAll,IcBuilder,IcBuilder proc addAll(dest: var IcBuilder; src: var IcBuilder) 140
nim addStmtsBody icnifcore.html#addStmtsBody,IcBuilder,IcBuilder proc addStmtsBody(dest: var IcBuilder; src: var IcBuilder) 148
nim ckParLe icnifcore.html#ckParLe CookieKind.ckParLe 167
nim ckParRi icnifcore.html#ckParRi CookieKind.ckParRi 167
nim ckSym icnifcore.html#ckSym CookieKind.ckSym 167
nim ckSymDef icnifcore.html#ckSymDef CookieKind.ckSymDef 167
nim ckIdent icnifcore.html#ckIdent CookieKind.ckIdent 167
nim ckStr icnifcore.html#ckStr CookieKind.ckStr 167
nim ckInt icnifcore.html#ckInt CookieKind.ckInt 167
nim ckUInt icnifcore.html#ckUInt CookieKind.ckUInt 167
nim ckFloat icnifcore.html#ckFloat CookieKind.ckFloat 167
nim ckChar icnifcore.html#ckChar CookieKind.ckChar 167
nim ckDot icnifcore.html#ckDot CookieKind.ckDot 167
nim CookieKind icnifcore.html#CookieKind enum CookieKind 167
nim CookieTok icnifcore.html#CookieTok object CookieTok 169
nim flattenForCookie icnifcore.html#flattenForCookie,IcBuilder proc flattenForCookie(b: var IcBuilder): seq[CookieTok] 211
nim collectBifStrLits icnifcore.html#collectBifStrLits,string proc collectBifStrLits(path: string): seq[string] 217
nim writeSemDeps icnifcore.html#writeSemDeps,ConfigRef,int32,seq[string] proc writeSemDeps(config: ConfigRef; thisModule: int32; importPaths: seq[string]) 239

307
compiler/idents.html Normal file
View File

@@ -0,0 +1,307 @@
<?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>idents</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">idents</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="#IdentCache" title="IdentCache = ref object
idAnon*, idDelegator*, emptyIdent*: PIdent">IdentCache</a></li>
<li><a class="reference" href="#PIdent" title="PIdent = ref TIdent">PIdent</a></li>
<li><a class="reference" href="#TIdent" title="TIdent {.acyclic.} = object
id*: int
s*: string
next*: PIdent
h*: Hash">TIdent</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="#%3D%3D%2CPIdent%2CPIdent" title="`==`(a, b: PIdent): bool">`==`(a, b: PIdent): bool</a></li>
</ul>
<ul class="simple nested-toc-section">cmpIgnoreStyle
<li><a class="reference" href="#cmpIgnoreStyle%2Ccstring%2Ccstring%2Cint" title="cmpIgnoreStyle(a, b: cstring; blen: int): int">cmpIgnoreStyle(a, b: cstring; blen: int): int</a></li>
</ul>
<ul class="simple nested-toc-section">getIdent
<li><a class="reference" href="#getIdent%2CIdentCache%2Ccstring%2Cint%2CHash" title="getIdent(ic: IdentCache; identifier: cstring; length: int; h: Hash): PIdent">getIdent(ic: IdentCache; identifier: cstring; length: int; h: Hash): PIdent</a></li>
<li><a class="reference" href="#getIdent%2CIdentCache%2Cstring" title="getIdent(ic: IdentCache; identifier: string): PIdent">getIdent(ic: IdentCache; identifier: string): PIdent</a></li>
<li><a class="reference" href="#getIdent%2CIdentCache%2Cstring%2CHash" title="getIdent(ic: IdentCache; identifier: string; h: Hash): PIdent">getIdent(ic: IdentCache; identifier: string; h: Hash): PIdent</a></li>
</ul>
<ul class="simple nested-toc-section">hash
<li><a class="reference" href="#hash%2CPIdent" title="hash(x: PIdent): Hash">hash(x: PIdent): Hash</a></li>
</ul>
<ul class="simple nested-toc-section">newIdentCache
<li><a class="reference" href="#newIdentCache" title="newIdentCache(): IdentCache">newIdentCache(): IdentCache</a></li>
</ul>
<ul class="simple nested-toc-section">resetIdentCache
<li><a class="reference" href="#resetIdentCache" title="resetIdentCache()">resetIdentCache()</a></li>
</ul>
<ul class="simple nested-toc-section">whichKeyword
<li><a class="reference" href="#whichKeyword%2CPIdent" title="whichKeyword(id: PIdent): TSpecialWord">whichKeyword(id: PIdent): TSpecialWord</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/idents.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/idents.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="wordrecg.html">wordrecg</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="IdentCache">
<dt><pre><a href="#IdentCache"><span class="Identifier">IdentCache</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span>
<span class="Identifier">idAnon</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">idDelegator</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">emptyIdent</span><span class="Operator">*</span><span class="Other">:</span> <a href="#PIdent"><span class="Identifier">PIdent</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/idents.nim#L28" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/idents.nim#L28" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="PIdent">
<dt><pre><a href="#PIdent"><span class="Identifier">PIdent</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <a href="#TIdent"><span class="Identifier">TIdent</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/idents.nim#L21" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/idents.nim#L21" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TIdent">
<dt><pre><a href="#TIdent"><span class="Identifier">TIdent</span></a> {.<span class="Identifier">acyclic</span>.} <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">id</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span>
<span class="Identifier">s</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">next</span><span class="Operator">*</span><span class="Other">:</span> <a href="#PIdent"><span class="Identifier">PIdent</span></a>
<span class="Identifier">h</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Hash</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/idents.nim#L22" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/idents.nim#L22" 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="==,PIdent,PIdent">
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2CPIdent%2CPIdent"><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="#PIdent"><span class="Identifier">PIdent</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/idents.nim#L121" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/idents.nim#L121" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="cmpIgnoreStyle-procs-all">
<div id="cmpIgnoreStyle,cstring,cstring,int">
<dt><pre><span class="Keyword">proc</span> <a href="#cmpIgnoreStyle%2Ccstring%2Ccstring%2Cint"><span class="Identifier">cmpIgnoreStyle</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <span class="Identifier">cstring</span><span class="Other">;</span> <span class="Identifier">blen</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</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/idents.nim#L35" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/idents.nim#L35" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getIdent-procs-all">
<div id="getIdent,IdentCache,cstring,int,Hash">
<dt><pre><span class="Keyword">proc</span> <a href="#getIdent%2CIdentCache%2Ccstring%2Cint%2CHash"><span class="Identifier">getIdent</span></a><span class="Other">(</span><span class="Identifier">ic</span><span class="Other">:</span> <a href="#IdentCache"><span class="Identifier">IdentCache</span></a><span class="Other">;</span> <span class="Identifier">identifier</span><span class="Other">:</span> <span class="Identifier">cstring</span><span class="Other">;</span> <span class="Identifier">length</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">h</span><span class="Other">:</span> <span class="Identifier">Hash</span><span class="Other">)</span><span class="Other">:</span> <a href="#PIdent"><span class="Identifier">PIdent</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/idents.nim#L69" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/idents.nim#L69" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="getIdent,IdentCache,string">
<dt><pre><span class="Keyword">proc</span> <a href="#getIdent%2CIdentCache%2Cstring"><span class="Identifier">getIdent</span></a><span class="Other">(</span><span class="Identifier">ic</span><span class="Other">:</span> <a href="#IdentCache"><span class="Identifier">IdentCache</span></a><span class="Other">;</span> <span class="Identifier">identifier</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="#PIdent"><span class="Identifier">PIdent</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/idents.nim#L99" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/idents.nim#L99" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="getIdent,IdentCache,string,Hash">
<dt><pre><span class="Keyword">proc</span> <a href="#getIdent%2CIdentCache%2Cstring%2CHash"><span class="Identifier">getIdent</span></a><span class="Other">(</span><span class="Identifier">ic</span><span class="Other">:</span> <a href="#IdentCache"><span class="Identifier">IdentCache</span></a><span class="Other">;</span> <span class="Identifier">identifier</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">h</span><span class="Other">:</span> <span class="Identifier">Hash</span><span class="Other">)</span><span class="Other">:</span> <a href="#PIdent"><span class="Identifier">PIdent</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/idents.nim#L103" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/idents.nim#L103" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="hash-procs-all">
<div id="hash,PIdent">
<dt><pre><span class="Keyword">proc</span> <a href="#hash%2CPIdent"><span class="Identifier">hash</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="#PIdent"><span class="Identifier">PIdent</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Hash</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/idents.nim#L120" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/idents.nim#L120" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="newIdentCache-procs-all">
<div id="newIdentCache">
<dt><pre><span class="Keyword">proc</span> <a href="#newIdentCache"><span class="Identifier">newIdentCache</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="#IdentCache"><span class="Identifier">IdentCache</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/idents.nim#L106" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/idents.nim#L106" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="resetIdentCache-procs-all">
<div id="resetIdentCache">
<dt><pre><span class="Keyword">proc</span> <a href="#resetIdentCache"><span class="Identifier">resetIdentCache</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/idents.nim#L33" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/idents.nim#L33" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="whichKeyword-procs-all">
<div id="whichKeyword,PIdent">
<dt><pre><span class="Keyword">proc</span> <a href="#whichKeyword%2CPIdent"><span class="Identifier">whichKeyword</span></a><span class="Other">(</span><span class="Identifier">id</span><span class="Other">:</span> <a href="#PIdent"><span class="Identifier">PIdent</span></a><span class="Other">)</span><span class="Other">:</span> <a href="wordrecg.html#TSpecialWord"><span class="Identifier">TSpecialWord</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/idents.nim#L116" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/idents.nim#L116" 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: 2026-07-10 18:29:06 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

14
compiler/idents.idx Normal file
View File

@@ -0,0 +1,14 @@
nimTitle idents idents.html module idents 0
nim PIdent idents.html#PIdent type PIdent 21
nim TIdent idents.html#TIdent object TIdent 22
nim IdentCache idents.html#IdentCache type IdentCache 28
nim resetIdentCache idents.html#resetIdentCache proc resetIdentCache() 33
nim cmpIgnoreStyle idents.html#cmpIgnoreStyle,cstring,cstring,int proc cmpIgnoreStyle(a, b: cstring; blen: int): int 35
nim getIdent idents.html#getIdent,IdentCache,cstring,int,Hash proc getIdent(ic: IdentCache; identifier: cstring; length: int; h: Hash): PIdent 69
nim getIdent idents.html#getIdent,IdentCache,string proc getIdent(ic: IdentCache; identifier: string): PIdent 99
nim getIdent idents.html#getIdent,IdentCache,string,Hash proc getIdent(ic: IdentCache; identifier: string; h: Hash): PIdent 103
nim newIdentCache idents.html#newIdentCache proc newIdentCache(): IdentCache 106
nim whichKeyword idents.html#whichKeyword,PIdent proc whichKeyword(id: PIdent): TSpecialWord 116
nim hash idents.html#hash,PIdent proc hash(x: PIdent): Hash 120
nim `==` idents.html#==,PIdent,PIdent proc `==`(a, b: PIdent): bool 121
nimgrp getident idents.html#getIdent-procs-all proc 69

131
compiler/idetools.html Normal file
View File

@@ -0,0 +1,131 @@
<?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>idetools</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">idetools</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">runIdeQuery
<li><a class="reference" href="#runIdeQuery%2CConfigRef" title="runIdeQuery(conf: ConfigRef)">runIdeQuery(conf: ConfigRef)</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/idetools.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/idetools.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"><p>NIF-based goto-definition / find-all-usages for <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">track</span></span></tt>.</p>
<p>This is the mainline-Nim port of nimony's <tt class="docutils literal"><span class="pre"><span class="Identifier">idetools</span><span class="Operator">.</span><span class="Identifier">nim</span></span></tt>. It answers a <tt class="docutils literal"><span class="pre"><span class="Operator">--</span><span class="Identifier">def</span><span class="Punctuation">:</span><span class="Identifier">FILE</span><span class="Punctuation">,</span><span class="Identifier">LINE</span><span class="Punctuation">,</span><span class="Identifier">COL</span></span></tt> / <tt class="docutils literal"><span class="pre"><span class="Operator">--</span><span class="Identifier">usages</span><span class="Punctuation">:</span><span class="Identifier">FILE</span><span class="Punctuation">,</span><span class="Identifier">LINE</span><span class="Punctuation">,</span><span class="Identifier">COL</span></span></tt> query by <em>scanning the `.s.bif` files</em> (binary NIF, see <tt class="docutils literal"><span class="pre"><span class="Identifier">dist</span><span class="Operator">/</span><span class="Identifier">nimony</span><span class="Operator">/</span><span class="Identifier">src</span><span class="Operator">/</span><span class="Identifier">lib</span><span class="Operator">/</span><span class="Identifier">bif</span><span class="Operator">.</span><span class="Identifier">nim</span></span></tt>) that the preceding <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">ic</span></span></tt> frontend (<tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">track</span></span></tt>) emitted into the nimcache directory — NOT by re-running sem. NIF distinguishes a definition (<tt class="docutils literal"><span class="pre"><span class="Identifier">SymbolDef</span></span></tt> token) from a use (<tt class="docutils literal"><span class="pre"><span class="Identifier">Symbol</span></span></tt> token) syntactically, so goto-def / find-uses become plain token scans over type-checked NIF, which is more reliable than the classic PSym engine because generics and macros are type-checked in the NIF too.</p>
<p>Two passes (mirroring nimony's <tt class="docutils literal"><span class="pre"><span class="Identifier">usages</span></span></tt>):</p>
<ol class="simple"><li>Load the queried module's <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">s</span><span class="Operator">.</span><span class="Identifier">bif</span></span></tt> and find the <tt class="docutils literal"><span class="pre"><span class="Identifier">Symbol</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">SymbolDef</span></span></tt> token whose line info + identifier length contains <tt class="docutils literal"><span class="pre"><span class="Identifier">conf</span><span class="Operator">.</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">trackPos</span></span></tt>. That yields the mangled symbol NAME and whether it is global (&gt;= 2 dots).</li>
<li><tt class="docutils literal"><span class="pre"><span class="Operator">--</span><span class="Identifier">usages</span></span></tt>: emit every <tt class="docutils literal"><span class="pre"><span class="Identifier">Symbol</span></span></tt> (use) token; <tt class="docutils literal"><span class="pre"><span class="Operator">--</span><span class="Identifier">def</span></span></tt>: every <tt class="docutils literal"><span class="pre"><span class="Identifier">SymbolDef</span></span></tt>. A global symbol is scanned across every module <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">s</span><span class="Operator">.</span><span class="Identifier">bif</span></span></tt>; a local one only within the queried module.</li>
</ol>
<p>IMPORTANT porting note: <tt class="docutils literal"><span class="pre"><span class="Identifier">bif</span><span class="Operator">.</span><span class="Identifier">load</span></span></tt> mints FRESH per-file pools, so a <tt class="docutils literal"><span class="pre"><span class="Identifier">SymId</span></span></tt> from module A's buffer is meaningless in module B's. The cross-module match is therefore by the mangled NAME string, never by <tt class="docutils literal"><span class="pre"><span class="Identifier">SymId</span></span></tt> (nimony can compare ids because it parses every text NIF into one shared global pool; we cannot).</p>
</p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="options.html">options</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="pathutils.html">pathutils</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="ast2nif.html">ast2nif</a>, <a class="reference external" href="deps.html">deps</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="runIdeQuery-procs-all">
<div id="runIdeQuery,ConfigRef">
<dt><pre><span class="Keyword">proc</span> <a href="#runIdeQuery%2CConfigRef"><span class="Identifier">runIdeQuery</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><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">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="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">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>
Entry point: called from <tt class="docutils literal"><span class="pre"><span class="Identifier">main</span><span class="Operator">.</span><span class="Identifier">nim</span></span></tt> after <tt class="docutils literal"><span class="pre"><span class="Identifier">commandCheck</span></span></tt> when a <tt class="docutils literal"><span class="pre"><span class="Operator">--</span><span class="Identifier">def</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Operator">--</span><span class="Identifier">usages</span></span></tt> query is active. Assumes the check just emitted the project's <tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">s</span><span class="Operator">.</span><span class="Identifier">bif</span></span></tt> files into <tt class="docutils literal"><span class="pre"><span class="Identifier">getNimcacheDir</span><span class="Punctuation">(</span><span class="Identifier">conf</span><span class="Punctuation">)</span></span></tt>.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/idetools.nim#L220" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/idetools.nim#L220" 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: 2026-07-10 18:29:15 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

2
compiler/idetools.idx Normal file
View File

@@ -0,0 +1,2 @@
nimTitle idetools idetools.html module idetools 0
nim runIdeQuery idetools.html#runIdeQuery,ConfigRef proc runIdeQuery(conf: ConfigRef) 220

221
compiler/importer.html Normal file
View File

@@ -0,0 +1,221 @@
<?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>importer</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">importer</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">declarePureEnumField
<li><a class="reference" href="#declarePureEnumField%2CPContext%2CPSym" title="declarePureEnumField(c: PContext; s: PSym)">declarePureEnumField(c: PContext; s: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">evalFrom
<li><a class="reference" href="#evalFrom%2CPContext%2CPNode" title="evalFrom(c: PContext; n: PNode): PNode">evalFrom(c: PContext; n: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">evalImport
<li><a class="reference" href="#evalImport%2CPContext%2CPNode" title="evalImport(c: PContext; n: PNode): PNode">evalImport(c: PContext; n: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">evalImportExcept
<li><a class="reference" href="#evalImportExcept%2CPContext%2CPNode" title="evalImportExcept(c: PContext; n: PNode): PNode">evalImportExcept(c: PContext; n: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">importAllSymbols
<li><a class="reference" href="#importAllSymbols%2CPContext%2CPSym" title="importAllSymbols(c: PContext; fromMod: PSym)">importAllSymbols(c: PContext; fromMod: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">readExceptSet
<li><a class="reference" href="#readExceptSet%2CPContext%2CPNode" title="readExceptSet(c: PContext; n: PNode): IntSet">readExceptSet(c: PContext; n: PNode): IntSet</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/importer.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/importer.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">This module implements the symbol importing mechanism.</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="msgs.html">msgs</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="lookups.html">lookups</a>, <a class="reference external" href="semdata.html">semdata</a>, <a class="reference external" href="modulepaths.html">modulepaths</a>, <a class="reference external" href="sigmatch.html">sigmatch</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="modulegraphs.html">modulegraphs</a>, <a class="reference external" href="wordrecg.html">wordrecg</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="declarePureEnumField-procs-all">
<div id="declarePureEnumField,PContext,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#declarePureEnumField%2CPContext%2CPSym"><span class="Identifier">declarePureEnumField</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="semdata.html#PContext"><span class="Identifier">PContext</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/importer.nim#L30" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/importer.nim#L30" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="evalFrom-procs-all">
<div id="evalFrom,PContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#evalFrom%2CPContext%2CPNode"><span class="Identifier">evalFrom</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="semdata.html#PContext"><span class="Identifier">PContext</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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="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/importer.nim#L369" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/importer.nim#L369" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="evalImport-procs-all">
<div id="evalImport,PContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#evalImport%2CPContext%2CPNode"><span class="Identifier">evalImport</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="semdata.html#PContext"><span class="Identifier">PContext</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/importer.nim#L343" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/importer.nim#L343" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="evalImportExcept-procs-all">
<div id="evalImportExcept,PContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#evalImportExcept%2CPContext%2CPNode"><span class="Identifier">evalImportExcept</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="semdata.html#PContext"><span class="Identifier">PContext</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">Exception</span><span class="Other">,</span>
<span class="Identifier">ValueError</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="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/importer.nim#L384" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/importer.nim#L384" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="importAllSymbols-procs-all">
<div id="importAllSymbols,PContext,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#importAllSymbols%2CPContext%2CPSym"><span class="Identifier">importAllSymbols</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="semdata.html#PContext"><span class="Identifier">PContext</span></a><span class="Other">;</span> <span class="Identifier">fromMod</span><span class="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/importer.nim#L207" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/importer.nim#L207" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="readExceptSet-procs-all">
<div id="readExceptSet,PContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#readExceptSet%2CPContext%2CPNode"><span class="Identifier">readExceptSet</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="semdata.html#PContext"><span class="Identifier">PContext</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">IntSet</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">ValueError</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="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/importer.nim#L23" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/importer.nim#L23" 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: 2026-07-10 18:29:13 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

7
compiler/importer.idx Normal file
View File

@@ -0,0 +1,7 @@
nimTitle importer importer.html module importer 0
nim readExceptSet importer.html#readExceptSet,PContext,PNode proc readExceptSet(c: PContext; n: PNode): IntSet 23
nim declarePureEnumField importer.html#declarePureEnumField,PContext,PSym proc declarePureEnumField(c: PContext; s: PSym) 30
nim importAllSymbols importer.html#importAllSymbols,PContext,PSym proc importAllSymbols(c: PContext; fromMod: PSym) 207
nim evalImport importer.html#evalImport,PContext,PNode proc evalImport(c: PContext; n: PNode): PNode 343
nim evalFrom importer.html#evalFrom,PContext,PNode proc evalFrom(c: PContext; n: PNode): PNode 369
nim evalImportExcept importer.html#evalImportExcept,PContext,PNode proc evalImportExcept(c: PContext; n: PNode): PNode 384

97
compiler/index.html Normal file
View File

@@ -0,0 +1,97 @@
<?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>index</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">index</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">
<ul class="simple"><li><a class="reference" id="links_toc" href="#links">links</a></li>
</ul><li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/index.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/index.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">This module only exists to generate docs for the compiler.
<h2><a class="toc-backref" id="links" href="#links">links</a></h2><ul class="simple"><li><a class="reference external" href="../lib.html">main docs</a></li>
<li><a class="reference external" href="../nimc.html">compiler user guide</a></li>
<li><a class="reference external" href="../intern.html">Internals of the Nim Compiler</a></li>
</ul>
</p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="nim.html">nim</a>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-07-10 18:29:15 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

2
compiler/index.idx Normal file
View File

@@ -0,0 +1,2 @@
nimTitle index index.html module index 0
heading links index.html#links links 0

View File

@@ -0,0 +1,142 @@
<?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>injectdestructors</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">injectdestructors</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">injectDestructorCalls
<li><a class="reference" href="#injectDestructorCalls%2CModuleGraph%2CIdGenerator%2CPSym%2CPNode" title="injectDestructorCalls(g: ModuleGraph; idgen: IdGenerator; owner: PSym; n: PNode): PNode">injectDestructorCalls(g: ModuleGraph; idgen: IdGenerator; owner: PSym; n: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">sameLocation
<li><a class="reference" href="#sameLocation%2CPNode%2CPNode" title="sameLocation(a, b: PNode): bool">sameLocation(a, b: PNode): bool</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/injectdestructors.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/injectdestructors.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">Injects destructor calls into Nim code as well as an optimizer that optimizes copies to moves. This is implemented as an AST to AST transformation so that every backend benefits from it.See doc/destructors.rst for a spec of the implemented rewrite rules</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="msgs.html">msgs</a>, <a class="reference external" href="renderer.html">renderer</a>, <a class="reference external" href="magicsys.html">magicsys</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="lowerings.html">lowerings</a>, <a class="reference external" href="modulegraphs.html">modulegraphs</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="parampatterns.html">parampatterns</a>, <a class="reference external" href="sighashes.html">sighashes</a>, <a class="reference external" href="liftdestructors.html">liftdestructors</a>, <a class="reference external" href="optimizer.html">optimizer</a>, <a class="reference external" href="varpartitions.html">varpartitions</a>, <a class="reference external" href="aliasanalysis.html">aliasanalysis</a>, <a class="reference external" href="dfa.html">dfa</a>, <a class="reference external" href="wordrecg.html">wordrecg</a>, <a class="reference external" href="trees.html">trees</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="injectDestructorCalls-procs-all">
<div id="injectDestructorCalls,ModuleGraph,IdGenerator,PSym,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#injectDestructorCalls%2CModuleGraph%2CIdGenerator%2CPSym%2CPNode"><span class="Identifier">injectDestructorCalls</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">owner</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span>
<span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/injectdestructors.nim#L1381" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/injectdestructors.nim#L1381" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="sameLocation-procs-all">
<div id="sameLocation,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#sameLocation%2CPNode%2CPNode"><span class="Identifier">sameLocation</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="astdef.html#PNode"><span class="Identifier">PNode</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/injectdestructors.nim#L1138" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/injectdestructors.nim#L1138" 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: 2026-07-10 18:29:11 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

View File

@@ -0,0 +1,3 @@
nimTitle injectdestructors injectdestructors.html module injectdestructors 0
nim sameLocation injectdestructors.html#sameLocation,PNode,PNode proc sameLocation(a, b: PNode): bool 1138
nim injectDestructorCalls injectdestructors.html#injectDestructorCalls,ModuleGraph,IdGenerator,PSym,PNode proc injectDestructorCalls(g: ModuleGraph; idgen: IdGenerator; owner: PSym; n: PNode): PNode 1381

1179
compiler/int128.html Normal file

File diff suppressed because it is too large Load Diff

75
compiler/int128.idx Normal file
View File

@@ -0,0 +1,75 @@
nimTitle int128 int128.html module int128 0
nim Int128 int128.html#Int128 object Int128 12
nim Zero int128.html#Zero const Zero 23
nim One int128.html#One const One 24
nim Ten int128.html#Ten const Ten 25
nim NegOne int128.html#NegOne const NegOne 28
nim low int128.html#low.t,typedesc[Int128] template low(t: typedesc[Int128]): Int128 30
nim high int128.html#high.t,typedesc[Int128] template high(t: typedesc[Int128]): Int128 31
nim `$` int128.html#$,Int128 proc `$`(a: Int128): string 33
nim toInt128 int128.html#toInt128,T proc toInt128[T: SomeInteger | bool](arg: T): Int128 35
nim toInt64 int128.html#toInt64,Int128 proc toInt64(arg: Int128): int64 65
nim toInt64Checked int128.html#toInt64Checked,Int128,int64 proc toInt64Checked(arg: Int128; onError: int64): int64 75
nim toInt32 int128.html#toInt32,Int128 proc toInt32(arg: Int128): int32 84
nim toInt16 int128.html#toInt16,Int128 proc toInt16(arg: Int128): int16 96
nim toInt8 int128.html#toInt8,Int128 proc toInt8(arg: Int128): int8 108
nim toInt int128.html#toInt,Int128 proc toInt(arg: Int128): int 120
nim toUInt64 int128.html#toUInt64,Int128 proc toUInt64(arg: Int128): uint64 126
nim toUInt32 int128.html#toUInt32,Int128 proc toUInt32(arg: Int128): uint32 131
nim toUInt16 int128.html#toUInt16,Int128 proc toUInt16(arg: Int128): uint16 137
nim toUInt8 int128.html#toUInt8,Int128 proc toUInt8(arg: Int128): uint8 143
nim toUInt int128.html#toUInt,Int128 proc toUInt(arg: Int128): uint 149
nim castToInt64 int128.html#castToInt64,Int128 proc castToInt64(arg: Int128): int64 155
nim castToUInt64 int128.html#castToUInt64,Int128 proc castToUInt64(arg: Int128): uint64 159
nim addToHex int128.html#addToHex,string,Int128 proc addToHex(result: var string; arg: Int128) 168
nim toHex int128.html#toHex,Int128 proc toHex(arg: Int128): string 174
nim inc int128.html#inc,Int128,uint32 proc inc(a: var Int128; y: uint32 = 1) 178
nim cmp int128.html#cmp,Int128,Int128 proc cmp(a, b: Int128): int 188
nim `<` int128.html#<,Int128,Int128 proc `<`(a, b: Int128): bool 198
nim `<=` int128.html#<=,Int128,Int128 proc `<=`(a, b: Int128): bool 201
nim `==` int128.html#==,Int128,Int128 proc `==`(a, b: Int128): bool 204
nim bitnot int128.html#bitnot,Int128 proc bitnot(a: Int128): Int128 211
nim bitand int128.html#bitand,Int128,Int128 proc bitand(a, b: Int128): Int128 218
nim bitor int128.html#bitor,Int128,Int128 proc bitor(a, b: Int128): Int128 225
nim bitxor int128.html#bitxor,Int128,Int128 proc bitxor(a, b: Int128): Int128 232
nim `shr` int128.html#shr,Int128,int proc `shr`(a: Int128; b: int): Int128 239
nim `shl` int128.html#shl,Int128,int proc `shl`(a: Int128; b: int): Int128 266
nim `+` int128.html#+,Int128,Int128 proc `+`(a, b: Int128): Int128 290
nim `+=` int128.html#+=,Int128,Int128 proc `+=`(a: var Int128; b: Int128) 301
nim `-` int128.html#-,Int128 proc `-`(a: Int128): Int128 304
nim `-` int128.html#-,Int128,Int128 proc `-`(a, b: Int128): Int128 308
nim `-=` int128.html#-=,Int128,Int128 proc `-=`(a: var Int128; b: Int128) 311
nim abs int128.html#abs,Int128 proc abs(a: Int128): Int128 314
nim `*` int128.html#*,Int128,int32 proc `*`(a: Int128; b: int32): Int128 338
nim `*` int128.html#*,Int128,Int128 proc `*`(lhs, rhs: Int128): Int128 359
nim `*=` int128.html#*=,Int128,Int128 proc `*=`(a: var Int128; b: Int128) 368
nim fastLog2 int128.html#fastLog2,Int128 proc fastLog2(a: Int128): int 373
nim divMod int128.html#divMod,Int128,Int128 proc divMod(dividend, divisor: Int128): tuple[quotient, remainder: Int128] 384
nim `div` int128.html#div,Int128,Int128 proc `div`(a, b: Int128): Int128 436
nim `mod` int128.html#mod,Int128,Int128 proc `mod`(a, b: Int128): Int128 440
nim addInt128 int128.html#addInt128,string,Int128 proc addInt128(result: var string; value: Int128) 444
nim parseDecimalInt128 int128.html#parseDecimalInt128,string,int proc parseDecimalInt128(arg: string; pos: int = 0): Int128 474
nim `<` int128.html#<,Int128,BiggestInt proc `<`(a: Int128; b: BiggestInt): bool 495
nim `<` int128.html#<,BiggestInt,Int128 proc `<`(a: BiggestInt; b: Int128): bool 498
nim `<=` int128.html#<=,Int128,BiggestInt proc `<=`(a: Int128; b: BiggestInt): bool 501
nim `<=` int128.html#<=,BiggestInt,Int128 proc `<=`(a: BiggestInt; b: Int128): bool 504
nim `==` int128.html#==,Int128,BiggestInt proc `==`(a: Int128; b: BiggestInt): bool 507
nim `==` int128.html#==,BiggestInt,Int128 proc `==`(a: BiggestInt; b: Int128): bool 510
nim `-` int128.html#-,BiggestInt,Int128 proc `-`(a: BiggestInt; b: Int128): Int128 513
nim `-` int128.html#-,Int128,BiggestInt proc `-`(a: Int128; b: BiggestInt): Int128 516
nim `+` int128.html#+,BiggestInt,Int128 proc `+`(a: BiggestInt; b: Int128): Int128 519
nim `+` int128.html#+,Int128,BiggestInt proc `+`(a: Int128; b: BiggestInt): Int128 522
nim toFloat64 int128.html#toFloat64,Int128 proc toFloat64(arg: Int128): float64 525
nim toInt128 int128.html#toInt128,float64 proc toInt128(arg: float64): Int128 540
nim maskUInt64 int128.html#maskUInt64,Int128 proc maskUInt64(arg: Int128): Int128 555
nim maskUInt32 int128.html#maskUInt32,Int128 proc maskUInt32(arg: Int128): Int128 562
nim maskUInt16 int128.html#maskUInt16,Int128 proc maskUInt16(arg: Int128): Int128 569
nim maskUInt8 int128.html#maskUInt8,Int128 proc maskUInt8(arg: Int128): Int128 576
nim maskBytes int128.html#maskBytes,Int128,int proc maskBytes(arg: Int128; numbytes: int): Int128 583
nimgrp - int128.html#--procs-all proc 304
nimgrp toint128 int128.html#toInt128-procs-all proc 35
nimgrp <= int128.html#<=-procs-all proc 201
nimgrp < int128.html#<-procs-all proc 198
nimgrp == int128.html#==-procs-all proc 204
nimgrp + int128.html#+-procs-all proc 290
nimgrp * int128.html#*-procs-all proc 338

View File

@@ -0,0 +1,143 @@
<?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>isolation_check</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">isolation_check</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">canAlias
<li><a class="reference" href="#canAlias%2CPType%2CPType" title="canAlias(arg, ret: PType): bool">canAlias(arg, ret: PType): bool</a></li>
</ul>
<ul class="simple nested-toc-section">checkIsolate
<li><a class="reference" href="#checkIsolate%2CPNode" title="checkIsolate(n: PNode): bool">checkIsolate(n: PNode): bool</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/isolation_check.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/isolation_check.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">Implementation of the check that <tt class="docutils literal"><span class="pre"><span class="Identifier">recover</span></span></tt> needs, see <a class="reference external" href="https://github.com/nim-lang/RFCs/issues/244">https://github.com/nim-lang/RFCs/issues/244</a> for more details.</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="types.html">types</a>, <a class="reference external" href="renderer.html">renderer</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="canAlias-procs-all">
<div id="canAlias,PType,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#canAlias%2CPType%2CPType"><span class="Identifier">canAlias</span></a><span class="Other">(</span><span class="Identifier">arg</span><span class="Other">,</span> <span class="Identifier">ret</span><span class="Other">:</span> <a href="astdef.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">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</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">RootEffect</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/isolation_check.nim#L144" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/isolation_check.nim#L144" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="checkIsolate-procs-all">
<div id="checkIsolate,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#checkIsolate%2CPNode"><span class="Identifier">checkIsolate</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</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">RootEffect</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/isolation_check.nim#L166" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/isolation_check.nim#L166" 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: 2026-07-10 18:29:09 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

View File

@@ -0,0 +1,3 @@
nimTitle isolation_check isolation_check.html module isolation_check 0
nim canAlias isolation_check.html#canAlias,PType,PType proc canAlias(arg, ret: PType): bool 144
nim checkIsolate isolation_check.html#checkIsolate,PNode proc checkIsolate(n: PNode): bool 166

345
compiler/itemids.html Normal file
View File

@@ -0,0 +1,345 @@
<?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>itemids</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">itemids</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>
<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="#ItemId" title="ItemId = object">ItemId</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#10" id="60">Consts</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#PackageModuleId" title="PackageModuleId = -3'i32">PackageModuleId</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%2CItemId" title="`$`(x: ItemId): string">`$`(x: ItemId): string</a></li>
</ul>
<ul class="simple nested-toc-section">==
<li><a class="reference" href="#%3D%3D%2CItemId%2CItemId" title="`==`(a, b: ItemId): bool">`==`(a, b: ItemId): bool</a></li>
</ul>
<ul class="simple nested-toc-section">backendItemId
<li><a class="reference" href="#backendItemId%2Cint32%2Cint32" title="backendItemId(module, item: int32): ItemId">backendItemId(module, item: int32): ItemId</a></li>
</ul>
<ul class="simple nested-toc-section">derivedFieldId
<li><a class="reference" href="#derivedFieldId%2CItemId" title="derivedFieldId(source: ItemId): ItemId">derivedFieldId(source: ItemId): ItemId</a></li>
</ul>
<ul class="simple nested-toc-section">hash
<li><a class="reference" href="#hash%2CItemId" title="hash(x: ItemId): Hash">hash(x: ItemId): Hash</a></li>
</ul>
<ul class="simple nested-toc-section">isBackendMinted
<li><a class="reference" href="#isBackendMinted%2CItemId" title="isBackendMinted(x: ItemId): bool">isBackendMinted(x: ItemId): bool</a></li>
</ul>
<ul class="simple nested-toc-section">item
<li><a class="reference" href="#item%2CItemId" title="item(x: ItemId): int32">item(x: ItemId): int32</a></li>
</ul>
<ul class="simple nested-toc-section">itemId
<li><a class="reference" href="#itemId%2Cint32%2Cint32" title="itemId(module, item: int32): ItemId">itemId(module, item: int32): ItemId</a></li>
</ul>
<ul class="simple nested-toc-section">matchesDerivedFieldId
<li><a class="reference" href="#matchesDerivedFieldId%2CItemId%2CItemId" title="matchesDerivedFieldId(field, source: ItemId): bool">matchesDerivedFieldId(field, source: ItemId): bool</a></li>
</ul>
<ul class="simple nested-toc-section">module
<li><a class="reference" href="#module%2CItemId" title="module(x: ItemId): int32">module(x: ItemId): int32</a></li>
</ul>
<ul class="simple nested-toc-section">toId
<li><a class="reference" href="#toId%2CItemId" title="toId(a: ItemId): int">toId(a: ItemId): int</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/itemids.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/itemids.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"><p><tt class="docutils literal"><span class="pre"><span class="Identifier">ItemId</span></span></tt> is the identity of a symbol or type: a <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">module</span><span class="Punctuation">,</span> <span class="Identifier">item</span><span class="Punctuation">)</span></span></tt> pair.</p>
<p>The fields are private on purpose: the module half reserves bit 30 as the &quot;backend minted&quot; marker, so all construction and inspection has to go through this module's API and the marker bit can never leak into module indexing or arithmetic.</p>
<p>Three id spaces coexist per module:</p>
<ul class="simple"><li>Semantic-phase and NIF-loader ids: <tt class="docutils literal"><span class="pre"><span class="Identifier">itemId</span><span class="Punctuation">(</span><span class="Identifier">module</span><span class="Punctuation">,</span> <span class="Identifier">item</span><span class="Punctuation">)</span></span></tt> with <tt class="docutils literal"><span class="pre"><span class="Identifier">item</span> <span class="Operator">&gt;</span> <span class="DecNumber">0</span></span></tt>.</li>
<li>Backend-minted ids (IC codegen, <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">nifc</span></span></tt>: transf labels and temps, lifted hooks): <tt class="docutils literal"><span class="pre"><span class="Identifier">backendItemId</span></span></tt> sets <tt class="docutils literal"><span class="pre"><span class="Identifier">BackendModuleBit</span></span></tt>, so these can never compare equal to a loader id even though both counters mint the same small <tt class="docutils literal"><span class="pre"><span class="Identifier">item</span></span></tt> range in one process. They never cross a process boundary and must never be written to a NIF file.</li>
<li>Derived env/tuple-field ids (<tt class="docutils literal"><span class="pre"><span class="Identifier">lowerings</span><span class="Operator">.</span><span class="Identifier">addField</span></span></tt>): the source local's id with <tt class="docutils literal"><span class="pre"><span class="Identifier">item</span></span></tt> negated. <tt class="docutils literal"><span class="pre"><span class="Identifier">derivedFieldId</span></span></tt> preserves the backend marker, keeping the derivation collision-free for both id spaces above.</li>
</ul>
</p>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="ItemId">
<dt><pre><a href="#ItemId"><span class="Identifier">ItemId</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/itemids.nim#L41" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/itemids.nim#L41" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</dl>
</div>
<div class="section" id="10">
<h1><a class="toc-backref" href="#10">Consts</a></h1>
<dl class="item">
<div id="PackageModuleId">
<dt><pre><a href="#PackageModuleId"><span class="Identifier">PackageModuleId</span></a> <span class="Other">=</span> <span class="DecNumber">-3'i32</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/itemids.nim#L38" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/itemids.nim#L38" 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="$,ItemId">
<dt><pre><span class="Keyword">proc</span> <a href="#%24%2CItemId"><span class="Identifier">`$`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="#ItemId"><span class="Identifier">ItemId</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/itemids.nim#L86" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/itemids.nim#L86" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="==-procs-all">
<div id="==,ItemId,ItemId">
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2CItemId%2CItemId"><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="#ItemId"><span class="Identifier">ItemId</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/itemids.nim#L77" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/itemids.nim#L77" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="backendItemId-procs-all">
<div id="backendItemId,int32,int32">
<dt><pre><span class="Keyword">proc</span> <a href="#backendItemId%2Cint32%2Cint32"><span class="Identifier">backendItemId</span></a><span class="Other">(</span><span class="Identifier">module</span><span class="Other">,</span> <span class="Identifier">item</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">)</span><span class="Other">:</span> <a href="#ItemId"><span class="Identifier">ItemId</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="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>
An id minted during IC codegen; distinct from every <tt class="docutils literal"><span class="pre"><span class="Identifier">itemId</span></span></tt> of the same module so that the loader's stub counter and the backend's counter cannot collide in id-keyed tables.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/itemids.nim#L49" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/itemids.nim#L49" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="derivedFieldId-procs-all">
<div id="derivedFieldId,ItemId">
<dt><pre><span class="Keyword">proc</span> <a href="#derivedFieldId%2CItemId"><span class="Identifier">derivedFieldId</span></a><span class="Other">(</span><span class="Identifier">source</span><span class="Other">:</span> <a href="#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">)</span><span class="Other">:</span> <a href="#ItemId"><span class="Identifier">ItemId</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="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>
The id of the env/tuple field that <tt class="docutils literal"><span class="pre"><span class="Identifier">lowerings</span><span class="Operator">.</span><span class="Identifier">addField</span></span></tt> derives for a captured local: <tt class="docutils literal"><span class="pre"><span class="Identifier">item</span></span></tt> negated, module bits (including the backend marker) preserved.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/itemids.nim#L65" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/itemids.nim#L65" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="hash-procs-all">
<div id="hash,ItemId">
<dt><pre><span class="Keyword">proc</span> <a href="#hash%2CItemId"><span class="Identifier">hash</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="#ItemId"><span class="Identifier">ItemId</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/itemids.nim#L81" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/itemids.nim#L81" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isBackendMinted-procs-all">
<div id="isBackendMinted,ItemId">
<dt><pre><span class="Keyword">proc</span> <a href="#isBackendMinted%2CItemId"><span class="Identifier">isBackendMinted</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="#ItemId"><span class="Identifier">ItemId</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/itemids.nim#L62" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/itemids.nim#L62" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="item-procs-all">
<div id="item,ItemId">
<dt><pre><span class="Keyword">proc</span> <a href="#item%2CItemId"><span class="Identifier">item</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int32</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/itemids.nim#L60" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/itemids.nim#L60" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="itemId-procs-all">
<div id="itemId,int32,int32">
<dt><pre><span class="Keyword">proc</span> <a href="#itemId%2Cint32%2Cint32"><span class="Identifier">itemId</span></a><span class="Other">(</span><span class="Identifier">module</span><span class="Other">,</span> <span class="Identifier">item</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">)</span><span class="Other">:</span> <a href="#ItemId"><span class="Identifier">ItemId</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="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/itemids.nim#L45" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/itemids.nim#L45" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="matchesDerivedFieldId-procs-all">
<div id="matchesDerivedFieldId,ItemId,ItemId">
<dt><pre><span class="Keyword">proc</span> <a href="#matchesDerivedFieldId%2CItemId%2CItemId"><span class="Identifier">matchesDerivedFieldId</span></a><span class="Other">(</span><span class="Identifier">field</span><span class="Other">,</span> <span class="Identifier">source</span><span class="Other">:</span> <a href="#ItemId"><span class="Identifier">ItemId</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>
Does <tt class="docutils literal"><span class="pre"><span class="Identifier">field</span></span></tt> carry the id <tt class="docutils literal"><span class="pre"><span class="Identifier">derivedFieldId</span></span></tt> would derive for <tt class="docutils literal"><span class="pre"><span class="Identifier">source</span></span></tt>? <tt class="docutils literal"><span class="pre"><span class="Identifier">source</span></span></tt> may itself already be the derived field id.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/itemids.nim#L71" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/itemids.nim#L71" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="module-procs-all">
<div id="module,ItemId">
<dt><pre><span class="Keyword">proc</span> <a href="#module%2CItemId"><span class="Identifier">module</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int32</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/itemids.nim#L56" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/itemids.nim#L56" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="toId-procs-all">
<div id="toId,ItemId">
<dt><pre><span class="Keyword">proc</span> <a href="#toId%2CItemId"><span class="Identifier">toId</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <a href="#ItemId"><span class="Identifier">ItemId</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</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>
Packs an ItemId into a single int. Uses the raw module bits so the backend marker keeps the two id spaces disjoint (bit 30 shifts to bit 54; like the module/item split itself this needs a 64-bit int).
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/itemids.nim#L94" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/itemids.nim#L94" 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: 2026-07-10 18:29:06 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

14
compiler/itemids.idx Normal file
View File

@@ -0,0 +1,14 @@
nimTitle itemids itemids.html module itemids 0
nim PackageModuleId itemids.html#PackageModuleId const PackageModuleId 38
nim ItemId itemids.html#ItemId object ItemId 41
nim itemId itemids.html#itemId,int32,int32 proc itemId(module, item: int32): ItemId 45
nim backendItemId itemids.html#backendItemId,int32,int32 proc backendItemId(module, item: int32): ItemId 49
nim module itemids.html#module,ItemId proc module(x: ItemId): int32 56
nim item itemids.html#item,ItemId proc item(x: ItemId): int32 60
nim isBackendMinted itemids.html#isBackendMinted,ItemId proc isBackendMinted(x: ItemId): bool 62
nim derivedFieldId itemids.html#derivedFieldId,ItemId proc derivedFieldId(source: ItemId): ItemId 65
nim matchesDerivedFieldId itemids.html#matchesDerivedFieldId,ItemId,ItemId proc matchesDerivedFieldId(field, source: ItemId): bool 71
nim `==` itemids.html#==,ItemId,ItemId proc `==`(a, b: ItemId): bool 77
nim hash itemids.html#hash,ItemId proc hash(x: ItemId): Hash 81
nim `$` itemids.html#$,ItemId proc `$`(x: ItemId): string 86
nim toId itemids.html#toId,ItemId proc toId(a: ItemId): int 94

195
compiler/jsgen.html Normal file
View File

@@ -0,0 +1,195 @@
<?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>jsgen</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">jsgen</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="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">finalJSCodeGen
<li><a class="reference" href="#finalJSCodeGen%2CModuleGraph%2CPPassContext%2CPNode" title="finalJSCodeGen(graph: ModuleGraph; b: PPassContext; n: PNode): PNode">finalJSCodeGen(graph: ModuleGraph; b: PPassContext; n: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">processJSCodeGen
<li><a class="reference" href="#processJSCodeGen%2CPPassContext%2CPNode" title="processJSCodeGen(b: PPassContext; n: PNode): PNode">processJSCodeGen(b: PPassContext; n: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">setupJSgen
<li><a class="reference" href="#setupJSgen%2CModuleGraph%2CPSym%2CIdGenerator" title="setupJSgen(graph: ModuleGraph; s: PSym; idgen: IdGenerator): PPassContext">setupJSgen(graph: ModuleGraph; s: PSym; idgen: IdGenerator): PPassContext</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">config
<li><a class="reference" href="#config.t%2CPProc" title="config(p: PProc): ConfigRef">config(p: PProc): ConfigRef</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/jsgen.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/jsgen.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">Type info generation for the JS backend.</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="trees.html">trees</a>, <a class="reference external" href="magicsys.html">magicsys</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="nversion.html">nversion</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="ropes.html">ropes</a>, <a class="reference external" href="wordrecg.html">wordrecg</a>, <a class="reference external" href="renderer.html">renderer</a>, <a class="reference external" href="cgmeth.html">cgmeth</a>, <a class="reference external" href="lowerings.html">lowerings</a>, <a class="reference external" href="sighashes.html">sighashes</a>, <a class="reference external" href="modulegraphs.html">modulegraphs</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="transf.html">transf</a>, <a class="reference external" href="injectdestructors.html">injectdestructors</a>, <a class="reference external" href="sourcemap.html">sourcemap</a>, <a class="reference external" href="astmsgs.html">astmsgs</a>, <a class="reference external" href="pushpoppragmas.html">pushpoppragmas</a>, <a class="reference external" href="mangleutils.html">mangleutils</a>, <a class="reference external" href="varpartitions.html">varpartitions</a>, <a class="reference external" href="pipelineutils.html">pipelineutils</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="finalJSCodeGen-procs-all">
<div id="finalJSCodeGen,ModuleGraph,PPassContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#finalJSCodeGen%2CModuleGraph%2CPPassContext%2CPNode"><span class="Identifier">finalJSCodeGen</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">b</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="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</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>
Finalize JS code generation of a Nim module. Param <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> may contain nodes returned from the last module close call.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/jsgen.nim#L3207" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/jsgen.nim#L3207" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="processJSCodeGen-procs-all">
<div id="processJSCodeGen,PPassContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#processJSCodeGen%2CPPassContext%2CPNode"><span class="Identifier">processJSCodeGen</span></a><span class="Other">(</span><span class="Identifier">b</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="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">Exception</span><span class="Other">,</span>
<span class="Identifier">ValueError</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="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="Identifier">TimeEffect</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>
Generate JS code for a node.
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/jsgen.nim#L3177" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/jsgen.nim#L3177" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="setupJSgen-procs-all">
<div id="setupJSgen,ModuleGraph,PSym,IdGenerator">
<dt><pre><span class="Keyword">proc</span> <a href="#setupJSgen%2CModuleGraph%2CPSym%2CIdGenerator"><span class="Identifier">setupJSgen</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">s</span><span class="Other">:</span> <a href="astdef.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><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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/jsgen.nim#L3242" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/jsgen.nim#L3242" 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="config-templates-all">
<div id="config.t,PProc">
<dt><pre><span class="Keyword">template</span> <a href="#config.t%2CPProc"><span class="Identifier">config</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <span class="Identifier">PProc</span><span class="Other">)</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/jsgen.nim#L118" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/jsgen.nim#L118" 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: 2026-07-10 18:29:14 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

5
compiler/jsgen.idx Normal file
View File

@@ -0,0 +1,5 @@
nimTitle jsgen jsgen.html module jsgen 0
nim config jsgen.html#config.t,PProc template config(p: PProc): ConfigRef 118
nim processJSCodeGen jsgen.html#processJSCodeGen,PPassContext,PNode proc processJSCodeGen(b: PPassContext; n: PNode): PNode 3177
nim finalJSCodeGen jsgen.html#finalJSCodeGen,ModuleGraph,PPassContext,PNode proc finalJSCodeGen(graph: ModuleGraph; b: PPassContext; n: PNode): PNode 3207
nim setupJSgen jsgen.html#setupJSgen,ModuleGraph,PSym,IdGenerator proc setupJSgen(graph: ModuleGraph; s: PSym; idgen: IdGenerator): PPassContext 3242

442
compiler/lambdalifting.html Normal file
View File

@@ -0,0 +1,442 @@
<?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>lambdalifting</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">
<input type="checkbox" id="nav-toggle" hidden>
<label for="nav-toggle" id="nav-burger">&#9776;</label>
<label for="nav-toggle" id="nav-overlay"></label>
<div class="container">
<h1 class="title">lambdalifting</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="#10" id="60">Consts</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#envName" title="envName = &quot;:env&quot;">envName</a></li>
<li><a class="reference" href="#paramName" title="paramName = &quot;:envP&quot;">paramName</a></li>
<li><a class="reference" href="#upName" title="upName = &quot;:up&quot;">upName</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">addHiddenParam
<li><a class="reference" href="#addHiddenParam%2CPSym%2CPSym" title="addHiddenParam(routine: PSym; param: PSym)">addHiddenParam(routine: PSym; param: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">createClosureIterStateType
<li><a class="reference" href="#createClosureIterStateType%2CModuleGraph%2CPSym%2CIdGenerator" title="createClosureIterStateType(g: ModuleGraph; iter: PSym; idgen: IdGenerator): PType">createClosureIterStateType(g: ModuleGraph; iter: PSym; idgen: IdGenerator): PType</a></li>
</ul>
<ul class="simple nested-toc-section">getClosureIterResult
<li><a class="reference" href="#getClosureIterResult%2CModuleGraph%2CPSym%2CIdGenerator" title="getClosureIterResult(g: ModuleGraph; iter: PSym; idgen: IdGenerator): PSym">getClosureIterResult(g: ModuleGraph; iter: PSym; idgen: IdGenerator): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">getEnvParam
<li><a class="reference" href="#getEnvParam%2CPSym" title="getEnvParam(routine: PSym): PSym">getEnvParam(routine: PSym): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">getStateField
<li><a class="reference" href="#getStateField%2CModuleGraph%2CPSym" title="getStateField(g: ModuleGraph; owner: PSym): PSym">getStateField(g: ModuleGraph; owner: PSym): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">isInnerProc
<li><a class="reference" href="#isInnerProc%2CPSym" title="isInnerProc(s: PSym): bool">isInnerProc(s: PSym): bool</a></li>
</ul>
<ul class="simple nested-toc-section">liftForLoop
<li><a class="reference" href="#liftForLoop%2CModuleGraph%2CPNode%2CIdGenerator%2CPSym" title="liftForLoop(g: ModuleGraph; body: PNode; idgen: IdGenerator; owner: PSym): PNode">liftForLoop(g: ModuleGraph; body: PNode; idgen: IdGenerator; owner: PSym): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">liftIterSym
<li><a class="reference" href="#liftIterSym%2CModuleGraph%2CPNode%2CIdGenerator%2CPSym" title="liftIterSym(g: ModuleGraph; n: PNode; idgen: IdGenerator; owner: PSym): PNode">liftIterSym(g: ModuleGraph; n: PNode; idgen: IdGenerator; owner: PSym): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">liftIterToProc
<li><a class="reference" href="#liftIterToProc%2CModuleGraph%2CPSym%2CPNode%2CPType%2CIdGenerator" title="liftIterToProc(g: ModuleGraph; fn: PSym; body: PNode; ptrType: PType;
idgen: IdGenerator): PNode">liftIterToProc(g: ModuleGraph; fn: PSym; body: PNode; ptrType: PType;
idgen: IdGenerator): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">liftLambdas
<li><a class="reference" href="#liftLambdas%2CModuleGraph%2CPSym%2CPNode%2Cbool%2CIdGenerator%2CTransformFlags" title="liftLambdas(g: ModuleGraph; fn: PSym; body: PNode; tooEarly: var bool;
idgen: IdGenerator; flags: TransformFlags): PNode">liftLambdas(g: ModuleGraph; fn: PSym; body: PNode; tooEarly: var bool;
idgen: IdGenerator; flags: TransformFlags): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">liftLambdasForTopLevel
<li><a class="reference" href="#liftLambdasForTopLevel%2CPSym%2CPNode" title="liftLambdasForTopLevel(module: PSym; body: PNode): PNode">liftLambdasForTopLevel(module: PSym; body: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">makeClosure
<li><a class="reference" href="#makeClosure%2CModuleGraph%2CIdGenerator%2CPSym%2CPNode%2CTLineInfo" title="makeClosure(g: ModuleGraph; idgen: IdGenerator; prc: PSym; env: PNode;
info: TLineInfo): PNode">makeClosure(g: ModuleGraph; idgen: IdGenerator; prc: PSym; env: PNode;
info: TLineInfo): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">semCaptureSym
<li><a class="reference" href="#semCaptureSym%2CPSym%2CPSym" title="semCaptureSym(s, owner: PSym)">semCaptureSym(s, owner: PSym)</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">isIterator
<li><a class="reference" href="#isIterator.t%2CPSym" title="isIterator(owner: PSym): bool">isIterator(owner: PSym): bool</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/lambdalifting.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="options.html">options</a>, <a class="reference external" href="ast.html">ast</a>, <a class="reference external" href="astalgo.html">astalgo</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="renderer.html">renderer</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="magicsys.html">magicsys</a>, <a class="reference external" href="lowerings.html">lowerings</a>, <a class="reference external" href="modulegraphs.html">modulegraphs</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="transf.html">transf</a>, <a class="reference external" href="liftdestructors.html">liftdestructors</a>, <a class="reference external" href="typeallowed.html">typeallowed</a>
</dl>
</div>
<div class="section" id="10">
<h1><a class="toc-backref" href="#10">Consts</a></h1>
<dl class="item">
<div id="envName">
<dt><pre><a href="#envName"><span class="Identifier">envName</span></a> <span class="Other">=</span> <span class="StringLit">&quot;:env&quot;</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/lambdalifting.nim#L127" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L127" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="paramName">
<dt><pre><a href="#paramName"><span class="Identifier">paramName</span></a> <span class="Other">=</span> <span class="StringLit">&quot;:envP&quot;</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/lambdalifting.nim#L126" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L126" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="upName">
<dt><pre><a href="#upName"><span class="Identifier">upName</span></a> <span class="Other">=</span> <span class="StringLit">&quot;:up&quot;</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/lambdalifting.nim#L125" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L125" 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="addHiddenParam-procs-all">
<div id="addHiddenParam,PSym,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#addHiddenParam%2CPSym%2CPSym"><span class="Identifier">addHiddenParam</span></a><span class="Other">(</span><span class="Identifier">routine</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">param</span><span class="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/lambdalifting.nim#L179" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L179" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="createClosureIterStateType-procs-all">
<div id="createClosureIterStateType,ModuleGraph,PSym,IdGenerator">
<dt><pre><span class="Keyword">proc</span> <a href="#createClosureIterStateType%2CModuleGraph%2CPSym%2CIdGenerator"><span class="Identifier">createClosureIterStateType</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">iter</span><span class="Other">:</span> <a href="astdef.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="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/lambdalifting.nim#L134" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L134" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getClosureIterResult-procs-all">
<div id="getClosureIterResult,ModuleGraph,PSym,IdGenerator">
<dt><pre><span class="Keyword">proc</span> <a href="#getClosureIterResult%2CModuleGraph%2CPSym%2CIdGenerator"><span class="Identifier">getClosureIterResult</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">iter</span><span class="Other">:</span> <a href="astdef.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="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</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">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/lambdalifting.nim#L157" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L157" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getEnvParam-procs-all">
<div id="getEnvParam,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#getEnvParam%2CPSym"><span class="Identifier">getEnvParam</span></a><span class="Other">(</span><span class="Identifier">routine</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span>
<span class="Identifier">ValueError</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">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/lambdalifting.nim#L190" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L190" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="getStateField-procs-all">
<div id="getStateField,ModuleGraph,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#getStateField%2CModuleGraph%2CPSym"><span class="Identifier">getStateField</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">owner</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/lambdalifting.nim#L758" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L758" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isInnerProc-procs-all">
<div id="isInnerProc,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#isInnerProc%2CPSym"><span class="Identifier">isInnerProc</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="astdef.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="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span>
<span class="Identifier">ValueError</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">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/lambdalifting.nim#L216" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L216" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="liftForLoop-procs-all">
<div id="liftForLoop,ModuleGraph,PNode,IdGenerator,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#liftForLoop%2CModuleGraph%2CPNode%2CIdGenerator%2CPSym"><span class="Identifier">liftForLoop</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">body</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">owner</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/lambdalifting.nim#L964" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L964" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="liftIterSym-procs-all">
<div id="liftIterSym,ModuleGraph,PNode,IdGenerator,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#liftIterSym%2CModuleGraph%2CPNode%2CIdGenerator%2CPSym"><span class="Identifier">liftIterSym</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">n</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">owner</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/lambdalifting.nim#L269" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L269" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="liftIterToProc-procs-all">
<div id="liftIterToProc,ModuleGraph,PSym,PNode,PType,IdGenerator">
<dt><pre><span class="Keyword">proc</span> <a href="#liftIterToProc%2CModuleGraph%2CPSym%2CPNode%2CPType%2CIdGenerator"><span class="Identifier">liftIterToProc</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">fn</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">body</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">ptrType</span><span class="Other">:</span> <a href="astdef.html#PType"><span class="Identifier">PType</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="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/lambdalifting.nim#L910" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L910" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="liftLambdas-procs-all">
<div id="liftLambdas,ModuleGraph,PSym,PNode,bool,IdGenerator,TransformFlags">
<dt><pre><span class="Keyword">proc</span> <a href="#liftLambdas%2CModuleGraph%2CPSym%2CPNode%2Cbool%2CIdGenerator%2CTransformFlags"><span class="Identifier">liftLambdas</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">fn</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">body</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">tooEarly</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">bool</span><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">flags</span><span class="Other">:</span> <a href="transf.html#TransformFlags"><span class="Identifier">TransformFlags</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/lambdalifting.nim#L925" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L925" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="liftLambdasForTopLevel-procs-all">
<div id="liftLambdasForTopLevel,PSym,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#liftLambdasForTopLevel%2CPSym%2CPNode"><span class="Identifier">liftLambdasForTopLevel</span></a><span class="Other">(</span><span class="Identifier">module</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">body</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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/lambdalifting.nim#L958" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L958" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="makeClosure-procs-all">
<div id="makeClosure,ModuleGraph,IdGenerator,PSym,PNode,TLineInfo">
<dt><pre><span class="Keyword">proc</span> <a href="#makeClosure%2CModuleGraph%2CIdGenerator%2CPSym%2CPNode%2CTLineInfo"><span class="Identifier">makeClosure</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">prc</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">env</span><span class="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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="Other">:</span> <a href="astdef.html#PNode"><span class="Identifier">PNode</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">OSError</span><span class="Other">,</span>
<span class="Identifier">Exception</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">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="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>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/lambdalifting.nim#L236" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L236" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="semCaptureSym-procs-all">
<div id="semCaptureSym,PSym,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#semCaptureSym%2CPSym%2CPSym"><span class="Identifier">semCaptureSym</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">,</span> <span class="Identifier">owner</span><span class="Other">:</span> <a href="astdef.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">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span>
<span class="Identifier">ValueError</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">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/lambdalifting.nim#L873" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L873" 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="isIterator-templates-all">
<div id="isIterator.t,PSym">
<dt><pre><span class="Keyword">template</span> <a href="#isIterator.t%2CPSym"><span class="Identifier">isIterator</span></a><span class="Other">(</span><span class="Identifier">owner</span><span class="Other">:</span> <a href="astdef.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/lambdalifting.nim#L148" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/lambdalifting.nim#L148" 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: 2026-07-10 18:29:10 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More