From 6752534da8d538e3bbc3032d4af1a32bb01abc02 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 18 Mar 2015 08:02:11 -0600 Subject: [PATCH] Revert "fix double-expansion in `class`" This reverts commit 005b3f720f94bb2cc78b6586de79b045f568494b. The expander's definition of "same context" is not flexible enough, and introducing an extra `#%expression` wrapper breaks TR's recognition of expanded classes. Revisit in the near future. --- racket/collects/racket/private/class-undef.rkt | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/racket/collects/racket/private/class-undef.rkt b/racket/collects/racket/private/class-undef.rkt index 8980040d55..f636a33ed8 100644 --- a/racket/collects/racket/private/class-undef.rkt +++ b/racket/collects/racket/private/class-undef.rkt @@ -33,17 +33,13 @@ ;; A wrapper macro that runs the `need-undeed-check?` analysis ;; and adds a boolean argument to a call to `compose-class`: (define-syntax (detect-field-unsafe-undefined stx) - (cond - [(eq? 'expression (syntax-local-context)) - (syntax-case stx () - [(_ compose-class arg ... proc final) - (let-values ([(exp exp-proc) (syntax-local-expand-expression #'proc)]) - (with-syntax ([exp-proc exp-proc] - [need-undef? (need-undefined-check? exp)]) - (syntax/loc stx - (compose-class arg ... exp-proc need-undef? final))))])] - [else - #`(#%expression #,stx)])) + (syntax-case stx () + [(_ compose-class arg ... proc final) + (let-values ([(exp exp-proc) (syntax-local-expand-expression #'proc)]) + (with-syntax ([exp-proc exp-proc] + [need-undef? (need-undefined-check? exp)]) + (syntax/loc stx + (compose-class arg ... proc need-undef? final))))])) ;; Analysis to detect whether any field can be referenced while ;; its value is `unsafe-undefined`, based on `declare-...` annotations