aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGanesh Viswanathan <dev@genotrance.com>2020-03-18 13:34:14 -0500
committerGanesh Viswanathan <dev@genotrance.com>2020-03-18 13:34:14 -0500
commit8fadeeb76c9101fa7333e684c1e65d19b4d03f99 (patch)
tree02ccad1106ebef4696c1f9bed8287571e2384b74
parent2d45c6adf609994046396f8e574fab8534bcfa6e (diff)
downloadnimterop-8fadeeb76c9101fa7333e684c1e65d19b4d03f99.tar.gz
nimterop-8fadeeb76c9101fa7333e684c1e65d19b4d03f99.zip
Clean up ast2 pragma procs
-rw-r--r--nimterop/ast2.nim72
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