diff --git a/collects/drracket/private/module-language.rkt b/collects/drracket/private/module-language.rkt index 45be88b9af..5613234819 100644 --- a/collects/drracket/private/module-language.rkt +++ b/collects/drracket/private/module-language.rkt @@ -707,16 +707,17 @@ ;; check-filename-matches : path datum syntax -> void (define (check-filename-matches filename datum unexpanded-stx) - (let-values ([(base name dir?) (split-path filename)]) - (let ([expected (string->symbol - (path->string (path-replace-suffix name #"")))]) - (unless (equal? expected datum) - (raise-hopeless-syntax-error - (format - "module name doesn't match saved filename, got ~s and expected ~s" - datum - expected) - unexpanded-stx))))) + (when #f ; we don't check filename matching anymore + (let-values ([(base name dir?) (split-path filename)]) + (let ([expected (string->symbol + (path->string (path-replace-suffix name #"")))]) + (unless (equal? expected datum) + (raise-hopeless-syntax-error + (format + "module name doesn't match saved filename, got ~s and expected ~s" + datum + expected) + unexpanded-stx)))))) (define module-language-put-file-mixin (mixin (text:basic<%>) () diff --git a/collects/scribblings/reference/eval.scrbl b/collects/scribblings/reference/eval.scrbl index da32d14f4a..3178d46f5a 100644 --- a/collects/scribblings/reference/eval.scrbl +++ b/collects/scribblings/reference/eval.scrbl @@ -126,10 +126,13 @@ If the second argument to the load handler is a symbol, then: (read-accept-reader #t) ]} - @item{If the read result is not a @racketidfont{module} form with the - expected name, or if a second @racket[read-syntax] does not - produce an end-of-file, then the @exnraise[exn:fail] without - evaluating the form that was read from the file.} + @item{If the read result is not a @racketidfont{module} form, or if a + second @racket[read-syntax] does not produce an end-of-file, + then the @exnraise[exn:fail] without evaluating the form that + was read from the file. (In previous versions, the module + declaration was checked to match the name given as the second + argument to the load handler, but this check is no longer + performed.)} @item{The @tech{lexical information} of the initial @racketidfont{module} identifier is enriched with a binding for diff --git a/collects/syntax/modread.rkt b/collects/syntax/modread.rkt index b03e539861..18eeebf0d3 100644 --- a/collects/syntax/modread.rkt +++ b/collects/syntax/modread.rkt @@ -33,7 +33,8 @@ "expected a `module' declaration for `~a' in ~s, but found end-of-file" expected-module filename))] [(compiled-module-expression? (syntax-e exp)) - (if (eq? (module-compiled-name (syntax-e exp)) expected-module) + (if (or #t ; we don't check the name anymore + (eq? (module-compiled-name (syntax-e exp)) expected-module)) ;; It's fine: exp ;; Wrong name: @@ -47,9 +48,10 @@ [_else #f])) ;; It's ok; need to install a specific `module' binding: (with-syntax ([(mod nm . _) exp]) - (unless (eq? (syntax-e #'nm) expected-module) - (raise-wrong-module-name filename expected-module - (syntax-e #'nm))) + (when #f ; we don't check the name anymore + (unless (eq? (syntax-e #'nm) expected-module) + (raise-wrong-module-name filename expected-module + (syntax-e #'nm)))) (datum->syntax-object exp (cons (namespace-module-identifier) (cdr (syntax-e exp))) diff --git a/collects/syntax/scribblings/modread.scrbl b/collects/syntax/scribblings/modread.scrbl index ed96d290e5..64efcd3a7c 100644 --- a/collects/syntax/scribblings/modread.scrbl +++ b/collects/syntax/scribblings/modread.scrbl @@ -17,10 +17,14 @@ values.} (or/c syntax? false/c)]{ Inspects @scheme[stx] to check whether evaluating it will declare a -module named @scheme[expected-module-sym]---at least if @scheme[module] is bound -in the top-level to Racket's @scheme[module]. The syntax object @scheme[stx] can -contain a compiled expression. Also, @scheme[stx] can be an end-of-file, on -the grounds that @scheme[read-syntax] can produce an end-of-file. +module---at least if @scheme[module] is bound in the top-level to +Racket's @scheme[module]. The syntax object @scheme[stx] can contain a +compiled expression. Also, @scheme[stx] can be an end-of-file, on the +grounds that @scheme[read-syntax] can produce an end-of-file. + +The @scheme[expected-module-sym] argument is currently ignored. In +previous versions, the module form @scheme[stx] was obliged to declare +a module who name matched @scheme[expected-module-sym]. If @scheme[stx] can declare a module in an appropriate top-level, then the @scheme[check-module-form] procedure returns a syntax object that diff --git a/src/racket/src/portfun.c b/src/racket/src/portfun.c index 45af607608..200182e712 100644 --- a/src/racket/src/portfun.c +++ b/src/racket/src/portfun.c @@ -4085,7 +4085,7 @@ static Scheme_Object *do_load_handler(void *data) Scheme_Config *config = lhd->config; Scheme_Object *last_val = scheme_void, *obj, **save_array = NULL; Scheme_Env *genv; - int save_count = 0, got_one = 0, as_module; + int save_count = 0, got_one = 0, as_module, check_module_name = 0; while ((obj = scheme_internal_read(port, lhd->stxsrc, 1, 0, 0, 0, 0, -1, NULL, NULL, NULL, lhd->delay_load_info)) @@ -4108,10 +4108,12 @@ static Scheme_Object *do_load_handler(void *data) m = scheme_extract_compiled_module(SCHEME_STX_VAL(d)); if (m) { - if (!SAME_OBJ(SCHEME_PTR_VAL(m->modname), lhd->expected_module)) { - other = m->modname; - d = NULL; - } + if (check_module_name) { + if (!SAME_OBJ(SCHEME_PTR_VAL(m->modname), lhd->expected_module)) { + other = m->modname; + d = NULL; + } + } } else { if (!SCHEME_STX_PAIRP(d)) d = NULL; @@ -4126,8 +4128,10 @@ static Scheme_Object *do_load_handler(void *data) else { a = SCHEME_STX_CAR(d); other = SCHEME_STX_VAL(a); - if (!SAME_OBJ(other, lhd->expected_module)) - d = NULL; + if (check_module_name) { + if (!SAME_OBJ(other, lhd->expected_module)) + d = NULL; + } } } }