diff --git a/typed-racket-lib/typed-racket/base-env/prims-struct.rkt b/typed-racket-lib/typed-racket/base-env/prims-struct.rkt index 4918234b..d0c918fe 100644 --- a/typed-racket-lib/typed-racket/base-env/prims-struct.rkt +++ b/typed-racket-lib/typed-racket/base-env/prims-struct.rkt @@ -128,7 +128,7 @@ stx (and (stx-pair? stx) (stx-car stx)))))) #'(begin))] - [dtsi (quasisyntax/loc stx (dtsi/exec* () nm.name type (fld ...) proc-ty))]) + [dtsi (quasisyntax/loc stx (dtsi/exec* () nm type (fld ...) proc-ty))]) #'(begin d-s stx-err-fun dtsi))])) (define-syntaxes (dtsi* dtsi/exec*) diff --git a/typed-racket-test/succeed/gh-issue-291.rkt b/typed-racket-test/succeed/gh-issue-291.rkt new file mode 100644 index 00000000..600cb456 --- /dev/null +++ b/typed-racket-test/succeed/gh-issue-291.rkt @@ -0,0 +1,12 @@ +#lang typed/racket + +;; Test inheritance with define-struct/exec + +(define-struct/exec sA ([x : Number] [y : Number]) + [(λ (self v) 1) : (→ sA Any Any)]) + +(define-struct/exec (sB sA) ([z : String]) + [(λ (self v) 2) : (→ sB Any Any)]) + +(sB 1 2 "c") +(λ ([x : sB]) (ann x sA))