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

1092 lines
115 KiB
HTML

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>sigmatch</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="nimdoc.out.css?v=2.3.1">
<!-- JS -->
<script type="text/javascript" src="dochack.js?v=2.3.1"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">sigmatch</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="#CandidateError" title="CandidateError = object
sym*: PSym
firstMismatch*: MismatchInfo
diagnostics*: seq[string]
enabled*: bool">CandidateError</a></li>
<li><a class="reference" href="#CandidateErrors" title="CandidateErrors = seq[CandidateError]">CandidateErrors</a></li>
<li><a class="reference" href="#MismatchInfo" title="MismatchInfo = object
kind*: MismatchKind
arg*: int
formal*: PSym">MismatchInfo</a></li>
<li><a class="reference" href="#MismatchKind" title="MismatchKind = enum
kUnknown, kAlreadyGiven, kUnknownNamedParam, kTypeMismatch, kVarNeeded,
kMissingParam, kExtraArg, kPositionalAlreadyGiven, kGenericParamTypeMismatch,
kMissingGenericParam, kExtraGenericParam">MismatchKind</a></li>
<li><a class="reference" href="#TCandidate" title="TCandidate = object
c*: PContext
exactMatches*: int
state*: TCandidateState
callee*: PType
calleeSym*: PSym
calleeScope*: int
call*: PNode
bindings*: LayeredIdTable
magic*: TMagic
matchedErrorType*: bool
genericConverter*: bool
coerceDistincts*: bool
typedescMatched*: bool
isNoCall*: bool
diagnostics*: seq[string]
firstMismatch*: MismatchInfo
diagnosticsEnabled*: bool
newlyTypedOperands*: seq[int] ## indexes of arguments that are newly typechecked in this match
## used for type bound op additions">TCandidate</a></li>
<li><a class="reference" href="#TCandidateState" title="TCandidateState = enum
csEmpty, csMatch, csNoMatch">TCandidateState</a></li>
<li><a class="reference" href="#TCheckPointResult" title="TCheckPointResult = enum
cpNone, cpFuzzy, cpExact">TCheckPointResult</a></li>
<li><a class="reference" href="#TTypeRelFlag" title="TTypeRelFlag = enum
trDontBind, trNoCovariance, trBindGenericParam, trIsOutParam, trCheckGeneric">TTypeRelFlag</a></li>
<li><a class="reference" href="#TTypeRelFlags" title="TTypeRelFlags = set[TTypeRelFlag]">TTypeRelFlags</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%2CSuggest" title="`$`(suggest: Suggest): string">`$`(suggest: Suggest): string</a></li>
<li><a class="reference" href="#%24%2CSuggestInlayHint" title="`$`(suggest: SuggestInlayHint): string">`$`(suggest: SuggestInlayHint): string</a></li>
</ul>
<ul class="simple nested-toc-section">argtypeMatches
<li><a class="reference" href="#argtypeMatches%2CPContext%2CPType%2CPType" title="argtypeMatches(c: PContext; f, a: PType; fromHlo = false): bool">argtypeMatches(c: PContext; f, a: PType; fromHlo = false): bool</a></li>
</ul>
<ul class="simple nested-toc-section">cmpCandidates
<li><a class="reference" href="#cmpCandidates%2CTCandidate%2CTCandidate" title="cmpCandidates(a, b: TCandidate; isFormal = true): int">cmpCandidates(a, b: TCandidate; isFormal = true): int</a></li>
</ul>
<ul class="simple nested-toc-section">cmpTypes
<li><a class="reference" href="#cmpTypes%2CPContext%2CPType%2CPType" title="cmpTypes(c: PContext; f, a: PType): TTypeRelation">cmpTypes(c: PContext; f, a: PType): TTypeRelation</a></li>
</ul>
<ul class="simple nested-toc-section">describeArg
<li><a class="reference" href="#describeArg%2CPContext%2CPNode%2Cint%2Cint" title="describeArg(c: PContext; n: PNode; i: int; startIdx = 1; prefer = preferName): string">describeArg(c: PContext; n: PNode; i: int; startIdx = 1; prefer = preferName): string</a></li>
</ul>
<ul class="simple nested-toc-section">describeArgs
<li><a class="reference" href="#describeArgs%2CPContext%2CPNode%2Cint" title="describeArgs(c: PContext; n: PNode; startIdx = 1; prefer = preferName): string">describeArgs(c: PContext; n: PNode; startIdx = 1; prefer = preferName): string</a></li>
</ul>
<ul class="simple nested-toc-section">fieldVisible
<li><a class="reference" href="#fieldVisible%2CPContext%2CPSym" title="fieldVisible(c: PContext; f: PSym): bool">fieldVisible(c: PContext; f: PSym): bool</a></li>
</ul>
<ul class="simple nested-toc-section">inCheckpoint
<li><a class="reference" href="#inCheckpoint%2CTLineInfo%2CTLineInfo" title="inCheckpoint(current, trackPos: TLineInfo): TCheckPointResult">inCheckpoint(current, trackPos: TLineInfo): TCheckPointResult</a></li>
</ul>
<ul class="simple nested-toc-section">inferStaticParam
<li><a class="reference" href="#inferStaticParam%2CTCandidate%2CPNode%2CBiggestInt" title="inferStaticParam(c: var TCandidate; lhs: PNode; rhs: BiggestInt): bool">inferStaticParam(c: var TCandidate; lhs: PNode; rhs: BiggestInt): bool</a></li>
</ul>
<ul class="simple nested-toc-section">initCandidate
<li><a class="reference" href="#initCandidate%2CPContext%2CPSym%2CPNode%2Cint" title="initCandidate(ctx: PContext; callee: PSym; binding: PNode; calleeScope = -1;
diagnosticsEnabled = false): TCandidate">initCandidate(ctx: PContext; callee: PSym; binding: PNode; calleeScope = -1;
diagnosticsEnabled = false): TCandidate</a></li>
<li><a class="reference" href="#initCandidate%2CPContext%2CPType" title="initCandidate(ctx: PContext; callee: PType): TCandidate">initCandidate(ctx: PContext; callee: PType): TCandidate</a></li>
</ul>
<ul class="simple nested-toc-section">instTypeBoundOp
<li><a class="reference" href="#instTypeBoundOp%2CPContext%2CPSym%2CPType%2CTLineInfo%2CTTypeAttachedOp%2Cint" title="instTypeBoundOp(c: PContext; dc: PSym; t: PType; info: TLineInfo;
op: TTypeAttachedOp; col: int): PSym">instTypeBoundOp(c: PContext; dc: PSym; t: PType; info: TLineInfo;
op: TTypeAttachedOp; col: int): PSym</a></li>
</ul>
<ul class="simple nested-toc-section">isTracked
<li><a class="reference" href="#isTracked%2CTinyLineInfo%2CTinyLineInfo%2Cint" title="isTracked(current, trackPos: TinyLineInfo; tokenLen: int): bool">isTracked(current, trackPos: TinyLineInfo; tokenLen: int): bool</a></li>
<li><a class="reference" href="#isTracked%2CTLineInfo%2CTLineInfo%2Cint" title="isTracked(current, trackPos: TLineInfo; tokenLen: int): bool">isTracked(current, trackPos: TLineInfo; tokenLen: int): bool</a></li>
</ul>
<ul class="simple nested-toc-section">markOwnerModuleAsUsed
<li><a class="reference" href="#markOwnerModuleAsUsed%2CPContext%2CPSym" title="markOwnerModuleAsUsed(c: PContext; s: PSym)">markOwnerModuleAsUsed(c: PContext; s: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">markUsed
<li><a class="reference" href="#markUsed%2CPContext%2CTLineInfo%2CPSym" title="markUsed(c: PContext; info: TLineInfo; s: PSym; checkStyle = true;
isGenericInstance = false)">markUsed(c: PContext; info: TLineInfo; s: PSym; checkStyle = true;
isGenericInstance = false)</a></li>
</ul>
<ul class="simple nested-toc-section">matches
<li><a class="reference" href="#matches%2CPContext%2CPNode%2CPNode%2CTCandidate" title="matches(c: PContext; n, nOrig: PNode; m: var TCandidate)">matches(c: PContext; n, nOrig: PNode; m: var TCandidate)</a></li>
</ul>
<ul class="simple nested-toc-section">matchGenericParams
<li><a class="reference" href="#matchGenericParams%2CTCandidate%2CPNode%2CPSym" title="matchGenericParams(m: var TCandidate; binding: PNode; callee: PSym)">matchGenericParams(m: var TCandidate; binding: PNode; callee: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">matchUserTypeClass
<li><a class="reference" href="#matchUserTypeClass%2CTCandidate%2CPType%2CPType" title="matchUserTypeClass(m: var TCandidate; ff, a: PType): PType">matchUserTypeClass(m: var TCandidate; ff, a: PType): PType</a></li>
</ul>
<ul class="simple nested-toc-section">newCandidate
<li><a class="reference" href="#newCandidate%2CPContext%2CPSym%2CPNode%2Cint" title="newCandidate(ctx: PContext; callee: PSym; binding: PNode; calleeScope = -1): TCandidate">newCandidate(ctx: PContext; callee: PSym; binding: PNode; calleeScope = -1): TCandidate</a></li>
<li><a class="reference" href="#newCandidate%2CPContext%2CPType" title="newCandidate(ctx: PContext; callee: PType): TCandidate">newCandidate(ctx: PContext; callee: PType): TCandidate</a></li>
</ul>
<ul class="simple nested-toc-section">paramTypesMatch
<li><a class="reference" href="#paramTypesMatch%2CTCandidate%2CPType%2CPType%2CPNode%2CPNode" title="paramTypesMatch(m: var TCandidate; f, a: PType; arg, argOrig: PNode): PNode">paramTypesMatch(m: var TCandidate; f, a: PType; arg, argOrig: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">partialMatch
<li><a class="reference" href="#partialMatch%2CPContext%2CPNode%2CPNode%2CTCandidate" title="partialMatch(c: PContext; n, nOrig: PNode; m: var TCandidate)">partialMatch(c: PContext; n, nOrig: PNode; m: var TCandidate)</a></li>
</ul>
<ul class="simple nested-toc-section">safeSemExpr
<li><a class="reference" href="#safeSemExpr%2CPContext%2CPNode" title="safeSemExpr(c: PContext; n: PNode): PNode">safeSemExpr(c: PContext; n: PNode): PNode</a></li>
</ul>
<ul class="simple nested-toc-section">suggestDecl
<li><a class="reference" href="#suggestDecl%2CPContext%2CPNode%2CPSym" title="suggestDecl(c: PContext; n: PNode; s: PSym)">suggestDecl(c: PContext; n: PNode; s: PSym)</a></li>
</ul>
<ul class="simple nested-toc-section">suggestEnum
<li><a class="reference" href="#suggestEnum%2CPContext%2CPNode%2CPType" title="suggestEnum(c: PContext; n: PNode; t: PType)">suggestEnum(c: PContext; n: PNode; t: PType)</a></li>
</ul>
<ul class="simple nested-toc-section">suggestExpr
<li><a class="reference" href="#suggestExpr%2CPContext%2CPNode" title="suggestExpr(c: PContext; n: PNode)">suggestExpr(c: PContext; n: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">suggestExprNoCheck
<li><a class="reference" href="#suggestExprNoCheck%2CPContext%2CPNode" title="suggestExprNoCheck(c: PContext; n: PNode)">suggestExprNoCheck(c: PContext; n: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">suggestPragmas
<li><a class="reference" href="#suggestPragmas%2CPContext%2CPNode" title="suggestPragmas(c: PContext; n: PNode)">suggestPragmas(c: PContext; n: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">suggestResult
<li><a class="reference" href="#suggestResult%2CConfigRef%2CSuggest" title="suggestResult(conf: ConfigRef; s: Suggest)">suggestResult(conf: ConfigRef; s: Suggest)</a></li>
</ul>
<ul class="simple nested-toc-section">suggestSentinel
<li><a class="reference" href="#suggestSentinel%2CPContext" title="suggestSentinel(c: PContext)">suggestSentinel(c: PContext)</a></li>
</ul>
<ul class="simple nested-toc-section">suggestStmt
<li><a class="reference" href="#suggestStmt%2CPContext%2CPNode" title="suggestStmt(c: PContext; n: PNode)">suggestStmt(c: PContext; n: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">suggestSym
<li><a class="reference" href="#suggestSym%2CModuleGraph%2CTLineInfo%2CPSym%2CPSym" title="suggestSym(g: ModuleGraph; info: TLineInfo; s: PSym; usageSym: var PSym;
isDecl = true; isGenericInstance = false)">suggestSym(g: ModuleGraph; info: TLineInfo; s: PSym; usageSym: var PSym;
isDecl = true; isGenericInstance = false)</a></li>
</ul>
<ul class="simple nested-toc-section">suggestToSuggestInlayExceptionHintLeft
<li><a class="reference" href="#suggestToSuggestInlayExceptionHintLeft%2CSuggest%2Cseq%5BPType%5D" title="suggestToSuggestInlayExceptionHintLeft(sug: Suggest;
propagatedExceptions: seq[PType]): SuggestInlayHint">suggestToSuggestInlayExceptionHintLeft(sug: Suggest;
propagatedExceptions: seq[PType]): SuggestInlayHint</a></li>
</ul>
<ul class="simple nested-toc-section">suggestToSuggestInlayExceptionHintRight
<li><a class="reference" href="#suggestToSuggestInlayExceptionHintRight%2CSuggest%2Cseq%5BPType%5D" title="suggestToSuggestInlayExceptionHintRight(sug: Suggest;
propagatedExceptions: seq[PType]): SuggestInlayHint">suggestToSuggestInlayExceptionHintRight(sug: Suggest;
propagatedExceptions: seq[PType]): SuggestInlayHint</a></li>
</ul>
<ul class="simple nested-toc-section">suggestToSuggestInlayTypeHint
<li><a class="reference" href="#suggestToSuggestInlayTypeHint%2CSuggest" title="suggestToSuggestInlayTypeHint(sug: Suggest): SuggestInlayHint">suggestToSuggestInlayTypeHint(sug: Suggest): SuggestInlayHint</a></li>
</ul>
<ul class="simple nested-toc-section">symToSuggest
<li><a class="reference" href="#symToSuggest%2CModuleGraph%2CPSym%2Cbool%2CIdeCmd%2CTLineInfo%2Crange%5B%5D%2CPrefixMatch%2Cbool%2Cint%2Cuint16%2Cint" title="symToSuggest(g: ModuleGraph; s: PSym; isLocal: bool; section: IdeCmd;
info: TLineInfo; quality: range[0 .. 100]; prefix: PrefixMatch;
inTypeContext: bool; scope: int; useSuppliedInfo = false;
endLine: uint16 = 0; endCol = 0; extractDocs = true): Suggest">symToSuggest(g: ModuleGraph; s: PSym; isLocal: bool; section: IdeCmd;
info: TLineInfo; quality: range[0 .. 100]; prefix: PrefixMatch;
inTypeContext: bool; scope: int; useSuppliedInfo = false;
endLine: uint16 = 0; endCol = 0; extractDocs = true): Suggest</a></li>
</ul>
<ul class="simple nested-toc-section">typeRel
<li><a class="reference" href="#typeRel%2CTCandidate%2CPType%2CPType%2CTTypeRelFlags" title="typeRel(c: var TCandidate; f, aOrig: PType; flags: TTypeRelFlags = {}): TTypeRelation">typeRel(c: var TCandidate; f, aOrig: PType; flags: TTypeRelFlags = {}): TTypeRelation</a></li>
</ul>
<ul class="simple nested-toc-section">writeMatches
<li><a class="reference" href="#writeMatches%2CTCandidate" title="writeMatches(c: TCandidate)">writeMatches(c: TCandidate)</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">trySuggestModuleNames
<li><a class="reference" href="#trySuggestModuleNames.t%2CPContext%2CPNode" title="trySuggestModuleNames(c: PContext; n: PNode)">trySuggestModuleNames(c: PContext; n: PNode)</a></li>
</ul>
<ul class="simple nested-toc-section">trySuggestPragmas
<li><a class="reference" href="#trySuggestPragmas.t%2CPContext%2CPNode" title="trySuggestPragmas(c: PContext; n: PNode)">trySuggestPragmas(c: PContext; n: 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/sigmatch.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc">This module implements the signature matching for resolving the call to overloaded procs, generic procs and operators.<p>This file implements features required for IDE support.</p>
<p>Due to Nim's nature and the fact that <tt class="docutils literal"><span class="pre">system.nim</span></tt> is always imported, there are lots of potential symbols. Furthermore thanks to templates and macros even context based analysis does not help much: In a context like <tt class="docutils literal"><span class="pre">let x: |</span></tt> where a type has to follow, that type might be constructed from a template like <tt class="docutils literal"><span class="pre">extractField(MyObject, fieldName)</span></tt>. We deal with this problem by smart sorting so that the likely symbols come first. This sorting is done this way:</p>
<ul class="simple"><li>If there is a prefix (foo|), symbols starting with this prefix come first.</li>
<li>If the prefix is part of the name (but the name doesn't start with it), these symbols come second.</li>
<li>If we have a prefix, only symbols matching this prefix are returned and nothing else.</li>
<li>If we have no prefix, consider the context. We currently distinguish between type and non-type contexts.</li>
<li>Finally, sort matches by relevance. The relevance is determined by the number of usages, so <tt class="docutils literal"><span class="pre">strutils.replace</span></tt> comes before <tt class="docutils literal"><span class="pre">strutils.wordWrap</span></tt>.</li>
<li>In any case, sorting also considers scoping information. Local variables get high priority.</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="ast.html">ast</a>, <a class="reference external" href="astalgo.html">astalgo</a>, <a class="reference external" href="semdata.html">semdata</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="msgs.html">msgs</a>, <a class="reference external" href="renderer.html">renderer</a>, <a class="reference external" href="lookups.html">lookups</a>, <a class="reference external" href="semtypinst.html">semtypinst</a>, <a class="reference external" href="magicsys.html">magicsys</a>, <a class="reference external" href="idents.html">idents</a>, <a class="reference external" href="lexer.html">lexer</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="parampatterns.html">parampatterns</a>, <a class="reference external" href="trees.html">trees</a>, <a class="reference external" href="linter.html">linter</a>, <a class="reference external" href="lineinfos.html">lineinfos</a>, <a class="reference external" href="lowerings.html">lowerings</a>, <a class="reference external" href="modulegraphs.html">modulegraphs</a>, <a class="reference external" href="concepts.html">concepts</a>, <a class="reference external" href="layeredtable.html">layeredtable</a>, <a class="reference external" href="prefixmatches.html">prefixmatches</a>, <a class="reference external" href="suggestsymdb.html">suggestsymdb</a>, <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="CandidateError">
<dt><pre><a href="sigmatch.html#CandidateError"><span class="Identifier">CandidateError</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">sym</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a>
<span class="Identifier">firstMismatch</span><span class="Operator">*</span><span class="Other">:</span> <a href="sigmatch.html#MismatchInfo"><span class="Identifier">MismatchInfo</span></a>
<span class="Identifier">diagnostics</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="Identifier">enabled</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/sigmatch.nim#L39" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L39" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="CandidateErrors">
<dt><pre><a href="sigmatch.html#CandidateErrors"><span class="Identifier">CandidateErrors</span></a> <span class="Other">=</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="sigmatch.html#CandidateError"><span class="Identifier">CandidateError</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L45" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L45" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="MismatchInfo">
<dt><pre><a href="sigmatch.html#MismatchInfo"><span class="Identifier">MismatchInfo</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="sigmatch.html#MismatchKind"><span class="Identifier">MismatchKind</span></a>
<span class="Identifier">arg</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span>
<span class="Identifier">formal</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L30" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L30" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="MismatchKind">
<dt><pre><a href="sigmatch.html#MismatchKind"><span class="Identifier">MismatchKind</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">kUnknown</span><span class="Other">,</span> <span class="Identifier">kAlreadyGiven</span><span class="Other">,</span> <span class="Identifier">kUnknownNamedParam</span><span class="Other">,</span> <span class="Identifier">kTypeMismatch</span><span class="Other">,</span> <span class="Identifier">kVarNeeded</span><span class="Other">,</span>
<span class="Identifier">kMissingParam</span><span class="Other">,</span> <span class="Identifier">kExtraArg</span><span class="Other">,</span> <span class="Identifier">kPositionalAlreadyGiven</span><span class="Other">,</span> <span class="Identifier">kGenericParamTypeMismatch</span><span class="Other">,</span>
<span class="Identifier">kMissingGenericParam</span><span class="Other">,</span> <span class="Identifier">kExtraGenericParam</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L25" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L25" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TCandidate">
<dt><pre><a href="sigmatch.html#TCandidate"><span class="Identifier">TCandidate</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">c</span><span class="Operator">*</span><span class="Other">:</span> <a href="semdata.html#PContext"><span class="Identifier">PContext</span></a>
<span class="Identifier">exactMatches</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span>
<span class="Identifier">state</span><span class="Operator">*</span><span class="Other">:</span> <a href="sigmatch.html#TCandidateState"><span class="Identifier">TCandidateState</span></a>
<span class="Identifier">callee</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a>
<span class="Identifier">calleeSym</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a>
<span class="Identifier">calleeScope</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span>
<span class="Identifier">call</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a>
<span class="Identifier">bindings</span><span class="Operator">*</span><span class="Other">:</span> <a href="layeredtable.html#LayeredIdTable"><span class="Identifier">LayeredIdTable</span></a>
<span class="Identifier">magic</span><span class="Operator">*</span><span class="Other">:</span> <a href="ast.html#TMagic"><span class="Identifier">TMagic</span></a>
<span class="Identifier">matchedErrorType</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">genericConverter</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">coerceDistincts</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">typedescMatched</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">isNoCall</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">diagnostics</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="Identifier">firstMismatch</span><span class="Operator">*</span><span class="Other">:</span> <a href="sigmatch.html#MismatchInfo"><span class="Identifier">MismatchInfo</span></a>
<span class="Identifier">diagnosticsEnabled</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">newlyTypedOperands</span><span class="Operator">*</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="Comment">## indexes of arguments that are newly typechecked in this match</span>
<span class="Comment">## used for type bound op additions</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L47" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L47" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TCandidateState">
<dt><pre><a href="sigmatch.html#TCandidateState"><span class="Identifier">TCandidateState</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">csEmpty</span><span class="Other">,</span> <span class="Identifier">csMatch</span><span class="Other">,</span> <span class="Identifier">csNoMatch</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L36" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L36" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TCheckPointResult">
<dt><pre><a href="sigmatch.html#TCheckPointResult"><span class="Identifier">TCheckPointResult</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">cpNone</span><span class="Other">,</span> <span class="Identifier">cpFuzzy</span><span class="Other">,</span> <span class="Identifier">cpExact</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/suggest.nim#L547" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L547" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TTypeRelFlag">
<dt><pre><a href="sigmatch.html#TTypeRelFlag"><span class="Identifier">TTypeRelFlag</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">trDontBind</span><span class="Other">,</span> <span class="Identifier">trNoCovariance</span><span class="Other">,</span> <span class="Identifier">trBindGenericParam</span><span class="Other">,</span> <span class="Identifier">trIsOutParam</span><span class="Other">,</span> <span class="Identifier">trCheckGeneric</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L93" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L93" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TTypeRelFlags">
<dt><pre><a href="sigmatch.html#TTypeRelFlags"><span class="Identifier">TTypeRelFlags</span></a> <span class="Other">=</span> <span class="Identifier">set</span><span class="Other">[</span><a href="sigmatch.html#TTypeRelFlag"><span class="Identifier">TTypeRelFlag</span></a><span class="Other">]</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L100" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L100" 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="$,Suggest">
<dt><pre><span class="Keyword">proc</span> <a href="#%24%2CSuggest"><span class="Identifier">`$`</span></a><span class="Other">(</span><span class="Identifier">suggest</span><span class="Other">:</span> <a href="options.html#Suggest"><span class="Identifier">Suggest</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">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/suggest.nim#L230" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L230" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="$,SuggestInlayHint">
<dt><pre><span class="Keyword">proc</span> <a href="#%24%2CSuggestInlayHint"><span class="Identifier">`$`</span></a><span class="Other">(</span><span class="Identifier">suggest</span><span class="Other">:</span> <a href="options.html#SuggestInlayHint"><span class="Identifier">SuggestInlayHint</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/suggest.nim#L213" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L213" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="argtypeMatches-procs-all">
<div id="argtypeMatches,PContext,PType,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#argtypeMatches%2CPContext%2CPType%2CPType"><span class="Identifier">argtypeMatches</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">f</span><span class="Other">,</span> <span class="Identifier">a</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</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> <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">ValueError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">ReadEnvEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L3101" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L3101" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="cmpCandidates-procs-all">
<div id="cmpCandidates,TCandidate,TCandidate">
<dt><pre><span class="Keyword">proc</span> <a href="#cmpCandidates%2CTCandidate%2CTCandidate"><span class="Identifier">cmpCandidates</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="sigmatch.html#TCandidate"><span class="Identifier">TCandidate</span></a><span class="Other">;</span> <span class="Identifier">isFormal</span> <span class="Other">=</span> <span class="Identifier">true</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="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L414" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L414" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="cmpTypes-procs-all">
<div id="cmpTypes,PContext,PType,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#cmpTypes%2CPContext%2CPType%2CPType"><span class="Identifier">cmpTypes</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">f</span><span class="Other">,</span> <span class="Identifier">a</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">)</span><span class="Other">:</span> <a href="types.html#TTypeRelation"><span class="Identifier">TTypeRelation</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">ReadEnvEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L2165" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L2165" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="describeArg-procs-all">
<div id="describeArg,PContext,PNode,int,int">
<dt><pre><span class="Keyword">proc</span> <a href="#describeArg%2CPContext%2CPNode%2Cint%2Cint"><span class="Identifier">describeArg</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="ast.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 class="Identifier">startIdx</span> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">;</span>
<span class="Identifier">prefer</span> <span class="Other">=</span> <span class="Identifier">preferName</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">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">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/sigmatch.nim#L478" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L478" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="describeArgs-procs-all">
<div id="describeArgs,PContext,PNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#describeArgs%2CPContext%2CPNode%2Cint"><span class="Identifier">describeArgs</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="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">startIdx</span> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">;</span> <span class="Identifier">prefer</span> <span class="Other">=</span> <span class="Identifier">preferName</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">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">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/sigmatch.nim#L482" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L482" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="fieldVisible-procs-all">
<div id="fieldVisible,PContext,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#fieldVisible%2CPContext%2CPSym"><span class="Identifier">fieldVisible</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">f</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/suggest.nim#L358" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L358" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="inCheckpoint-procs-all">
<div id="inCheckpoint,TLineInfo,TLineInfo">
<dt><pre><span class="Keyword">proc</span> <a href="#inCheckpoint%2CTLineInfo%2CTLineInfo"><span class="Identifier">inCheckpoint</span></a><span class="Other">(</span><span class="Identifier">current</span><span class="Other">,</span> <span class="Identifier">trackPos</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="sigmatch.html#TCheckPointResult"><span class="Identifier">TCheckPointResult</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/suggest.nim#L550" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L550" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="inferStaticParam-procs-all">
<div id="inferStaticParam,TCandidate,PNode,BiggestInt">
<dt><pre><span class="Keyword">proc</span> <a href="#inferStaticParam%2CTCandidate%2CPNode%2CBiggestInt"><span class="Identifier">inferStaticParam</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="sigmatch.html#TCandidate"><span class="Identifier">TCandidate</span></a><span class="Other">;</span> <span class="Identifier">lhs</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">rhs</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/sigmatch.nim#L996" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L996" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="initCandidate-procs-all">
<div id="initCandidate,PContext,PSym,PNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#initCandidate%2CPContext%2CPSym%2CPNode%2Cint"><span class="Identifier">initCandidate</span></a><span class="Other">(</span><span class="Identifier">ctx</span><span class="Other">:</span> <a href="semdata.html#PContext"><span class="Identifier">PContext</span></a><span class="Other">;</span> <span class="Identifier">callee</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">binding</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span>
<span class="Identifier">calleeScope</span> <span class="Other">=</span> <span class="DecNumber">-1</span><span class="Other">;</span> <span class="Identifier">diagnosticsEnabled</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">)</span><span class="Other">:</span> <a href="sigmatch.html#TCandidate"><span class="Identifier">TCandidate</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="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L245" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L245" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="initCandidate,PContext,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#initCandidate%2CPContext%2CPType"><span class="Identifier">initCandidate</span></a><span class="Other">(</span><span class="Identifier">ctx</span><span class="Other">:</span> <a href="semdata.html#PContext"><span class="Identifier">PContext</span></a><span class="Other">;</span> <span class="Identifier">callee</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">)</span><span class="Other">:</span> <a href="sigmatch.html#TCandidate"><span class="Identifier">TCandidate</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/sigmatch.nim#L119" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L119" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="instTypeBoundOp-procs-all">
<div id="instTypeBoundOp,PContext,PSym,PType,TLineInfo,TTypeAttachedOp,int">
<dt><pre><span class="Keyword">proc</span> <a href="#instTypeBoundOp%2CPContext%2CPSym%2CPType%2CTLineInfo%2CTTypeAttachedOp%2Cint"><span class="Identifier">instTypeBoundOp</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">dc</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">;</span> <span class="Identifier">info</span><span class="Other">:</span> <a href="lineinfos.html#TLineInfo"><span class="Identifier">TLineInfo</span></a><span class="Other">;</span>
<span class="Identifier">op</span><span class="Other">:</span> <a href="ast.html#TTypeAttachedOp"><span class="Identifier">TTypeAttachedOp</span></a><span class="Other">;</span> <span class="Identifier">col</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">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="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L3114" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L3114" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isTracked-procs-all">
<div id="isTracked,TinyLineInfo,TinyLineInfo,int">
<dt><pre><span class="Keyword">proc</span> <a href="#isTracked%2CTinyLineInfo%2CTinyLineInfo%2Cint"><span class="Identifier">isTracked</span></a><span class="Other">(</span><span class="Identifier">current</span><span class="Other">,</span> <span class="Identifier">trackPos</span><span class="Other">:</span> <a href="suggestsymdb.html#TinyLineInfo"><span class="Identifier">TinyLineInfo</span></a><span class="Other">;</span> <span class="Identifier">tokenLen</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="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/suggest.nim#L571" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L571" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="isTracked,TLineInfo,TLineInfo,int">
<dt><pre><span class="Keyword">proc</span> <a href="#isTracked%2CTLineInfo%2CTLineInfo%2Cint"><span class="Identifier">isTracked</span></a><span class="Other">(</span><span class="Identifier">current</span><span class="Other">,</span> <span class="Identifier">trackPos</span><span class="Other">:</span> <a href="lineinfos.html#TLineInfo"><span class="Identifier">TLineInfo</span></a><span class="Other">;</span> <span class="Identifier">tokenLen</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="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/suggest.nim#L561" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L561" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="markOwnerModuleAsUsed-procs-all">
<div id="markOwnerModuleAsUsed,PContext,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#markOwnerModuleAsUsed%2CPContext%2CPSym"><span class="Identifier">markOwnerModuleAsUsed</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="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L108" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L108" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="markUsed-procs-all">
<div id="markUsed,PContext,TLineInfo,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#markUsed%2CPContext%2CTLineInfo%2CPSym"><span class="Identifier">markUsed</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">info</span><span class="Other">:</span> <a href="lineinfos.html#TLineInfo"><span class="Identifier">TLineInfo</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">checkStyle</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">;</span>
<span class="Identifier">isGenericInstance</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">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="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L107" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L107" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="matches-procs-all">
<div id="matches,PContext,PNode,PNode,TCandidate">
<dt><pre><span class="Keyword">proc</span> <a href="#matches%2CPContext%2CPNode%2CPNode%2CTCandidate"><span class="Identifier">matches</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> <span class="Identifier">nOrig</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="sigmatch.html#TCandidate"><span class="Identifier">TCandidate</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="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">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/sigmatch.nim#L3038" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L3038" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="matchGenericParams-procs-all">
<div id="matchGenericParams,TCandidate,PNode,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#matchGenericParams%2CTCandidate%2CPNode%2CPSym"><span class="Identifier">matchGenericParams</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="sigmatch.html#TCandidate"><span class="Identifier">TCandidate</span></a><span class="Other">;</span> <span class="Identifier">binding</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">callee</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
matches explicit generic instantiation <tt class="docutils literal"><span class="pre"><span class="Identifier">binding</span></span></tt> against generic params of proc symbol <tt class="docutils literal"><span class="pre"><span class="Identifier">callee</span></span></tt> state is set to <tt class="docutils literal"><span class="pre"><span class="Identifier">csMatch</span></span></tt> if all generic params match, <tt class="docutils literal"><span class="pre"><span class="Identifier">csEmpty</span></span></tt> if implicit generic parameters are missing (matches but cannot instantiate), <tt class="docutils literal"><span class="pre"><span class="Identifier">csNoMatch</span></span></tt> if a constraint fails or param count doesn't match
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L173" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L173" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="matchUserTypeClass-procs-all">
<div id="matchUserTypeClass,TCandidate,PType,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#matchUserTypeClass%2CTCandidate%2CPType%2CPType"><span class="Identifier">matchUserTypeClass</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="sigmatch.html#TCandidate"><span class="Identifier">TCandidate</span></a><span class="Other">;</span> <span class="Identifier">ff</span><span class="Other">,</span> <span class="Identifier">a</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#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">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="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L847" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L847" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="newCandidate-procs-all">
<div id="newCandidate,PContext,PSym,PNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#newCandidate%2CPContext%2CPSym%2CPNode%2Cint"><span class="Identifier">newCandidate</span></a><span class="Other">(</span><span class="Identifier">ctx</span><span class="Other">:</span> <a href="semdata.html#PContext"><span class="Identifier">PContext</span></a><span class="Other">;</span> <span class="Identifier">callee</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">binding</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">calleeScope</span> <span class="Other">=</span> <span class="DecNumber">-1</span><span class="Other">)</span><span class="Other">:</span> <a href="sigmatch.html#TCandidate"><span class="Identifier">TCandidate</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="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L274" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L274" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="newCandidate,PContext,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#newCandidate%2CPContext%2CPType"><span class="Identifier">newCandidate</span></a><span class="Other">(</span><span class="Identifier">ctx</span><span class="Other">:</span> <a href="semdata.html#PContext"><span class="Identifier">PContext</span></a><span class="Other">;</span> <span class="Identifier">callee</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">)</span><span class="Other">:</span> <a href="sigmatch.html#TCandidate"><span class="Identifier">TCandidate</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/sigmatch.nim#L278" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L278" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="paramTypesMatch-procs-all">
<div id="paramTypesMatch,TCandidate,PType,PType,PNode,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#paramTypesMatch%2CTCandidate%2CPType%2CPType%2CPNode%2CPNode"><span class="Identifier">paramTypesMatch</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="sigmatch.html#TCandidate"><span class="Identifier">TCandidate</span></a><span class="Other">;</span> <span class="Identifier">f</span><span class="Other">,</span> <span class="Identifier">a</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">;</span> <span class="Identifier">arg</span><span class="Other">,</span> <span class="Identifier">argOrig</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">ReadEnvEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L2638" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L2638" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="partialMatch-procs-all">
<div id="partialMatch,PContext,PNode,PNode,TCandidate">
<dt><pre><span class="Keyword">proc</span> <a href="#partialMatch%2CPContext%2CPNode%2CPNode%2CTCandidate"><span class="Identifier">partialMatch</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> <span class="Identifier">nOrig</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="sigmatch.html#TCandidate"><span class="Identifier">TCandidate</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="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">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/sigmatch.nim#L3033" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L3033" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="safeSemExpr-procs-all">
<div id="safeSemExpr,PContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#safeSemExpr%2CPContext%2CPNode"><span class="Identifier">safeSemExpr</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="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="ast.html#PNode"><span class="Identifier">PNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/suggest.nim#L730" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L730" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="suggestDecl-procs-all">
<div id="suggestDecl,PContext,PNode,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#suggestDecl%2CPContext%2CPNode%2CPSym"><span class="Identifier">suggestDecl</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="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ESuggestDone</span><span class="Other">,</span>
<span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">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="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/suggest.nim#L908" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L908" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="suggestEnum-procs-all">
<div id="suggestEnum,PContext,PNode,PType">
<dt><pre><span class="Keyword">proc</span> <a href="#suggestEnum%2CPContext%2CPNode%2CPType"><span class="Identifier">suggestEnum</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="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">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">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/suggest.nim#L921" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L921" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="suggestExpr-procs-all">
<div id="suggestExpr,PContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#suggestExpr%2CPContext%2CPNode"><span class="Identifier">suggestExpr</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="ast.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">KeyError</span><span class="Other">,</span>
<span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span> <span class="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">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">WriteIOEffect</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/suggest.nim#L905" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L905" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="suggestExprNoCheck-procs-all">
<div id="suggestExprNoCheck,PContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#suggestExprNoCheck%2CPContext%2CPNode"><span class="Identifier">suggestExprNoCheck</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="ast.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">KeyError</span><span class="Other">,</span>
<span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span> <span class="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">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">WriteIOEffect</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/suggest.nim#L876" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L876" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="suggestPragmas-procs-all">
<div id="suggestPragmas,PContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#suggestPragmas%2CPContext%2CPNode"><span class="Identifier">suggestPragmas</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="ast.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">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">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">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>
Suggests anything that might be a pragma<ul class="simple"><li>template that has {.pragma.}</li>
<li>macros</li>
<li>user pragmas</li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/suggest.nim#L927" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L927" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="suggestResult-procs-all">
<div id="suggestResult,ConfigRef,Suggest">
<dt><pre><span class="Keyword">proc</span> <a href="#suggestResult%2CConfigRef%2CSuggest"><span class="Identifier">suggestResult</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="options.html#Suggest"><span class="Identifier">Suggest</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="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/suggest.nim#L314" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L314" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="suggestSentinel-procs-all">
<div id="suggestSentinel,PContext">
<dt><pre><span class="Keyword">proc</span> <a href="#suggestSentinel%2CPContext"><span class="Identifier">suggestSentinel</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><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">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">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/suggest.nim#L959" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L959" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="suggestStmt-procs-all">
<div id="suggestStmt,PContext,PNode">
<dt><pre><span class="Keyword">proc</span> <a href="#suggestStmt%2CPContext%2CPNode"><span class="Identifier">suggestStmt</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="ast.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">KeyError</span><span class="Other">,</span>
<span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">,</span> <span class="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">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">WriteIOEffect</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/suggest.nim#L918" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L918" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="suggestSym-procs-all">
<div id="suggestSym,ModuleGraph,TLineInfo,PSym,PSym">
<dt><pre><span class="Keyword">proc</span> <a href="#suggestSym%2CModuleGraph%2CTLineInfo%2CPSym%2CPSym"><span class="Identifier">suggestSym</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">info</span><span class="Other">:</span> <a href="lineinfos.html#TLineInfo"><span class="Identifier">TLineInfo</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">usageSym</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span>
<span class="Identifier">isDecl</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">;</span> <span class="Identifier">isGenericInstance</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="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>
misnamed: should be 'symDeclared'
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/suggest.nim#L627" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L627" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="suggestToSuggestInlayExceptionHintLeft-procs-all">
<div id="suggestToSuggestInlayExceptionHintLeft,Suggest,seq[PType]">
<dt><pre><span class="Keyword">proc</span> <a href="#suggestToSuggestInlayExceptionHintLeft%2CSuggest%2Cseq%5BPType%5D"><span class="Identifier">suggestToSuggestInlayExceptionHintLeft</span></a><span class="Other">(</span><span class="Identifier">sug</span><span class="Other">:</span> <a href="options.html#Suggest"><span class="Identifier">Suggest</span></a><span class="Other">;</span>
<span class="Identifier">propagatedExceptions</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="options.html#SuggestInlayHint"><span class="Identifier">SuggestInlayHint</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">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="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/suggest.nim#L290" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L290" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="suggestToSuggestInlayExceptionHintRight-procs-all">
<div id="suggestToSuggestInlayExceptionHintRight,Suggest,seq[PType]">
<dt><pre><span class="Keyword">proc</span> <a href="#suggestToSuggestInlayExceptionHintRight%2CSuggest%2Cseq%5BPType%5D"><span class="Identifier">suggestToSuggestInlayExceptionHintRight</span></a><span class="Other">(</span><span class="Identifier">sug</span><span class="Other">:</span> <a href="options.html#Suggest"><span class="Identifier">Suggest</span></a><span class="Other">;</span>
<span class="Identifier">propagatedExceptions</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="options.html#SuggestInlayHint"><span class="Identifier">SuggestInlayHint</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">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="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/suggest.nim#L302" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L302" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="suggestToSuggestInlayTypeHint-procs-all">
<div id="suggestToSuggestInlayTypeHint,Suggest">
<dt><pre><span class="Keyword">proc</span> <a href="#suggestToSuggestInlayTypeHint%2CSuggest"><span class="Identifier">suggestToSuggestInlayTypeHint</span></a><span class="Other">(</span><span class="Identifier">sug</span><span class="Other">:</span> <a href="options.html#Suggest"><span class="Identifier">Suggest</span></a><span class="Other">)</span><span class="Other">:</span> <a href="options.html#SuggestInlayHint"><span class="Identifier">SuggestInlayHint</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/suggest.nim#L278" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L278" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="symToSuggest-procs-all">
<div id="symToSuggest,ModuleGraph,PSym,bool,IdeCmd,TLineInfo,range[],PrefixMatch,bool,int,uint16,int">
<dt><pre><span class="Keyword">proc</span> <a href="#symToSuggest%2CModuleGraph%2CPSym%2Cbool%2CIdeCmd%2CTLineInfo%2Crange%5B%5D%2CPrefixMatch%2Cbool%2Cint%2Cuint16%2Cint"><span class="Identifier">symToSuggest</span></a><span class="Other">(</span><span class="Identifier">g</span><span class="Other">:</span> <a href="modulegraphs.html#ModuleGraph"><span class="Identifier">ModuleGraph</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <a href="ast.html#PSym"><span class="Identifier">PSym</span></a><span class="Other">;</span> <span class="Identifier">isLocal</span><span class="Other">:</span> <span class="Identifier">bool</span><span class="Other">;</span> <span class="Identifier">section</span><span class="Other">:</span> <a href="options.html#IdeCmd"><span class="Identifier">IdeCmd</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">quality</span><span class="Other">:</span> <span class="Identifier">range</span><span class="Other">[</span><span class="DecNumber">0</span> <span class="Operator">..</span> <span class="DecNumber">100</span><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">prefix</span><span class="Other">:</span> <a href="prefixmatches.html#PrefixMatch"><span class="Identifier">PrefixMatch</span></a><span class="Other">;</span> <span class="Identifier">inTypeContext</span><span class="Other">:</span> <span class="Identifier">bool</span><span class="Other">;</span> <span class="Identifier">scope</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span>
<span class="Identifier">useSuppliedInfo</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span> <span class="Identifier">endLine</span><span class="Other">:</span> <span class="Identifier">uint16</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">;</span> <span class="Identifier">endCol</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">;</span>
<span class="Identifier">extractDocs</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">)</span><span class="Other">:</span> <a href="options.html#Suggest"><span class="Identifier">Suggest</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="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">RootEffect</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/suggest.nim#L145" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L145" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="typeRel-procs-all">
<div id="typeRel,TCandidate,PType,PType,TTypeRelFlags">
<dt><pre><span class="Keyword">proc</span> <a href="#typeRel%2CTCandidate%2CPType%2CPType%2CTTypeRelFlags"><span class="Identifier">typeRel</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="sigmatch.html#TCandidate"><span class="Identifier">TCandidate</span></a><span class="Other">;</span> <span class="Identifier">f</span><span class="Other">,</span> <span class="Identifier">aOrig</span><span class="Other">:</span> <a href="ast.html#PType"><span class="Identifier">PType</span></a><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <a href="sigmatch.html#TTypeRelFlags"><span class="Identifier">TTypeRelFlags</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <a href="types.html#TTypeRelation"><span class="Identifier">TTypeRelation</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ERecoverableError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">ReadEnvEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L138" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L138" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="writeMatches-procs-all">
<div id="writeMatches,TCandidate">
<dt><pre><span class="Keyword">proc</span> <a href="#writeMatches%2CTCandidate"><span class="Identifier">writeMatches</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="sigmatch.html#TCandidate"><span class="Identifier">TCandidate</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">]</span><span class="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="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/sigmatch.nim#L396" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/sigmatch.nim#L396" 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="trySuggestModuleNames-templates-all">
<div id="trySuggestModuleNames.t,PContext,PNode">
<dt><pre><span class="Keyword">template</span> <a href="#trySuggestModuleNames.t%2CPContext%2CPNode"><span class="Identifier">trySuggestModuleNames</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="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span></pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/suggest.nim#L870" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L870" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="trySuggestPragmas-templates-all">
<div id="trySuggestPragmas.t,PContext,PNode">
<dt><pre><span class="Keyword">template</span> <a href="#trySuggestPragmas.t%2CPContext%2CPNode"><span class="Identifier">trySuggestPragmas</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="ast.html#PNode"><span class="Identifier">PNode</span></a><span class="Other">)</span></pre></dt>
<dd>
Runs <a class="reference internal nimdoc" title="proc suggestPragmas(c: PContext; n: PNode)" href="#suggestPragmas,PContext,PNode">suggestPragmas</a> when compiling nimsuggest and we are querying the node
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/suggest.nim#L951" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/suggest.nim#L951" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2025-09-27 04:02:29 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>