commit c913d14d7c659c5acdacc3e8818bd0ff4b518e80
parent e4d1bbc473ff4417fd1a3c7cd4248fa5d3671909
Author: Ryan Culpepper <ryanc@racket-lang.org>
Date: Thu, 14 Dec 2017 12:04:38 +0100
syntax/parse: use lazy-require-syntax
Diffstat:
2 files changed, 15 insertions(+), 65 deletions(-)
diff --git a/parse/private/parse-aux.rkt b/parse/private/parse-aux.rkt
@@ -1,21 +0,0 @@
-#lang racket/base
-(require (for-template "parse.rkt"))
-(provide id:define-syntax-class
- id:define-splicing-syntax-class
- id:define-integrable-syntax-class
- id:syntax-parse
- id:syntax-parser
- id:define/syntax-parse
- id:syntax-parser/template
- id:parser/rhs
- id:define-eh-alternative-set)
-
-(define (id:define-syntax-class) #'define-syntax-class)
-(define (id:define-splicing-syntax-class) #'define-splicing-syntax-class)
-(define (id:define-integrable-syntax-class) #'define-integrable-syntax-class)
-(define (id:syntax-parse) #'syntax-parse)
-(define (id:syntax-parser) #'syntax-parser)
-(define (id:define/syntax-parse) #'define/syntax-parse)
-(define (id:syntax-parser/template) #'syntax-parser/template)
-(define (id:parser/rhs) #'parser/rhs)
-(define (id:define-eh-alternative-set) #'define-eh-alternative-set)
diff --git a/parse/private/sc.rkt b/parse/private/sc.rkt
@@ -1,6 +1,5 @@
#lang racket/base
-(require (for-syntax racket/base
- racket/lazy-require)
+(require racket/lazy-require
syntax/parse/private/keywords)
;; keep and keep as abs. path -- lazy-loaded macros produce references to this
@@ -8,25 +7,20 @@
;; (so for consistency etc, require absolutely from all modules)
(require stxparse-info/parse/private/residual)
-(begin-for-syntax
- (lazy-require
- ;; load macro transformers lazily via identifier
- ;; This module path must also be absolute (not sure why,
- ;; but it definitely breaks on relative module path).
- [stxparse-info/parse/private/parse-aux
- (id:define-syntax-class
- id:define-splicing-syntax-class
- id:define-integrable-syntax-class
- id:syntax-parse
- id:syntax-parser
- id:define/syntax-parse
- id:syntax-parser/template
- id:parser/rhs
- id:define-eh-alternative-set)]))
-;; FIXME: workaround for phase>0 bug in racket/runtime-path (and thus lazy-require)
-;; Without this, dependencies don't get collected.
-(require racket/runtime-path (for-meta 2 '#%kernel))
-(define-runtime-module-path-index _unused_ 'stxparse-info/parse/private/parse-aux)
+(lazy-require-syntax
+ ;; load macro transformers lazily via identifier
+ ;; This module path must also be absolute (not sure why,
+ ;; but it definitely breaks on relative module path).
+ [syntax/parse/private/parse
+ (define-syntax-class
+ define-splicing-syntax-class
+ define-integrable-syntax-class
+ syntax-parse
+ syntax-parser
+ define/syntax-parse
+ syntax-parser/template
+ parser/rhs
+ define-eh-alternative-set)])
(provide define-syntax-class
define-splicing-syntax-class
@@ -45,26 +39,3 @@
syntax-parser/template
parser/rhs
define-eh-alternative-set)
-
-(define-syntaxes (define-syntax-class
- define-splicing-syntax-class
- define-integrable-syntax-class
- syntax-parse
- syntax-parser
- define/syntax-parse
- syntax-parser/template
- parser/rhs
- define-eh-alternative-set)
- (let ([tx (lambda (get-id)
- (lambda (stx)
- ((syntax-local-value (get-id)) stx)))])
- (values
- (tx id:define-syntax-class)
- (tx id:define-splicing-syntax-class)
- (tx id:define-integrable-syntax-class)
- (tx id:syntax-parse)
- (tx id:syntax-parser)
- (tx id:define/syntax-parse)
- (tx id:syntax-parser/template)
- (tx id:parser/rhs)
- (tx id:define-eh-alternative-set))))