tests/gpgscm: Make exception value available.
authorJustus Winter <justus@g10code.com>
Mon, 22 Feb 2016 15:36:12 +0000 (16:36 +0100)
committerJustus Winter <justus@g10code.com>
Fri, 17 Jun 2016 09:38:00 +0000 (11:38 +0200)
* tests/gpgscm/init.scm (throw): Hand exception value to the handler.
(catch): And bind it to *error*.

tests/gpgscm/init.scm

index 630f27a..0889366 100644 (file)
 ;              (if-something goes-wrong)
 ;              (with-these calls))
 ;
-;    "Catch" establishes a scope spanning multiple call-frames
-;    until another "catch" is encountered.
+;    "Catch" establishes a scope spanning multiple call-frames until
+;    another "catch" is encountered.  Within the recovery expression
+;    the thrown exception is bound to *error*.
 ;
 ;    Exceptions are thrown with:
 ;
 
 (define (throw . x)
      (if (more-handlers?)
-          (apply (pop-handler))
+          (apply (pop-handler) x)
           (apply error x)))
 
 (macro (catch form)
      (let ((label (gensym)))
           `(call/cc (lambda (exit)
-               (push-handler (lambda () (exit ,(cadr form))))
+               (push-handler (lambda (*error*) (exit ,(cadr form))))
                (let ((,label (begin ,@(cddr form))))
                     (pop-handler)
                     ,label)))))