Clean up ast2 pragma procs
This commit is contained in:
parent
2d45c6adf6
commit
8fadeeb76c
1 changed files with 38 additions and 34 deletions
|
|
@ -107,23 +107,27 @@ proc addConst(nimState: NimState, node: TSNode) =
|
||||||
|
|
||||||
nimState.printDebug(constDef)
|
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]) =
|
proc addPragma(nimState: NimState, node: TSNode, pragma: PNode, pragmas: OrderedTable[string, PNode]) =
|
||||||
# Add pragmas to an existing nkPragma tree
|
# Add pragmas to an existing nkPragma tree
|
||||||
for name, value in pragmas.pairs:
|
for name, value in pragmas.pairs:
|
||||||
let
|
nimState.addPragma(node, pragma, name, value)
|
||||||
(_, 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 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
|
# Create nkPragma tree for name:value
|
||||||
#
|
#
|
||||||
# {.name1, name2: value2.}
|
# {.name1, name2: value2.}
|
||||||
|
|
@ -136,10 +140,15 @@ proc newPragma(nimState: NimState, node: TSNode, pragmas: OrderedTable[string, P
|
||||||
# )
|
# )
|
||||||
# )
|
# )
|
||||||
result = newNode(nkPragma)
|
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)
|
nimState.addPragma(node, result, pragmas)
|
||||||
|
|
||||||
proc newPragmaExpr(nimState: NimState, node: TSNode, ident: PNode, pragmas: OrderedTable[string, PNode]): PNode =
|
proc newPragmaExpr(nimState: NimState, node: TSNode, ident: PNode, name: string, value: PNode = nil): PNode =
|
||||||
# Create nkPragmaExpr tree
|
# Create nkPragmaExpr tree for name:value
|
||||||
#
|
#
|
||||||
# nkPragmaExpr(
|
# nkPragmaExpr(
|
||||||
# nkPostfix(
|
# nkPostfix(
|
||||||
|
|
@ -156,6 +165,12 @@ proc newPragmaExpr(nimState: NimState, node: TSNode, ident: PNode, pragmas: Orde
|
||||||
# )
|
# )
|
||||||
result = newNode(nkPragmaExpr)
|
result = newNode(nkPragmaExpr)
|
||||||
result.add ident
|
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)
|
result.add nimState.newPragma(node, pragmas)
|
||||||
|
|
||||||
proc newTypeIdent(nimState: NimState, node: TSNode, override = "", union = false): PNode =
|
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)
|
nimState.getIdent(name, info)
|
||||||
prident =
|
prident =
|
||||||
if union:
|
if union:
|
||||||
var
|
nimState.newPragmaExpr(node, ident, "union")
|
||||||
empty: PNode
|
|
||||||
nimState.newPragmaExpr(node, ident, {"union": empty}.toOrderedTable())
|
|
||||||
else:
|
else:
|
||||||
ident
|
ident
|
||||||
|
|
||||||
|
|
@ -1017,31 +1030,22 @@ proc setupPragmas(nimState: NimState, root: TSNode, fullpath: string) =
|
||||||
var
|
var
|
||||||
impPragma = newNode(nkPragma)
|
impPragma = newNode(nkPragma)
|
||||||
impCPragma = newNode(nkPragma)
|
impCPragma = newNode(nkPragma)
|
||||||
empty: PNode
|
|
||||||
|
|
||||||
nimState.addPragma(root, impPragma, {
|
nimState.addPragma(root, impPragma, "pragma", nimState.getIdent(nimState.impShort))
|
||||||
"pragma": nimState.getIdent(nimState.impShort),
|
nimState.addPragma(root, impPragma, "importc")
|
||||||
"importc": empty
|
|
||||||
}.toOrderedTable())
|
|
||||||
|
|
||||||
if nimState.includeHeader():
|
if nimState.includeHeader():
|
||||||
nimState.constSection.add nimState.newConstDef(
|
nimState.constSection.add nimState.newConstDef(
|
||||||
root, name = nimState.currentHeader, val = fullpath)
|
root, name = nimState.currentHeader, val = fullpath)
|
||||||
|
|
||||||
nimState.addPragma(root, impPragma, {
|
nimState.addPragma(root, impPragma, "header", newStrNode(nkStrLit, nimState.currentHeader))
|
||||||
"header": newStrNode(nkStrLit, nimState.currentHeader)
|
|
||||||
}.toOrderedTable())
|
|
||||||
|
|
||||||
nimState.addPragma(root, impCPragma, {
|
nimState.addPragma(root, impCPragma, "pragma", nimState.getIdent(nimState.impShort & "C"))
|
||||||
"pragma": nimState.getIdent(nimState.impShort & "C"),
|
nimState.addPragma(root, impCPragma, nimState.impShort)
|
||||||
nimState.impShort: empty,
|
nimState.addPragma(root, impCPragma, "cdecl")
|
||||||
"cdecl": empty
|
|
||||||
}.toOrderedTable())
|
|
||||||
|
|
||||||
if nimState.gState.dynlib.nBl:
|
if nimState.gState.dynlib.nBl:
|
||||||
nimState.addPragma(root, impCPragma, {
|
nimState.addPragma(root, impCPragma, "dynlib", nimState.getIdent(nimState.gState.dynlib))
|
||||||
"dynlib": nimState.getIdent(nimState.gState.dynlib)
|
|
||||||
}.toOrderedTable())
|
|
||||||
|
|
||||||
nimState.pragmaSection.add impPragma
|
nimState.pragmaSection.add impPragma
|
||||||
nimState.pragmaSection.add impCPragma
|
nimState.pragmaSection.add impCPragma
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue