From c913d14d7c659c5acdacc3e8818bd0ff4b518e80 Mon Sep 17 00:00:00 2001 From: Ryan Culpepper Date: Thu, 14 Dec 2017 12:04:38 +0100 Subject: [PATCH] syntax/parse: use lazy-require-syntax --- parse/private/parse-aux.rkt | 21 ------------- parse/private/sc.rkt | 59 ++++++++++--------------------------- 2 files changed, 15 insertions(+), 65 deletions(-) delete mode 100644 parse/private/parse-aux.rkt diff --git a/parse/private/parse-aux.rkt b/parse/private/parse-aux.rkt deleted file mode 100644 index 2c0b2d5..0000000 --- a/parse/private/parse-aux.rkt +++ /dev/null @@ -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 index 2612a22..e3a8b67 100644 --- 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))))