From 6ac33a62be6e2b855049307ce797832a40f9d1de Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 8 Oct 2010 18:35:05 -0600 Subject: [PATCH] set `read-accept-lang' to #t by default, plus related adjustments including adding some uses of `with-module-read-parameterization' so that `read-accept-lang' is set right anyway; still, so many many places just set `read-accept-reader' to #t that making `read-accept-lang' #f by default looks like too big of an incompatibility --- collects/deinprogramm/deinprogramm-langs.rkt | 7 ++++--- collects/drracket/private/module-language.rkt | 3 ++- collects/drracket/private/tools-drs.rkt | 8 +++++--- collects/lang/htdp-langs.rkt | 10 ++++++---- collects/scribble/extract.rkt | 12 +++++++----- collects/scribblings/reference/eval.scrbl | 3 ++- collects/scribblings/reference/read.scrbl | 9 ++++----- collects/scribblings/reference/reader.scrbl | 3 +-- collects/setup/getinfo.rkt | 3 +-- collects/setup/scribble.rkt | 4 +++- collects/setup/setup-unit.rkt | 18 +++++++++--------- collects/wxme/wxme.rkt | 15 ++++----------- src/racket/src/fun.c | 1 + src/racket/src/read.c | 19 +++++++++++-------- src/racket/src/thread.c | 2 +- 15 files changed, 61 insertions(+), 56 deletions(-) diff --git a/collects/deinprogramm/deinprogramm-langs.rkt b/collects/deinprogramm/deinprogramm-langs.rkt index 5592789287..8758535a8c 100644 --- a/collects/deinprogramm/deinprogramm-langs.rkt +++ b/collects/deinprogramm/deinprogramm-langs.rkt @@ -1016,9 +1016,10 @@ (parameterize ([current-custodian nc]) (thread (lambda () (with-handlers ((exn? (lambda (x) (set! exn x)))) - (parameterize ([read-accept-reader #t] - [current-namespace (make-base-namespace)]) - (compile-file filename))))))]) + (parameterize ([current-namespace (make-base-namespace)]) + (with-module-reading-parameterization + (lambda () + (compile-file filename))))))))]) (thread (lambda () (thread-wait t) diff --git a/collects/drracket/private/module-language.rkt b/collects/drracket/private/module-language.rkt index 1aeac0f784..054dd60c06 100644 --- a/collects/drracket/private/module-language.rkt +++ b/collects/drracket/private/module-language.rkt @@ -378,7 +378,8 @@ (define/override (front-end/interaction port settings) (λ () - (let ([v (parameterize ([read-accept-reader #t]) + (let ([v (parameterize ([read-accept-reader #t] + [read-accept-lang #f]) (with-stack-checkpoint ((current-read-interaction) (object-name port) diff --git a/collects/drracket/private/tools-drs.rkt b/collects/drracket/private/tools-drs.rkt index aba85e6150..9169c31384 100644 --- a/collects/drracket/private/tools-drs.rkt +++ b/collects/drracket/private/tools-drs.rkt @@ -20,7 +20,8 @@ This file sets up the right lexical environment to invoke the tools that want to string-constants) (require (for-syntax racket/base racket/match - compiler/cm-accomplice)) + compiler/cm-accomplice + syntax/modread)) (import [prefix drscheme:frame: drracket:frame^] [prefix drscheme:unit: drracket:unit^] @@ -46,8 +47,9 @@ This file sets up the right lexical environment to invoke the tools that want to (define full-sexp (call-with-input-file tool-lib-src (λ (port) - (parameterize ([read-accept-reader #t]) - (read port))))) + (with-module-reading-parameterization + (lambda () + (read port)))))) (register-external-file tool-lib-src) diff --git a/collects/lang/htdp-langs.rkt b/collects/lang/htdp-langs.rkt index 7fd4335323..1404cbcfbb 100644 --- a/collects/lang/htdp-langs.rkt +++ b/collects/lang/htdp-langs.rkt @@ -556,7 +556,8 @@ (drscheme:rep:current-rep))) (define/override (front-end/interaction port settings) - (let ([t (super front-end/interaction port settings)] + (let ([t (parameterize ([read-accept-lang #f]) + (super front-end/interaction port settings))] [start? #t] [done? #f]) (λ () @@ -825,9 +826,10 @@ (parameterize ([current-custodian nc]) (thread (λ () (with-handlers ((exn? (λ (x) (set! exn x)))) - (parameterize ([read-accept-reader #t] - [current-namespace (make-base-namespace)]) - (compile-file filename))))))]) + (parameterize ([current-namespace (make-base-namespace)]) + (with-module-reading-parameterization + (lambda () + (compile-file filename))))))))]) (thread (λ () (thread-wait t) diff --git a/collects/scribble/extract.rkt b/collects/scribble/extract.rkt index 4f75ad4fb2..0f928571b5 100644 --- a/collects/scribble/extract.rkt +++ b/collects/scribble/extract.rkt @@ -7,6 +7,7 @@ scheme/path scheme/list syntax/path-spec + syntax/modread (for-syntax scheme/base))) (provide include-extracted @@ -35,14 +36,15 @@ n-path)]) (let ([s-exp (parameterize ([current-namespace (make-base-namespace)] - [read-accept-reader #t] [current-load-relative-directory (path-only path)]) (expand - (with-input-from-file path - (lambda () - (port-count-lines! (current-input-port)) - (read-syntax path)))))]) + (with-module-reading-parameterization + (lambda () + (with-input-from-file path + (lambda () + (port-count-lines! (current-input-port)) + (read-syntax path)))))))]) (syntax-case s-exp () [(mod name lang (mod-beg diff --git a/collects/scribblings/reference/eval.scrbl b/collects/scribblings/reference/eval.scrbl index ea6c565bce..bb233eb013 100644 --- a/collects/scribblings/reference/eval.scrbl +++ b/collects/scribblings/reference/eval.scrbl @@ -340,7 +340,8 @@ The default read interaction handler accepts @racket[_src] and @racket[_in] and returns @racketblock[ -(parameterize ([read-accept-reader #t]) +(parameterize ([read-accept-reader #t] + [read-accept-lang #f]) (read-syntax _src _in)) ]} diff --git a/collects/scribblings/reference/read.scrbl b/collects/scribblings/reference/read.scrbl index 432150e2ac..3e970e33bf 100644 --- a/collects/scribblings/reference/read.scrbl +++ b/collects/scribblings/reference/read.scrbl @@ -243,15 +243,14 @@ A parameter that controls parsing input with @litchar{`} or @defboolparam[read-accept-reader on?]{ A parameter that controls whether @litchar{#reader}, @litchar{#lang}, -and @litchar{#!} followed by a space are allowed for selecting a -parser. See @secref["parse-reader"] for more information.} +or @litchar{#!} are allowed for selecting a parser. See +@secref["parse-reader"] for more information.} @defboolparam[read-accept-lang on?]{ A parameter that (along with @racket[read-accept-reader] controls -whether @litchar{#lang} and @litchar{#!} followed by a space are -allowed for selecting a parser. See @secref["parse-reader"] for more -information.} +whether @litchar{#lang} and @litchar{#!} are allowed for selecting a +parser. See @secref["parse-reader"] for more information.} @defparam[current-reader-guard proc (any/c . -> . any)]{ diff --git a/collects/scribblings/reference/reader.scrbl b/collects/scribblings/reference/reader.scrbl index 8bc2ee73b8..39d9fe86f1 100644 --- a/collects/scribblings/reference/reader.scrbl +++ b/collects/scribblings/reference/reader.scrbl @@ -835,8 +835,7 @@ file, possibly after comment forms, to specify the syntax of a module. If the @racket[read-accept-reader] or @racket[read-accept-lang] @tech{parameter} is set to @racket[#f], then if the reader encounters -@litchar{#lang} or @litchar{#!} followed by a space, the -@exnraise[exn:fail:read]. +@litchar{#lang} or equivalent @litchar{#!}, the @exnraise[exn:fail:read]. @subsection{S-Expression Reader Language} diff --git a/collects/setup/getinfo.rkt b/collects/setup/getinfo.rkt index cd6541b350..c4ceea59f5 100644 --- a/collects/setup/getinfo.rkt +++ b/collects/setup/getinfo.rkt @@ -35,8 +35,7 @@ (apply error 'get-info (string-append "info file " fmt " in ~a") (append args (list file)))) (define (contents) - (parameterize ([read-accept-reader #t] - [current-reader-guard + (parameterize ([current-reader-guard (lambda (x) (if (eq? x 'setup/infotab/lang/reader) x diff --git a/collects/setup/scribble.rkt b/collects/setup/scribble.rkt index d45885a74f..1488cec166 100644 --- a/collects/setup/scribble.rkt +++ b/collects/setup/scribble.rkt @@ -638,7 +638,9 @@ (get-compiled-file-sha1 renderer-path) (get-file-sha1 css-path))]) (with-output-to-file stamp-file #:exists 'truncate/replace (lambda () (write data))) - (file-or-directory-modify-seconds stamp-file (max aux-time src-time)))) + (let ([m (max aux-time src-time)]) + (unless (equal? m +inf.0) + (file-or-directory-modify-seconds stamp-file m))))) info)))) (lambda () #f)) #f)))) diff --git a/collects/setup/setup-unit.rkt b/collects/setup/setup-unit.rkt index b8e1e93663..2c888a5e73 100644 --- a/collects/setup/setup-unit.rkt +++ b/collects/setup/setup-unit.rkt @@ -63,6 +63,15 @@ (build-path "compiled" (compile-mode)) (build-path "compiled"))) + (unless (make-user) + (current-library-collection-paths + (if (member main-collects-dir (current-library-collection-paths)) + (list main-collects-dir) + '()))) + + (current-library-collection-paths + (map simple-form-path (current-library-collection-paths))) + (define (setup-fprintf p task s . args) (let ([task (if task (string-append task ": ") "")]) (apply fprintf p (string-append name-str ": " task s "\n") args))) @@ -953,15 +962,6 @@ ;; setup-unit Body ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (unless (make-user) - (current-library-collection-paths - (if (member main-collects-dir (current-library-collection-paths)) - (list main-collects-dir) - '()))) - - (current-library-collection-paths - (map simple-form-path (current-library-collection-paths))) - (setup-printf "version" "~a [~a]" (version) (system-type 'gc)) (setup-printf "variants" "~a" (string-join (map symbol->string (available-mzscheme-variants)) ", ")) (setup-printf "main collects" "~a" (path->string main-collects-dir)) diff --git a/collects/wxme/wxme.rkt b/collects/wxme/wxme.rkt index 91599890e8..819e60b1b1 100644 --- a/collects/wxme/wxme.rkt +++ b/collects/wxme/wxme.rkt @@ -7,6 +7,7 @@ mzlib/contract mzlib/list scheme/gui/dynamic + syntax/modread "image.ss" "editor.ss" "private/compat.ss") @@ -578,17 +579,9 @@ ;; ---------------------------------------- (define plain-params - (parameterize ([current-readtable #f] - [read-accept-reader #f] - [read-case-sensitive #t] - [read-accept-graph #f] - [read-accept-box #f] - [read-accept-bar-quote #t] - [read-decimal-as-inexact #t] - [read-accept-dot #t] - [read-accept-quasiquote #f] - [read-accept-compiled #f]) - (current-parameterization))) + (with-module-reading-parameterization + (lambda () + (current-parameterization)))) (define (plain-read port) (call-with-parameterization diff --git a/src/racket/src/fun.c b/src/racket/src/fun.c index d1e4e2db9b..2efcb55a08 100644 --- a/src/racket/src/fun.c +++ b/src/racket/src/fun.c @@ -9564,6 +9564,7 @@ scheme_default_read_handler(int argc, Scheme_Object *argv[]) config = scheme_current_config(); config = scheme_extend_config(config, MZCONFIG_CAN_READ_READER, scheme_true); + config = scheme_extend_config(config, MZCONFIG_CAN_READ_LANG, scheme_false); scheme_push_continuation_frame(&cframe); scheme_install_config(config); diff --git a/src/racket/src/read.c b/src/racket/src/read.c index 8124c46350..525d368931 100644 --- a/src/racket/src/read.c +++ b/src/racket/src/read.c @@ -129,6 +129,8 @@ static int scheme_ellipses(mzchar* buffer, int length); #define mzSPAN(port, pos) () +#define NOT_ENABLED_str " not enabled in the current context" + #define isdigit_ascii(n) ((n >= '0') && (n <= '9')) #define scheme_isxdigit(n) (isdigit_ascii(n) || ((n >= 'a') && (n <= 'f')) || ((n >= 'A') && (n <= 'F'))) @@ -1429,7 +1431,7 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table * return cpld; } else { scheme_read_err(port, stxsrc, line, col, pos, 2, 0, indentation, - "read: #~ compiled expressions not currently enabled"); + "read: #~ compiled expressions" NOT_ENABLED_str); return NULL; } } @@ -1507,7 +1509,7 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table * return read_box(port, stxsrc, line, col, pos, ht, indentation, params); else { scheme_read_err(port, stxsrc, line, col, pos, 2, 0, indentation, - "read: #& expressions not currently enabled"); + "read: #& expressions" NOT_ENABLED_str); return NULL; } } @@ -1534,7 +1536,7 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table * if (!params->can_read_reader || !params->can_read_lang) { scheme_read_err(port, stxsrc, line, col, pos, 6, 0, indentation, - "read: #lang expressions not currently enabled"); + "read: #lang" NOT_ENABLED_str); return NULL; } v = read_lang(port, stxsrc, line, col, pos, get_info, ht, indentation, params, 0); @@ -1619,7 +1621,7 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table * if (!params->can_read_reader) { scheme_read_err(port, stxsrc, line, col, pos, 7, 0, indentation, - "read: #reader expressions not currently enabled"); + "read: #reader" NOT_ENABLED_str); return NULL; } @@ -1810,9 +1812,10 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table * goto start_over; } else if ((ch < 128) && is_lang_nonsep_char(ch)) { Scheme_Object *v; - if (!params->can_read_reader) { + if (!params->can_read_reader + || !params->can_read_lang) { scheme_read_err(port, stxsrc, line, col, pos, 2, 0, indentation, - "read: #! reader expressions not currently enabled"); + "read: #!" NOT_ENABLED_str); return NULL; } v = read_lang(port, stxsrc, line, col, pos, get_info, ht, indentation, params, ch); @@ -1903,7 +1906,7 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table * if (!params->can_read_graph) scheme_read_err(port, stxsrc, line, col, pos, SPAN(port, pos), 0, indentation, - "read: #..# expressions not currently enabled"); + "read: #..# expressions" NOT_ENABLED_str); if (digits > MAX_GRAPH_ID_DIGITS) scheme_read_err(port, stxsrc, line, col, pos, SPAN(port, pos), 0, indentation, @@ -1934,7 +1937,7 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table * if (!params->can_read_graph) scheme_read_err(port, stxsrc, line, col, pos, SPAN(port, pos), 0, indentation, - "read: #..= expressions not currently enabled"); + "read: #..= expressions" NOT_ENABLED_str); if (digits > MAX_GRAPH_ID_DIGITS) scheme_read_err(port, stxsrc, line, col, pos, SPAN(port, pos), 0, indentation, diff --git a/src/racket/src/thread.c b/src/racket/src/thread.c index 0df7c5f367..3698c91178 100644 --- a/src/racket/src/thread.c +++ b/src/racket/src/thread.c @@ -6789,7 +6789,7 @@ static void make_initial_config(Scheme_Thread *p) init_param(cells, paramz, MZCONFIG_CAN_READ_QUASI, scheme_true); init_param(cells, paramz, MZCONFIG_READ_DECIMAL_INEXACT, scheme_true); init_param(cells, paramz, MZCONFIG_CAN_READ_READER, scheme_false); - init_param(cells, paramz, MZCONFIG_CAN_READ_LANG, scheme_false); + init_param(cells, paramz, MZCONFIG_CAN_READ_LANG, scheme_true); init_param(cells, paramz, MZCONFIG_LOAD_DELAY_ENABLED, init_load_on_demand ? scheme_true : scheme_false); init_param(cells, paramz, MZCONFIG_DELAY_LOAD_INFO, scheme_false);