From 130216c2b85077aef893f7d0828d69394bceece7 Mon Sep 17 00:00:00 2001 From: AlexKnauth Date: Thu, 16 Apr 2015 17:36:38 -0400 Subject: [PATCH] more hygiene! --- afl/reader.rkt | 9 +++++++-- afl/tests/test-afl-racket.rkt | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/afl/reader.rkt b/afl/reader.rkt index 0a9e43a..922eefc 100644 --- a/afl/reader.rkt +++ b/afl/reader.rkt @@ -114,12 +114,17 @@ (parameterize ([current-arg-string arg-str]) (define (string->id stx . strs) (datum->syntax stx (string->symbol (apply string-append strs)) stx)) - (with-syntax ([args (parse-args stx #:arg-str arg-str)] + (with-syntax ([lambda ((make-syntax-introducer) #'lambda)] + [define-syntax ((make-syntax-introducer) #'define-syntax)] + [app ((make-syntax-introducer) #'#%app)] + [make-rename-transformer ((make-syntax-introducer) #'make-rename-transformer)] + [syntax2 ((make-syntax-introducer) #'syntax)] + [args (parse-args stx #:arg-str arg-str)] [% (string->id #'args arg-str)] [%1 (string->id #'args arg-str "1")] [body stx]) #'(lambda args - (define-syntax % (make-rename-transformer #'%1)) + (define-syntax % (app make-rename-transformer (syntax2 %1))) body)))) (module+ test diff --git a/afl/tests/test-afl-racket.rkt b/afl/tests/test-afl-racket.rkt index 9b964dc..79038d3 100644 --- a/afl/tests/test-afl-racket.rkt +++ b/afl/tests/test-afl-racket.rkt @@ -14,4 +14,7 @@ "I am x") (check-equal? (#λ(begin (set! % "%") %1) "%1") "%") + (check-equal? (let ([lambda "not lambda"] [define-syntax "not define-syntax"]) + (#λ% 3)) + 3) )