From e800787773b0d0b1b02a52ca20b37594fa2c7af7 Mon Sep 17 00:00:00 2001 From: Asumu Takikawa Date: Sat, 3 Oct 2015 16:39:28 -0400 Subject: [PATCH] Don't assume built-in structs are mutable Doing so adds spurious entries in the type environment for the setters for these structs, even though the setters are not defined. --- typed-racket-lib/typed-racket/typecheck/tc-structs.rkt | 2 +- .../fail/no-setters-for-built-in-structs.rkt | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 typed-racket-test/fail/no-setters-for-built-in-structs.rkt diff --git a/typed-racket-lib/typed-racket/typecheck/tc-structs.rkt b/typed-racket-lib/typed-racket/typecheck/tc-structs.rkt index 7cd59606..d5637e19 100644 --- a/typed-racket-lib/typed-racket/typecheck/tc-structs.rkt +++ b/typed-racket-lib/typed-racket/typecheck/tc-structs.rkt @@ -330,7 +330,7 @@ (define parent-tys (map fld-t (get-flds parent-type))) (define names (get-struct-names nm nm fld-names #f #f)) - (define desc (struct-desc parent-tys tys null #t #f)) + (define desc (struct-desc parent-tys tys null #f #f)) (define sty (mk/inner-struct-type names desc parent-type)) (register-sty! sty names desc) diff --git a/typed-racket-test/fail/no-setters-for-built-in-structs.rkt b/typed-racket-test/fail/no-setters-for-built-in-structs.rkt new file mode 100644 index 00000000..c335aff5 --- /dev/null +++ b/typed-racket-test/fail/no-setters-for-built-in-structs.rkt @@ -0,0 +1,8 @@ +#; +(exn-pred #rx"missing type for top-level") +#lang racket/load + +;; Test that built-in struct fields don't have types for setters + +(require typed/racket/base) +set-date-second!