From ecd2234d5622c939c84f292e83e645acb29a3d49 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 2 Jan 2021 16:43:09 -0700 Subject: [PATCH] syntax/module-reader: make language name after meta-reader `syntax-original?` Thanks to Robby for the test. --- .../tests/syntax/meta-reader-original.rkt | 13 +++++++++++++ racket/collects/syntax/module-reader.rkt | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 pkgs/racket-test/tests/syntax/meta-reader-original.rkt diff --git a/pkgs/racket-test/tests/syntax/meta-reader-original.rkt b/pkgs/racket-test/tests/syntax/meta-reader-original.rkt new file mode 100644 index 0000000000..283f548449 --- /dev/null +++ b/pkgs/racket-test/tests/syntax/meta-reader-original.rkt @@ -0,0 +1,13 @@ +#lang racket/base +(define p (open-input-string "#lang at-exp racket/base\n")) +(port-count-lines! p) +(define stx + (parameterize ([read-accept-reader #t] + [current-namespace (make-base-namespace)]) + (expand (read-syntax "x.rkt" p)))) +(define r/b + (syntax-case stx () + [(_1 _2 r/b _3 ...) #'r/b])) +(unless (syntax-original? r/b) + (error "module name after `at-exp` is not `syntax-original?`")) + diff --git a/racket/collects/syntax/module-reader.rkt b/racket/collects/syntax/module-reader.rkt index 8d16631d86..6b6a1630ea 100644 --- a/racket/collects/syntax/module-reader.rkt +++ b/racket/collects/syntax/module-reader.rkt @@ -260,7 +260,11 @@ (datum->syntax #f guarded-spec (vector src spec-line spec-col spec-pos - (max 0 (- spec-end-pos spec-pos)))) + (max 0 (- spec-end-pos spec-pos))) + ;; get syntax with `syntax-original?` property: + (call-with-default-reading-parameterization + (lambda () + (read-syntax 'orig (open-input-bytes #"x"))))) guarded-spec)) (loop (cdr specs)))) (bad spec #f))))))