mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-24 20:30:28 +02:00
allow case-lambda expressions with no clauses
* module/ice-9/psyntax-pp.scm: * module/ice-9/psyntax.scm (case-lambda, case-lambda*): Allow 0 clauses. * module/language/scheme/decompile-tree-il.scm (do-decompile): (choose-output-names): * module/language/tree-il.scm (unparse-tree-il): (tree-il-fold, post-order!, pre-order!): * module/language/tree-il/effects.scm (make-effects-analyzer): * module/language/tree-il/cse.scm (cse): * module/language/tree-il/debug.scm (verify-tree-il): * module/language/tree-il/peval.scm (peval): Allow for lambda-body to be #f. * libguile/memoize.c (memoize): * module/language/tree-il/canonicalize.scm (canonicalize!): Give a body to empty case-lambda before evaluating it or compiling it, respectively. * test-suite/tests/optargs.test ("case-lambda", "case-lambda*"): Add tests.
This commit is contained in:
parent
9ddf06dcee
commit
19113f1ca7
11 changed files with 120 additions and 58 deletions
|
@ -221,7 +221,20 @@
|
|||
(equal? (transmogrify quote)
|
||||
10)))
|
||||
|
||||
(with-test-prefix/c&e "case-lambda"
|
||||
(pass-if-exception "no clauses, no args" exception:wrong-num-args
|
||||
((case-lambda)))
|
||||
|
||||
(pass-if-exception "no clauses, args" exception:wrong-num-args
|
||||
((case-lambda) 1)))
|
||||
|
||||
(with-test-prefix/c&e "case-lambda*"
|
||||
(pass-if-exception "no clauses, no args" exception:wrong-num-args
|
||||
((case-lambda*)))
|
||||
|
||||
(pass-if-exception "no clauses, args" exception:wrong-num-args
|
||||
((case-lambda*) 1))
|
||||
|
||||
(pass-if "unambiguous"
|
||||
((case-lambda*
|
||||
((a b) #t)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue