summaryrefslogtreecommitdiff
path: root/test-suite/tests/exceptions.test
diff options
context:
space:
mode:
Diffstat (limited to 'test-suite/tests/exceptions.test')
-rw-r--r--test-suite/tests/exceptions.test26
1 files changed, 14 insertions, 12 deletions
diff --git a/test-suite/tests/exceptions.test b/test-suite/tests/exceptions.test
index bcaa282e5..a839b68de 100644
--- a/test-suite/tests/exceptions.test
+++ b/test-suite/tests/exceptions.test
@@ -18,18 +18,20 @@
(use-modules (test-suite lib))
-(define-macro (throw-test title result . exprs)
- `(pass-if ,title
- (equal? ,result
- (letrec ((stack '())
- (push (lambda (val)
- (set! stack (cons val stack)))))
- (begin ,@exprs)
- ;;(display ,title)
- ;;(display ": ")
- ;;(write (reverse stack))
- ;;(newline)
- (reverse stack)))))
+(define-syntax-parameter push
+ (lambda (stx)
+ (syntax-violation 'push "push used outside of throw-test" stx)))
+
+(define-syntax-rule (throw-test title result expr ...)
+ (pass-if title
+ (equal? result
+ (let ((stack '()))
+ (syntax-parameterize ((push (syntax-rules ()
+ ((push val)
+ (set! stack (cons val stack))))))
+ expr ...
+ ;;(format #t "~a: ~s~%" title (reverse stack))
+ (reverse stack))))))
(with-test-prefix "throw/catch"