onSymbol for overrides

This commit is contained in:
Ganesh Viswanathan 2019-10-18 10:51:00 -05:00
commit 3c71729839
3 changed files with 27 additions and 3 deletions

View file

@ -127,6 +127,17 @@ proc getIdentifier*(nimState: NimState, name: string, kind: NimSymKind, parent="
else:
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 =
var
name = prefix & "_" & nimState.sourceFile.extractFilename().multiReplace([(".", ""), ("-", "")])

View file

@ -648,10 +648,22 @@ proc initGrammar(): Grammar =
case $node.tsNodeType()
of "declaration":
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:
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) =

View file

@ -5,5 +5,6 @@ type
name*: string
parent*: string
kind*: NimSymKind
override*: string
OnSymbol* = proc(sym: var Symbol) {.cdecl.}
OnSymbol* = proc(sym: var Symbol) {.cdecl.}