From adf91e1cc5587a62fa77b07d512a5d673492446f Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Mon, 7 Nov 2011 11:47:26 +0100 Subject: [PATCH] add tests for hygienic name introduction * test-suite/tests/syntax.test ("top-level define"): Add tests for hygienic introduction of names. --- test-suite/tests/syntax.test | 38 +++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/test-suite/tests/syntax.test b/test-suite/tests/syntax.test index e99bdfb27..f53d196d5 100644 --- a/test-suite/tests/syntax.test +++ b/test-suite/tests/syntax.test @@ -825,7 +825,43 @@ (define a (@@ (top-level-define/module-scoping-3) a)) a) (current-module)) - 10))) + 10)) + + (pass-if "module scoping, introduced names" + (equal? + (eval + '(begin + (define-module (top-level-define/module-scoping-5) + #:export (define-constant)) + (define-syntax-rule (define-constant name val) + (begin + (define t val) + (define (name) t))) + (define-module (top-level-define/module-scoping-6) + #:use-module (top-level-define/module-scoping-5)) + (define-constant foo 10) + (define-constant bar 20) + (foo)) + (current-module)) + 10)) + + (pass-if "module scoping, duplicate introduced name" + (equal? + (eval + '(begin + (define-module (top-level-define/module-scoping-7) + #:export (define-constant)) + (define-syntax-rule (define-constant name val) + (begin + (define t val) + (define (name) t))) + (define-module (top-level-define/module-scoping-8) + #:use-module (top-level-define/module-scoping-7)) + (define-constant foo 10) + (define-constant foo 20) + (foo)) + (current-module)) + 20))) (with-test-prefix "internal define"