From f03cb9144e16b9a8e9aad0c9a1aa944d4b8b4139 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 17 Mar 2018 08:27:49 -0600 Subject: [PATCH] unbreak cify build Handle `(case-lambda)`. --- racket/src/cify/arg.rkt | 4 ++++ racket/src/cify/generate.rkt | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/racket/src/cify/arg.rkt b/racket/src/cify/arg.rkt index 88e60ff6de..13dc35aa62 100644 --- a/racket/src/cify/arg.rkt +++ b/racket/src/cify/arg.rkt @@ -27,6 +27,10 @@ (if (list? ids) (values min-a min-a) (values min-a -1))] + [`(case-lambda) + (if precise-cases? + (values -1 "\"\"") + (values 0 0))] [`(case-lambda [,unsorted-idss . ,_] ...) (cond [precise-cases? diff --git a/racket/src/cify/generate.rkt b/racket/src/cify/generate.rkt index 9476cb73d3..2e810e3fe3 100644 --- a/racket/src/cify/generate.rkt +++ b/racket/src/cify/generate.rkt @@ -121,7 +121,9 @@ (out-open "~aif (c_argc ~a ~a) {" (if (zero? i) "" "else ") (if (list? ids) "==" ">=") (args-length ids)) (generate-lambda-case lam leaf? `(lambda ,ids . ,body) free-var-refs closure-offset) (out-close "}")) - (out "else return c_wrong_arity(~s, c_argc, c_argv);" (format "~a" id))]) + (out "~areturn c_wrong_arity(~s, c_argc, c_argv);" + (if (null? idss) "" "else ") + (format "~a" id))]) (when bracket? (out-close "}"))) ;; Returns a boolean indicating whether the functon can be a leaf