From ba98a1848bfc42a3efbc3ba7461a201c15859958 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georges=20Dup=C3=A9ron?= Date: Sun, 1 Jan 2017 21:49:51 +0100 Subject: [PATCH] Included patched version of https://github.com/AlexKnauth/hygienic-reader-extension/blob/master/hygienic-reader-extension/extend-reader.rkt --- aful/reader.rkt | 1 + ...r-extension--extend-reader--unhygienic.rkt | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 aful/unhygienic/hygienic-reader-extension--extend-reader--unhygienic.rkt diff --git a/aful/reader.rkt b/aful/reader.rkt index 2b52b62..f600189 100644 --- a/aful/reader.rkt +++ b/aful/reader.rkt @@ -19,6 +19,7 @@ racket/function syntax/srcloc hygienic-reader-extension/extend-reader + "unhygienic/hygienic-reader-extension--extend-reader--unhygienic.rkt" (for-meta -10 racket/base) (for-meta -9 racket/base) (for-meta -8 racket/base) diff --git a/aful/unhygienic/hygienic-reader-extension--extend-reader--unhygienic.rkt b/aful/unhygienic/hygienic-reader-extension--extend-reader--unhygienic.rkt new file mode 100644 index 0000000..43a6d92 --- /dev/null +++ b/aful/unhygienic/hygienic-reader-extension--extend-reader--unhygienic.rkt @@ -0,0 +1,27 @@ +#lang racket + +;; Copied and adjusted from +;; https://github.com/AlexKnauth/hygienic-reader-extension +;; /blob/master/hygienic-reader-extension/extend-reader.rkt + +(provide extend-reader-unhygienic) + +;; extend-reader : (-> (-> A ... Any) +;; (-> Readtable #:outer-scope (-> Syntax Syntax) Readtable) +;; (-> A ... Any)) +(define (extend-reader-unhygienic proc extend-readtable #:hygiene? [hygiene? #t]) + (lambda args + (define orig-readtable (current-readtable)) + (define outer-scope (make-syntax-introducer/use-site)) + (parameterize ([current-readtable (extend-readtable orig-readtable #:outer-scope outer-scope)]) + (define stx (apply proc args)) + (if (and (syntax? stx) hygiene?) + (outer-scope stx) + stx)))) + +;; make-syntax-introducer/use-site : (-> (-> Syntax Syntax)) +(define (make-syntax-introducer/use-site) + (cond [(procedure-arity-includes? make-syntax-introducer 1) + (make-syntax-introducer #t)] + [else + (make-syntax-introducer)])) \ No newline at end of file