diff options
author | Andy Wingo <wingo@pobox.com> | 2013-11-08 11:41:28 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2013-11-08 11:41:28 +0100 |
commit | b0ed216b6f17f9f63fbf1d9542c0722241317837 (patch) | |
tree | d71f5f016c5c7acb20901a09b27e5e09554aa2d9 /module/system/vm/assembler.scm | |
parent | f90c0554640c6e0c28ec01ed597a3b78b47bdd29 (diff) | |
download | guile-b0ed216b6f17f9f63fbf1d9542c0722241317837.tar.gz |
Fix case-lambda* dispatching to agree with manual.
* module/system/vm/assembler.scm (kw-prelude): Emit br-if-npos-gt as
appropriate.
Diffstat (limited to 'module/system/vm/assembler.scm')
-rw-r--r-- | module/system/vm/assembler.scm | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm index 7020487fd..58c00ef99 100644 --- a/module/system/vm/assembler.scm +++ b/module/system/vm/assembler.scm @@ -791,7 +791,10 @@ returned instead." (define-macro-assembler (kw-prelude asm nreq nopt rest? kw-indices allow-other-keys? nlocals alternate) (if alternate - (emit-br-if-nargs-lt asm nreq alternate) + (begin + (emit-br-if-nargs-lt asm nreq alternate) + (unless rest? + (emit-br-if-npos-gt asm nreq (+ nreq nopt) alternate))) (emit-assert-nargs-ge asm nreq)) (let ((ntotal (fold (lambda (kw ntotal) (match kw |