From a0f6fc32a81267154ed71f8668a1ecd227e7b37b Mon Sep 17 00:00:00 2001 From: Aaron Marks Date: Fri, 3 Jan 2020 23:29:15 +1000 Subject: Add rudimentary Chez support for macro expansion --- scheme/chez/geiser/test.ss | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'scheme/chez/geiser/test.ss') diff --git a/scheme/chez/geiser/test.ss b/scheme/chez/geiser/test.ss index ac5503b..21f3396 100644 --- a/scheme/chez/geiser/test.ss +++ b/scheme/chez/geiser/test.ss @@ -1,13 +1,21 @@ (import (geiser) (chezscheme)) +(define-syntax assert-equal + (syntax-rules () + ((_ a b) + (if (equal? a b) + #t + (begin + (display (format "failed assertion `~a' == `~a'" a b)) + (assert (equal? a b))))))) (define-syntax get-result (syntax-rules () ((_ form) (with-output-to-string (lambda () - (geiser:eval #f form)))))) + (geiser:eval #f form)))))) (define-syntax do-test (syntax-rules () @@ -17,6 +25,29 @@ (get-result form) result))))) +(define-syntax do-test-macroexpand + (syntax-rules () + ((_ form result) + (assert + (equal? (geiser:macroexpand form) + result))))) + +(define-syntax test-or + (syntax-rules () + ((_ x) x) + ((_ x xs ...) + (if x + x + (test-or xs ...))))) + +(do-test-macroexpand + '(test-or 1) + '1) + +(do-test-macroexpand + '(test-or 1 2) + '(if 1 1 2)) + ;; (something-doesnot-exist) ;;=> Error: Exception: variable something-doesnot-exist is not bound (do-test -- cgit v1.2.3