diff --git a/collects/compiler/decompile.rkt b/collects/compiler/decompile.rkt index f358015621..67bdf9beb2 100644 --- a/collects/compiler/decompile.rkt +++ b/collects/compiler/decompile.rkt @@ -195,7 +195,7 @@ (match expr [(struct toplevel (depth pos const? ready?)) (decompile-tl expr globs stack closed #f)] - [(struct varref (tl)) + [(struct varref (tl dummy)) `(#%variable-reference ,(decompile-tl tl globs stack closed #t))] [(struct topsyntax (depth pos midpt)) (list-ref/protect (glob-desc-vars globs) (+ midpt pos) 'topsyntax)] diff --git a/collects/compiler/demodularizer/gc-toplevels.rkt b/collects/compiler/demodularizer/gc-toplevels.rkt index e03ad418a7..765513b3cb 100644 --- a/collects/compiler/demodularizer/gc-toplevels.rkt +++ b/collects/compiler/demodularizer/gc-toplevels.rkt @@ -120,8 +120,9 @@ [(struct beg0 (seq)) (for-each (lambda (f) (build-graph! lhs f)) seq)] - [(struct varref (tl)) - (build-graph! lhs tl)] + [(struct varref (tl dummy)) + (build-graph! lhs tl) + (build-graph! lhs dummy)] [(and f (struct assign (id rhs undef-ok?))) (build-graph! lhs id) (build-graph! lhs rhs)] @@ -252,8 +253,8 @@ (update body))] [(struct beg0 (seq)) (make-beg0 (map update seq))] - [(struct varref (tl)) - (make-varref (update tl))] + [(struct varref (tl dummy)) + (make-varref (update tl) (update dummy))] [(and f (struct assign (id rhs undef-ok?))) (struct-copy assign f [id (update id)] diff --git a/collects/compiler/demodularizer/update-toplevels.rkt b/collects/compiler/demodularizer/update-toplevels.rkt index e3cdda6110..90a7b8f2c2 100644 --- a/collects/compiler/demodularizer/update-toplevels.rkt +++ b/collects/compiler/demodularizer/update-toplevels.rkt @@ -68,8 +68,8 @@ (update body))] [(struct beg0 (seq)) (make-beg0 (map update seq))] - [(struct varref (tl)) - (make-varref (update tl))] + [(struct varref (tl dummy)) + (make-varref (update tl) (update dummy))] [(and f (struct assign (id rhs undef-ok?))) (struct-copy assign f [id (update id)] diff --git a/collects/compiler/zo-marshal.rkt b/collects/compiler/zo-marshal.rkt index ced39b755c..a626ac7a7a 100644 --- a/collects/compiler/zo-marshal.rkt +++ b/collects/compiler/zo-marshal.rkt @@ -671,9 +671,9 @@ (protect-quote val) (protect-quote body)) out)] - [(struct varref (expr)) + [(struct varref (expr dummy)) (out-marshaled varref-form-type-num - expr + (cons expr dummy) out)] [(protected-symref v) (out-anything ((out-shared-index out) v #:error? #t) out)] diff --git a/collects/compiler/zo-parse.rkt b/collects/compiler/zo-parse.rkt index a0f156aeac..ac27f36b56 100644 --- a/collects/compiler/zo-parse.rkt +++ b/collects/compiler/zo-parse.rkt @@ -207,7 +207,7 @@ (define (read-require v) (make-req (cdr v) (car v))) (define (read-#%variable-ref v) - (make-varref v)) + (make-varref (car v) (cdr v))) (define (read-apply-values v) (make-apply-values (car v) (cdr v))) (define (read-splice v) diff --git a/collects/compiler/zo-structs.rkt b/collects/compiler/zo-structs.rkt index 2d0e920177..6d0b29574c 100644 --- a/collects/compiler/zo-structs.rkt +++ b/collects/compiler/zo-structs.rkt @@ -29,7 +29,7 @@ [struct id ([field-id field-contract] ...)]))) (define-struct zo () #:prefab) -(provide zo?) +(provide (struct-out zo)) (define-syntax define-form-struct (syntax-rules () @@ -167,7 +167,7 @@ [body (or/c expr? seq? any/c)])) ; `with-continuation-mark' (define-form-struct (beg0 expr) ([seq (listof (or/c expr? seq? any/c))])) ; `begin0' (define-form-struct (splice form) ([forms (listof (or/c form? any/c))])) ; top-level `begin' -(define-form-struct (varref expr) ([toplevel toplevel?])) ; `#%variable-reference' +(define-form-struct (varref expr) ([toplevel toplevel?] [dummy toplevel?])) ; `#%variable-reference' (define-form-struct (assign expr) ([id toplevel?] [rhs (or/c expr? seq? any/c)] [undef-ok? boolean?])) ; top-level or module-level set! (define-form-struct (apply-values expr) ([proc (or/c expr? seq? any/c)] [args-expr (or/c expr? seq? any/c)])) ; `(call-with-values (lambda () ,args-expr) ,proc) (define-form-struct (primval expr) ([id exact-nonnegative-integer?])) ; direct preference to a kernel primitive