diff --git a/module/ice-9/psyntax.scm b/module/ice-9/psyntax.scm index 728ab12..da7f16a 100644 --- a/module/ice-9/psyntax.scm +++ b/module/ice-9/psyntax.scm @@ -1704,7 +1704,7 @@ orig-args)))) (req orig-args '()))) - (define expand-lambda-case + (define expand-lambda-case* (lambda (e r w s mod get-formals clauses) (define (parse-req req opt rest kw body) (let ((vars (map gen-var req)) @@ -1795,6 +1795,25 @@ (build-lambda-case s req opt rest kw inits vars body else*)))))))))))) + (define expand-lambda-case + (lambda (e r w s mod get-formals clauses) + (syntax-case clauses () + (() + (values + '() + (build-lambda-case s '() '() 'rest #f '() + (list (build-lexical-var s 'rest)) + (build-application s + (build-primref s 'throw) + (list + (build-data + s 'wrong-number-of-args) + (build-data + s "Wrong number of arguments"))) + #f))) + (((args e1 e2 ...) (args* e1* e2* ...) ...) + (expand-lambda-case* e r w s mod get-formal clauses))))) + ;; data ;; strips syntax-objects down to top-wrap