@@ -811,12 +811,7 @@ genWrapper (desc, tag) = ret ++ " " ++ wrapperName tag ++ "(" ++
811811 indent 1 ++ "RESERVE(" ++ show (len + 1) ++ ");\n" ++
812812 indent 1 ++ "allocCon(REG1, vm, " ++ show tag ++ ",0 , 0);\n" ++
813813 indent 1 ++ "TOP(0) = REG1;\n" ++
814−
815− push 1 argList ++
816− indent 1 ++ "STOREOLD;\n" ++
817− indent 1 ++ "BASETOP(0);\n" ++
818− indent 1 ++ "ADDTOP(" ++ show (len + 1) ++ ");\n" ++
819− indent 1 ++ "CALL(_idris__123_APPLY0_125_);\n" ++
814+ applyArgs argList ++
820815 if ret /= "void"
821816 then indent 1 ++ "ret = " ++ irts_c (toFType ft) "RVAL" ++ ";\n"
822817 ++ indent 1 ++ "return ret;\n}\n\n"
@@ -825,6 +820,19 @@ genWrapper (desc, tag) = ret ++ " " ++ wrapperName tag ++ "(" ++
825820 (ret, ft) = rty desc
826821 argList = zip (args desc) [0..]
827822 len = length argList
823+
824+ applyArgs (x:y:xs) = push 1 [x] ++
825+ indent 1 ++ "STOREOLD;\n" ++
826+ indent 1 ++ "BASETOP(0);\n" ++
827+ indent 1 ++ "ADDTOP(2);\n" ++
828+ indent 1 ++ "CALL(_idris__123_APPLY0_125_);\n" ++
829+ indent 1 ++ "TOP(0)=REG1;\n" ++
830+ applyArgs (y:xs)
831+ applyArgs x = push 1 x ++
832+ indent 1 ++ "STOREOLD;\n" ++
833+ indent 1 ++ "BASETOP(0);\n" ++
834+ indent 1 ++ "ADDTOP(" ++ show (length x + 1) ++ ");\n" ++
835+ indent 1 ++ "CALL(_idris__123_APPLY0_125_);\n"
828836 renderArgs [] = "void"
829837 renderArgs [((s, _), n)] = s ++ " a" ++ (show n)
830838 renderArgs (((s, _), n):xs) = s ++ " a" ++ (show n) ++ ", " ++