From a2d06c2cd5868b58606ccb422963330cdc8526c4 Mon Sep 17 00:00:00 2001 From: AlexKnauth Date: Wed, 22 Apr 2015 22:17:44 -0400 Subject: [PATCH] at-exp: make language-info compose with other languages --- pkgs/at-exp-lib/at-exp/lang/language-info.rkt | 14 ++++++++++++-- pkgs/at-exp-lib/at-exp/lang/reader.rkt | 7 ++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/pkgs/at-exp-lib/at-exp/lang/language-info.rkt b/pkgs/at-exp-lib/at-exp/lang/language-info.rkt index bf8c1f628d..8ed99eae07 100644 --- a/pkgs/at-exp-lib/at-exp/lang/language-info.rkt +++ b/pkgs/at-exp-lib/at-exp/lang/language-info.rkt @@ -2,9 +2,19 @@ (provide get-language-info) +(require racket/match) + (define (get-language-info data) + (define other-get-info + (match data + [(vector mod sym data2) + ((dynamic-require mod sym) data2)] + [_ (lambda (key default) default)])) (lambda (key default) (case key [(configure-runtime) - '(#[at-exp/lang/runtime-config configure #f])] - [else default]))) + (define config-vec '#[at-exp/lang/runtime-config configure #f]) + (define other-config (other-get-info key default)) + (cond [(list? other-config) (cons config-vec other-config)] + [else (list config-vec)])] + [else (other-get-info key default)]))) diff --git a/pkgs/at-exp-lib/at-exp/lang/reader.rkt b/pkgs/at-exp-lib/at-exp/lang/reader.rkt index 7fbb71698e..9fae49021c 100644 --- a/pkgs/at-exp-lib/at-exp/lang/reader.rkt +++ b/pkgs/at-exp-lib/at-exp/lang/reader.rkt @@ -29,9 +29,10 @@ (lambda (orig-read-syntax) (define read-syntax (wrap-reader orig-read-syntax)) (lambda args - (syntax-property (apply read-syntax args) - 'module-language - '#(at-exp/lang/language-info get-language-info #f)))) + (define stx (apply read-syntax args)) + (define old-prop (syntax-property stx 'module-language)) + (define new-prop `#(at-exp/lang/language-info get-language-info ,old-prop)) + (syntax-property stx 'module-language new-prop))) (lambda (proc) (lambda (key defval) (define (fallback) (if proc (proc key defval) defval))