1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-24 12:20:20 +02:00

Merge remote-tracking branch 'origin/stable-2.0'

This commit is contained in:
Mark H Weaver 2013-08-15 04:09:04 -04:00
commit 521c542199
4 changed files with 11 additions and 7 deletions

View file

@ -36,6 +36,7 @@ VM_TARGETS := system/vm/assembler.go system/vm/disassembler.go
$(VM_TARGETS): $(top_builddir)/libguile/vm-operations.h
ice-9/boot-9.go: ice-9/boot-9.scm ice-9/quasisyntax.scm ice-9/r6rs-libraries.scm
ice-9/match.go: ice-9/match.scm ice-9/match.upstream.scm
# We can compile these in any order, but it's fastest if we compile
# psyntax and boot-9 first, then the compiler itself, then the rest of

View file

@ -24,9 +24,9 @@
match-let*
match-letrec))
(define (error _ msg)
(define (error _ . args)
;; Error procedure for run-time "no matching pattern" errors.
(throw 'match-error "match" msg))
(apply throw 'match-error "match" args))
;; Support for record matching.

View file

@ -284,7 +284,10 @@
(syntax-rules (=>)
;; no more clauses, the match failed
((match-next v g+s)
(error 'match "no matching pattern"))
;; Here we wrap error within a double set of parentheses, so that
;; the call to 'error' won't be in tail position. This allows the
;; backtrace to show the source location of the failing match form.
((error 'match "no matching pattern" v)))
;; named failure continuation
((match-next v g+s (pat (=> failure) . body) . rest)
(let ((failure (lambda () (match-next v g+s . rest))))