Handle nil object references properly

Fixes #26.
This commit is contained in:
Ruslan Mustakov 2018-06-04 09:24:54 +07:00
commit 651c2d823c

View file

@ -468,9 +468,12 @@ proc doGenerateMethod(tree: PNode, methodBindRegistry: var HashSet[string],
newIdentDefs(ident("argToPassToGodot" & $idx), newEmptyNode(), newIdentDefs(ident("argToPassToGodot" & $idx), newEmptyNode(),
newCall("toGodotString", argName)))) newCall("toGodotString", argName))))
else: else:
let objVal = newIfStmt(
prefix("not", newDotExpr(argName, ident"isNil")),
newDotExpr(argName, ident("godotObject"))
).addChain(newNode(nkElse).addChain(newNilLit()))
argConversions.add(newNode(nkLetSection).addChain( argConversions.add(newNode(nkLetSection).addChain(
newIdentDefs(ident("argToPassToGodot" & $idx), newEmptyNode(), newIdentDefs(ident("argToPassToGodot" & $idx), newEmptyNode(), objVal)))
newDotExpr(argName, ident("godotObject")))))
let argAsgn = newNode(nkAsgn).addChain( let argAsgn = newNode(nkAsgn).addChain(
newNode(nkBracketExpr).addChain( newNode(nkBracketExpr).addChain(
newNode(nkBracketExpr).addChain(argsName), argIdx), newNode(nkBracketExpr).addChain(argsName), argIdx),