diff options
author | Andy Wingo <wingo@pobox.com> | 2011-11-07 11:47:26 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2011-11-07 11:48:04 +0100 |
commit | adf91e1cc5587a62fa77b07d512a5d673492446f (patch) | |
tree | 53e2a44226f4c5ca9cde252a0ad6965b53e5db43 | |
parent | de41e56492666801078e73860a358e1c63cbc8c2 (diff) | |
download | guile-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.test | 38 |
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" |