Support for nameless function params, unused enums
This commit is contained in:
parent
960a8f6873
commit
d21017ac5b
1 changed files with 20 additions and 18 deletions
|
|
@ -60,6 +60,18 @@ proc initGrammar() =
|
||||||
gStateRT.typeStr &= &" {name}* = {typ}\n"
|
gStateRT.typeStr &= &" {name}* = {typ}\n"
|
||||||
))
|
))
|
||||||
|
|
||||||
|
template funcParamCommon(pname, ptyp, pout, count, i: untyped): untyped =
|
||||||
|
ptyp = gStateRT.data[i].val.getIdentifier()
|
||||||
|
if i+1 < gStateRT.data.len and gStateRT.data[i+1].name == "identifier":
|
||||||
|
pname = gStateRT.data[i+1].val.getIdentifier()
|
||||||
|
i += 2
|
||||||
|
else:
|
||||||
|
pname = "a" & $count
|
||||||
|
count += 1
|
||||||
|
i += 1
|
||||||
|
if ptyp != "object":
|
||||||
|
pout &= &"{pname}: {ptyp},"
|
||||||
|
|
||||||
proc pStructCommon(ast: ref Ast, node: TSNode, name: string, fstart, fend: int) =
|
proc pStructCommon(ast: ref Ast, node: TSNode, name: string, fstart, fend: int) =
|
||||||
var
|
var
|
||||||
nname = name.getIdentifier()
|
nname = name.getIdentifier()
|
||||||
|
|
@ -111,16 +123,7 @@ proc initGrammar() =
|
||||||
if gStateRT.data[i].name == "field_declaration":
|
if gStateRT.data[i].name == "field_declaration":
|
||||||
break
|
break
|
||||||
|
|
||||||
ptyp = gStateRT.data[i].val.getIdentifier()
|
funcParamCommon(pname, ptyp, pout, count, i)
|
||||||
if gStateRT.data[i+1].name == "identifier":
|
|
||||||
pname = gStateRT.data[i+1].val.getIdentifier()
|
|
||||||
i += 2
|
|
||||||
else:
|
|
||||||
pname = "a" & $count
|
|
||||||
count += 1
|
|
||||||
i += 1
|
|
||||||
if ptyp != "object":
|
|
||||||
pout &= &"{pname}: {ptyp},"
|
|
||||||
|
|
||||||
if pout.len != 0 and pout[^1] == ',':
|
if pout.len != 0 and pout[^1] == ',':
|
||||||
pout = pout[0 .. ^2]
|
pout = pout[0 .. ^2]
|
||||||
|
|
@ -214,7 +217,7 @@ proc initGrammar() =
|
||||||
if nname notin gStateRT.enums:
|
if nname notin gStateRT.enums:
|
||||||
gStateRT.enums.add(nname)
|
gStateRT.enums.add(nname)
|
||||||
gStateRT.enumStr &= &"\ntype {nname}* = distinct int"
|
gStateRT.enumStr &= &"\ntype {nname}* = distinct int"
|
||||||
gStateRT.enumStr &= &"\nconverter enumToInt(en: {nname}): int = en.int\n"
|
gStateRT.enumStr &= &"\nconverter enumToInt(en: {nname}): int {{.used.}} = en.int\n"
|
||||||
|
|
||||||
var
|
var
|
||||||
i = fstart
|
i = fstart
|
||||||
|
|
@ -306,15 +309,14 @@ proc initGrammar() =
|
||||||
|
|
||||||
if fnname notin gStateRT.procs:
|
if fnname notin gStateRT.procs:
|
||||||
var
|
var
|
||||||
pout = ""
|
pout, pname, ptyp = ""
|
||||||
i = 2
|
i = 2
|
||||||
|
count = 1
|
||||||
|
|
||||||
if gStateRT.data.len > 2:
|
if gStateRT.data.len > 2:
|
||||||
while i < gStateRT.data.len-1:
|
while i < gStateRT.data.len:
|
||||||
let
|
funcParamCommon(pname, ptyp, pout, count, i)
|
||||||
ptyp = gStateRT.data[i].val.getIdentifier()
|
|
||||||
pname = gStateRT.data[i+1].val.getIdentifier()
|
|
||||||
pout &= &"{pname}: {ptyp},"
|
|
||||||
i += 2
|
|
||||||
if pout.len != 0 and pout[^1] == ',':
|
if pout.len != 0 and pout[^1] == ',':
|
||||||
pout = pout[0 .. ^2]
|
pout = pout[0 .. ^2]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue