From 42436dba4c7ea939aee4ae541ac1263523c79b52 Mon Sep 17 00:00:00 2001 From: otya128 Date: Thu, 22 Dec 2016 22:56:27 +0900 Subject: [PATCH] Fix variadic argument --- SMILEBASIC/builtinfunctions.d | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/SMILEBASIC/builtinfunctions.d b/SMILEBASIC/builtinfunctions.d index 22b2a25..f20742a 100644 --- a/SMILEBASIC/builtinfunctions.d +++ b/SMILEBASIC/builtinfunctions.d @@ -422,10 +422,13 @@ class BuiltinFunction { return p.displaynum; } - static void GCLS(PetitComputer p, DefaultValue!(int, false) color) + static void GCLS(PetitComputer p) { - color.setDefaultValue(0); - p.graphic.gcls(p.graphic.useGRP, cast(int)color); + p.graphic.gcls(p.graphic.useGRP, 0); + } + static void GCLS(PetitComputer p, int color) + { + p.graphic.gcls(p.graphic.useGRP, color); } static void GPSET(PetitComputer p, int x, int y, DefaultValue!(int, false) color) { @@ -2196,7 +2199,7 @@ class BuiltinFunction p.console.cls; SPCLR(p, DefaultValue!(int, false)(true)); BGCLR(p, DefaultValue!(int, false)(true)); - GCLS(p, DefaultValue!(int, false)(true)); + GCLS(p); } static int CHKCALL(PetitComputer p, wstring func) { @@ -2961,6 +2964,10 @@ template GetStartSkip(BFD) { enum SkipSkip = I - is(P[0] : PetitComputer); } + else static if(is(P[I] == Value[])) + { + enum SkipSkip = I - is(P[0] : PetitComputer); + } else { enum SkipSkip = SkipSkip!(I + 1, P); @@ -3283,11 +3290,11 @@ template GetFunctionParamType(BFD) } static if(1 == P.length && !is(P[0] == PetitComputer)) { - enum Array = "BuiltinFunctionArgument(" ~ arg ~ ")"; + enum Array = arg.empty ? "" : "BuiltinFunctionArgument(" ~ arg ~ ")"; } else static if(!is(P[0] == PetitComputer)) { - enum Array = "BuiltinFunctionArgument(" ~ arg ~ ")," ~ Array!(I + 1, P[1..$]); + enum Array = (arg.empty ? "" : "BuiltinFunctionArgument(" ~ arg ~ ")," )~ Array!(I + 1, P[1..$]); } } }