trees

Source   Edit  

Procs

proc cyclicTree(n: PNode): bool {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc dontInlineConstant(orig, cnst: PNode): bool {.inline, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc effectSpec(n: PNode; effectType: TSpecialWord): PNode {....raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc exprStructuralEquivalent(a, b: PNode; strictSymEquality = false;
                              ignoreIntLitWidth = false): bool {....raises: [],
    tags: [], forbids: [].}

Structural equality of two expressions.

With ignoreIntLitWidth, integer literals of the same signedness are equal when their values are, whatever width-specific literal kind each carries. The same value reaches a tree as nkUIntLit from a folded conversion and as nkUInt16Lit from a suffix literal or the VM, so a comparison of two values (a static type argument) has to look through the kind; a comparison of two spellings (macro nodes) must not.

Source   Edit  
proc extractRange(k: TNodeKind; n: PNode; a, b: int): PNode {....raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc findPragma(n: PNode; which: TSpecialWord): PNode {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc flattenStmts(n: PNode): PNode {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc getMagic(op: PNode): TMagic {....raises: [KeyError, OSError, Exception,
    ValueError], tags: [ReadEnvEffect, ReadIOEffect, ReadDirEffect, RootEffect],
                                   forbids: [].}
Source   Edit  
proc getPotentialWrites(n: PNode; mutate: bool; result: var seq[PNode]) {.
    ...raises: [KeyError, OSError, Exception, ValueError],
    tags: [ReadEnvEffect, ReadIOEffect, ReadDirEffect, RootEffect], forbids: [].}
Source   Edit  
proc getRoot(n: PNode): PSym {....raises: [KeyError, OSError, Exception, ValueError], tags: [
    ReadEnvEffect, ReadIOEffect, ReadDirEffect, RootEffect], forbids: [].}
getRoot takes a path n. A path is an lvalue expression like obj.x[i].y. The root of a path is the symbol that can be determined as the owner; obj in the example. Source   Edit  
proc isCaseObj(n: PNode): bool {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc isConstExpr(n: PNode): bool {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc isCursor(n: PNode): bool {....raises: [KeyError, OSError, Exception,
    ValueError], tags: [ReadEnvEffect, ReadIOEffect, ReadDirEffect, RootEffect],
                                forbids: [].}
Source   Edit  
proc isDeepConstExpr(n: PNode; preventInheritance = false): bool {.
    ...raises: [KeyError, OSError, Exception, ValueError],
    tags: [ReadEnvEffect, ReadIOEffect, ReadDirEffect, RootEffect], forbids: [].}
Source   Edit  
proc isNoSideEffectPragma(n: PNode): bool {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc isRange(n: PNode): bool {.inline, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc isRunnableExamples(n: PNode): bool {.
    ...raises: [KeyError, OSError, Exception, ValueError],
    tags: [ReadEnvEffect, ReadIOEffect, ReadDirEffect, RootEffect], forbids: [].}
Source   Edit  
proc propSpec(n: PNode; effectType: TSpecialWord): PNode {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc sameTree(a, b: PNode): bool {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc skipAddr(n: PNode): PNode {.inline, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc stupidStmtListExpr(n: PNode): bool {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc whichPragma(n: PNode): TSpecialWord {....raises: [], tags: [], forbids: [].}
Source   Edit