Fix varargs calls

This commit is contained in:
Ruslan Mustakov 2017-07-27 00:06:45 +07:00
commit de89df71ad
4 changed files with 7 additions and 6 deletions

View file

@ -416,7 +416,7 @@ proc doGenerateMethod(tree: PNode, methodBindRegistry: var HashSet[string],
raise newException(ValueError,
"Non-standard type $# for varargs params of method $# of type $#" %
[arg.typ, godotMethodName, typ.godotName])
if not isStandardType:
if not isStandardType and varargsName.isNil:
if arg.typ == "string":
argConversions.add(newNode(nkLetSection).addChain(
newIdentDefs(ident("argToPassToGodot" & $idx), newEmptyNode(),
@ -441,8 +441,9 @@ proc doGenerateMethod(tree: PNode, methodBindRegistry: var HashSet[string],
argConversions.add(argLoop)
argLoop.add(newInfix(ident("idx"), ident("<"), argLenNode)
)
argLoop.add(argAsgn)
argLoop.add(newCommand(ident("inc"), ident("idx")))
argLoop.add(newNode(nkStmtList).addChain(
argAsgn,
newCommand(ident("inc"), ident("idx"))))
let retName = if isVarargs: "callRet" else: "ptrCallRet"
let theCall = newCall(

View file

@ -24,7 +24,7 @@ proc ptrCall*(methodBind: ptr GodotMethodBind;
importc: "godot_method_bind_ptrcall", header: "godot/gdnative.h".}
proc call*(methodBind: ptr GodotMethodBind;
instance: ptr GodotObject;
args: ptr array[MAX_ARG_COUNT, Variant]; argCount: cint;
args: var ptr array[MAX_ARG_COUNT, Variant]; argCount: cint;
callError: var VariantCallError): Variant {.
importc: "godot_method_bind_call", header: "godot/gdnative.h".}