diff --git a/tests/more-tests/isolating-bug.expected b/tests/more-tests/isolating-bug.expected new file mode 100644 index 0000000..0eee34b --- /dev/null +++ b/tests/more-tests/isolating-bug.expected @@ -0,0 +1,3 @@ +# +# +# diff --git a/tests/more-tests/isolating-bug.rkt b/tests/more-tests/isolating-bug.rkt new file mode 100644 index 0000000..7971bc5 --- /dev/null +++ b/tests/more-tests/isolating-bug.rkt @@ -0,0 +1,29 @@ +#lang planet dyoo/whalesong/base +(require (for-syntax racket/base + syntax/struct)) + + +(define-syntax (my-define-struct stx) + (syntax-case stx () + [(_ name (fields ...) kw ...) + (with-syntax ([(names ...) + (build-struct-names #'name + (syntax->list #'(fields ...)) + #f + #f)]) + (with-syntax ([cnstr (syntax-case #'(names ...) () + [(struct:name-id constructor misc ...) + #'constructor])]) + #'(begin + (define-values (names ...) + (let () + (begin + (define-struct name (fields ...) kw ...) + (let ([cnstr (lambda args + (apply cnstr args))]) + (values names ...))))))))])) + +(my-define-struct swf (f) #:mutable) +make-swf +swf? +swf-f