onSymbol for overrides
This commit is contained in:
parent
438160ac2a
commit
3c71729839
3 changed files with 27 additions and 3 deletions
|
|
@ -127,6 +127,17 @@ proc getIdentifier*(nimState: NimState, name: string, kind: NimSymKind, parent="
|
||||||
else:
|
else:
|
||||||
result = ""
|
result = ""
|
||||||
|
|
||||||
|
proc getOverride*(nimState: NimState, name: string, kind: NimSymKind, parent=""): string =
|
||||||
|
doAssert name.len != 0, "Blank identifier error"
|
||||||
|
|
||||||
|
if nimState.gState.onSymbol != nil:
|
||||||
|
var
|
||||||
|
nname = nimState.getIdentifier(name, kind, parent)
|
||||||
|
sym = Symbol(name: nname, parent: parent, kind: kind)
|
||||||
|
nimState.gState.onSymbol(sym)
|
||||||
|
|
||||||
|
result = sym.override
|
||||||
|
|
||||||
proc getUniqueIdentifier*(nimState: NimState, prefix = ""): string =
|
proc getUniqueIdentifier*(nimState: NimState, prefix = ""): string =
|
||||||
var
|
var
|
||||||
name = prefix & "_" & nimState.sourceFile.extractFilename().multiReplace([(".", ""), ("-", "")])
|
name = prefix & "_" & nimState.sourceFile.extractFilename().multiReplace([(".", ""), ("-", "")])
|
||||||
|
|
|
||||||
|
|
@ -648,10 +648,22 @@ proc initGrammar(): Grammar =
|
||||||
case $node.tsNodeType()
|
case $node.tsNodeType()
|
||||||
of "declaration":
|
of "declaration":
|
||||||
if i.name == "identifier":
|
if i.name == "identifier":
|
||||||
echo "# Unknown declaration " & i.val
|
let
|
||||||
|
override = nimState.getOverride(i.val, nskProc)
|
||||||
|
|
||||||
|
if override.len != 0:
|
||||||
|
nimState.procStr &= &"{nimState.getComments(true)}\n{override}"
|
||||||
|
else:
|
||||||
|
nimState.procStr &= &"{nimState.getComments(true)}\n# Unable to wrap declaration '{i.val}'"
|
||||||
else:
|
else:
|
||||||
if i.name == "type_identifier":
|
if i.name == "type_identifier":
|
||||||
echo "# Unknown type " & i.val
|
let
|
||||||
|
override = nimState.getOverride(i.val, nskType)
|
||||||
|
|
||||||
|
if override.len != 0:
|
||||||
|
nimState.typeStr &= &"{nimState.getComments()}\n{override}"
|
||||||
|
else:
|
||||||
|
nimState.typeStr &= &"{nimState.getComments()}\n # Unable to wrap type '{i.val}'"
|
||||||
))
|
))
|
||||||
|
|
||||||
proc initRegex(ast: ref Ast) =
|
proc initRegex(ast: ref Ast) =
|
||||||
|
|
|
||||||
|
|
@ -5,5 +5,6 @@ type
|
||||||
name*: string
|
name*: string
|
||||||
parent*: string
|
parent*: string
|
||||||
kind*: NimSymKind
|
kind*: NimSymKind
|
||||||
|
override*: string
|
||||||
|
|
||||||
OnSymbol* = proc(sym: var Symbol) {.cdecl.}
|
OnSymbol* = proc(sym: var Symbol) {.cdecl.}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue