summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2011-11-07 11:47:26 +0100
committerAndy Wingo <wingo@pobox.com>2011-11-07 11:48:04 +0100
commitadf91e1cc5587a62fa77b07d512a5d673492446f (patch)
tree53e2a44226f4c5ca9cde252a0ad6965b53e5db43
parentde41e56492666801078e73860a358e1c63cbc8c2 (diff)
downloadguile-adf91e1cc5587a62fa77b07d512a5d673492446f.tar.gz
add tests for hygienic name introduction
* test-suite/tests/syntax.test ("top-level define"): Add tests for hygienic introduction of names.
-rw-r--r--test-suite/tests/syntax.test38
1 files changed, 37 insertions, 1 deletions
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"