From ee4be88f8b8bf35683dd69108a1a0c3ac9ec91c2 Mon Sep 17 00:00:00 2001 From: Asumu Takikawa Date: Sun, 19 May 2013 20:31:25 -0400 Subject: [PATCH] Fix parsing of (Struct ...) types. This was a regression that appeared in 5.3.1 original commit: 3eb4a75613ef819cf58504cb7f8b7cec62eb3f7e --- collects/tests/typed-racket/fail/bad-struct-top.rkt | 7 +++++++ collects/typed-racket/private/parse-type.rkt | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 collects/tests/typed-racket/fail/bad-struct-top.rkt diff --git a/collects/tests/typed-racket/fail/bad-struct-top.rkt b/collects/tests/typed-racket/fail/bad-struct-top.rkt new file mode 100644 index 00000000..6fe3d4cc --- /dev/null +++ b/collects/tests/typed-racket/fail/bad-struct-top.rkt @@ -0,0 +1,7 @@ +#; +(exn:pred #rx"Argument to Struct must be a structure") +#lang typed/racket + +;; Make sure `Struct` constructor rejects bad arguments +(: x (Struct Integer)) + diff --git a/collects/typed-racket/private/parse-type.rkt b/collects/typed-racket/private/parse-type.rkt index 8f8a593b..9a17a7f5 100644 --- a/collects/typed-racket/private/parse-type.rkt +++ b/collects/typed-racket/private/parse-type.rkt @@ -177,9 +177,9 @@ (add-disappeared-use #'kw) (let ([v (parse-type #'t)]) (match (resolve v) - [(and s Struct?) (make-StructTop s)] + [(and s (? Struct?)) (make-StructTop s)] [_ (tc-error/delayed "Argument to Struct must be a structure type, got ~a" v) - (make-Instance (Un))]))] + (make-StructTop (Un))]))] [((~and kw t:Instance) t) (add-disappeared-use #'kw) (let ([v (parse-type #'t)])