From 84f9126f774eb83dfceaa4bbe0421ea3a1c4a27c Mon Sep 17 00:00:00 2001 From: Ben Greenman Date: Wed, 13 May 2020 18:02:40 -0400 Subject: [PATCH] class-internal: avoid wrapping "immediate" opt/kw defaults (#3182) When expanding a method definition, do not wrap the default expression for optional and keyword args if it matches `immediate-default?` --- racket/collects/racket/private/class-internal.rkt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/racket/collects/racket/private/class-internal.rkt b/racket/collects/racket/private/class-internal.rkt index e6031bdbff..ec4ebb9ef3 100644 --- a/racket/collects/racket/private/class-internal.rkt +++ b/racket/collects/racket/private/class-internal.rkt @@ -12,6 +12,7 @@ racket/unsafe/undefined "class-undef.rkt" (for-syntax racket/stxparam + racket/private/immediate-default syntax/kerncase syntax/stx syntax/name @@ -528,7 +529,7 @@ [(pair? vars) (syntax-case (car vars) () [(id expr) - (identifier? #'id) + (and (identifier? #'id) (not (immediate-default? #'expr))) ;; optional argument; need to wrap arg expression (cons (with-syntax ([expr (syntax/loc #'expr