From a7f544a4b8b07f245335fad858bc298ae7aa59f6 Mon Sep 17 00:00:00 2001 From: Abdulaziz Ghuloum Date: Mon, 27 Apr 2009 10:15:35 +0300 Subject: [PATCH] Added a test (thanks to Michele Simionato) that exhibits the previous bug. --- scheme/last-revision | 2 +- scheme/tests/repl.ss | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/scheme/last-revision b/scheme/last-revision index 77de926..ca91012 100644 --- a/scheme/last-revision +++ b/scheme/last-revision @@ -1 +1 @@ -1767 +1768 diff --git a/scheme/tests/repl.ss b/scheme/tests/repl.ss index e4e5289..6f6cc21 100644 --- a/scheme/tests/repl.ss +++ b/scheme/tests/repl.ss @@ -101,5 +101,42 @@ x) e)) + ;;; test from Michele Simionato, reported in + ;;; http://groups.google.com/group/ikarus-users/msg/218f85234ce82341 + (let ([e (new-interaction-environment)]) + (eval + '(library (test-sweet-x) + (export syntax-match def-syntax) + (import (rnrs)) + (define-syntax syntax-match + (lambda (y) + (syntax-case y (sub) + ((syntax-match x (literal ...) (sub patt skel) ...) + (for-all identifier? #'(literal ...)) + #'(syntax-case x (literal ...) + (patt skel) + ...)) + ))) + (define-syntax def-syntax + (lambda (y) + (syntax-case y () + ((def-syntax name transformer) + #'(define-syntax name + (lambda (x) + (syntax-case x () + ((name ) #''(... (... transformer))) + (x (transformer #'x)))))))))) + e) - ))) + (eval '(import (test-sweet-x)) e) + + (eval '(def-syntax macro + (lambda (y) (syntax-match y () (sub (ctx x) #'x)))) + e) + (assert + (equal? (eval '(macro ) e) + '(lambda (y) (syntax-match y () (sub (ctx x) #'x)))))) + + + + ))