diff --git a/scheme/cyclone/cgen.sld b/scheme/cyclone/cgen.sld index 219ba64d..1cb5f953 100644 --- a/scheme/cyclone/cgen.sld +++ b/scheme/cyclone/cgen.sld @@ -982,18 +982,23 @@ ; c-compile-formals : list[symbol] -> string (define (c-compile-formals formals type) - (if (not (pair? formals)) - "" - (string-append - "object " - (mangle (car formals)) - (cond - ((pair? (cdr formals)) - (string-append ", " (c-compile-formals (cdr formals) type))) - ((not (equal? 'args:fixed type)) - (string-append ", object " (mangle (cdr formals)) "_raw, ...")) - (else - ""))))) + (cond + ((and (not (pair? formals)) + (equal? type 'args:varargs)) + (string-append "object " (mangle formals) "_raw, ...")) + ((not (pair? formals)) + "") + (else + (string-append + "object " + (mangle (car formals)) + (cond + ((pair? (cdr formals)) + (string-append ", " (c-compile-formals (cdr formals) type))) + ((not (equal? 'args:fixed type)) + (string-append ", object " (mangle (cdr formals)) "_raw, ...")) + (else + "")))))) ; c-compile-lambda : lamda-exp (string -> void) -> (string -> string) (define (c-compile-lambda exp trace)