diff options
| author | Ganesh Viswanathan <dev@genotrance.com> | 2020-03-18 13:34:14 -0500 |
|---|---|---|
| committer | Ganesh Viswanathan <dev@genotrance.com> | 2020-03-18 13:34:14 -0500 |
| commit | 8fadeeb76c9101fa7333e684c1e65d19b4d03f99 (patch) | |
| tree | 02ccad1106ebef4696c1f9bed8287571e2384b74 | |
| parent | 2d45c6adf609994046396f8e574fab8534bcfa6e (diff) | |
| download | nimterop-8fadeeb76c9101fa7333e684c1e65d19b4d03f99.tar.gz nimterop-8fadeeb76c9101fa7333e684c1e65d19b4d03f99.zip | |
Clean up ast2 pragma procs
| -rw-r--r-- | nimterop/ast2.nim | 72 |
1 files changed, 38 insertions, 34 deletions
diff --git a/nimterop/ast2.nim b/nimterop/ast2.nim index 8804c53..4539f79 100644 --- a/nimterop/ast2.nim +++ b/nimterop/ast2.nim @@ -107,23 +107,27 @@ proc addConst(nimState: NimState, node: TSNode) = nimState.printDebug(constDef) +proc addPragma(nimState: NimState, node: TSNode, pragma: PNode, name: string, value: PNode = nil) = + # Add pragma to an existing nkPragma tree + let + (_, pinfo) = nimState.getNameInfo(node.getAtom(), nskUnknown) + pident = nimState.getIdent(name, pinfo, exported = false) + + if value.isNil: + pragma.add pident + else: + let + colExpr = newNode(nkExprColonExpr) + colExpr.add pident + colExpr.add value + pragma.add colExpr + proc addPragma(nimState: NimState, node: TSNode, pragma: PNode, pragmas: OrderedTable[string, PNode]) = # Add pragmas to an existing nkPragma tree for name, value in pragmas.pairs: - let - (_, pinfo) = nimState.getNameInfo(node.getAtom(), nskUnknown) - pident = nimState.getIdent(name, pinfo, exported = false) - - if value.isNil: - pragma.add pident - else: - let - colExpr = newNode(nkExprColonExpr) - colExpr.add pident - colExpr.add value - pragma.add colExpr + nimState.addPragma(node, pragma, name, value) -proc newPragma(nimState: NimState, node: TSNode, pragmas: OrderedTable[string, PNode]): PNode = +proc newPragma(nimState: NimState, node: TSNode, name: string, value: PNode = nil): PNode = # Create nkPragma tree for name:value # # {.name1, name2: value2.} @@ -136,10 +140,15 @@ proc newPragma(nimState: NimState, node: TSNode, pragmas: OrderedTable[string, P # ) # ) result = newNode(nkPragma) + nimState.addPragma(node, result, name, value) + +proc newPragma(nimState: NimState, node: TSNode, pragmas: OrderedTable[string, PNode]): PNode = + # Create nkPragma tree for multiple name:value + result = newNode(nkPragma) nimState.addPragma(node, result, pragmas) -proc newPragmaExpr(nimState: NimState, node: TSNode, ident: PNode, pragmas: OrderedTable[string, PNode]): PNode = - # Create nkPragmaExpr tree +proc newPragmaExpr(nimState: NimState, node: TSNode, ident: PNode, name: string, value: PNode = nil): PNode = + # Create nkPragmaExpr tree for name:value # # nkPragmaExpr( # nkPostfix( @@ -156,6 +165,12 @@ proc newPragmaExpr(nimState: NimState, node: TSNode, ident: PNode, pragmas: Orde # ) result = newNode(nkPragmaExpr) result.add ident + result.add nimState.newPragma(node, name, value) + +proc newPragmaExpr(nimState: NimState, node: TSNode, ident: PNode, pragmas: OrderedTable[string, PNode]): PNode = + # Create nkPragmaExpr tree for multiple name:value + result = newNode(nkPragmaExpr) + result.add ident result.add nimState.newPragma(node, pragmas) proc newTypeIdent(nimState: NimState, node: TSNode, override = "", union = false): PNode = @@ -172,9 +187,7 @@ proc newTypeIdent(nimState: NimState, node: TSNode, override = "", union = false nimState.getIdent(name, info) prident = if union: - var - empty: PNode - nimState.newPragmaExpr(node, ident, {"union": empty}.toOrderedTable()) + nimState.newPragmaExpr(node, ident, "union") else: ident @@ -1017,31 +1030,22 @@ proc setupPragmas(nimState: NimState, root: TSNode, fullpath: string) = var impPragma = newNode(nkPragma) impCPragma = newNode(nkPragma) - empty: PNode - nimState.addPragma(root, impPragma, { - "pragma": nimState.getIdent(nimState.impShort), - "importc": empty - }.toOrderedTable()) + nimState.addPragma(root, impPragma, "pragma", nimState.getIdent(nimState.impShort)) + nimState.addPragma(root, impPragma, "importc") if nimState.includeHeader(): nimState.constSection.add nimState.newConstDef( root, name = nimState.currentHeader, val = fullpath) - nimState.addPragma(root, impPragma, { - "header": newStrNode(nkStrLit, nimState.currentHeader) - }.toOrderedTable()) + nimState.addPragma(root, impPragma, "header", newStrNode(nkStrLit, nimState.currentHeader)) - nimState.addPragma(root, impCPragma, { - "pragma": nimState.getIdent(nimState.impShort & "C"), - nimState.impShort: empty, - "cdecl": empty - }.toOrderedTable()) + nimState.addPragma(root, impCPragma, "pragma", nimState.getIdent(nimState.impShort & "C")) + nimState.addPragma(root, impCPragma, nimState.impShort) + nimState.addPragma(root, impCPragma, "cdecl") if nimState.gState.dynlib.nBl: - nimState.addPragma(root, impCPragma, { - "dynlib": nimState.getIdent(nimState.gState.dynlib) - }.toOrderedTable()) + nimState.addPragma(root, impCPragma, "dynlib", nimState.getIdent(nimState.gState.dynlib)) nimState.pragmaSection.add impPragma nimState.pragmaSection.add impCPragma |
