Close holes in what values can be thrown.
- Don't allow 3d-syntax in the exprs field of `exn:fail:syntax` - Don't allow throwing arbitrary higher-order values
This commit is contained in:
parent
597c62949b
commit
9eaae1f93e
|
@ -20,7 +20,7 @@
|
|||
"base-structs.rkt"
|
||||
racket/file
|
||||
(only-in racket/private/pre-base new-apply-proc)
|
||||
(only-in (types abbrev) [-Boolean B] [-Symbol Sym])
|
||||
(only-in (types abbrev) [-Boolean B] [-Symbol Sym] -Flat)
|
||||
(only-in (types numeric-tower) [-Number N])
|
||||
(only-in (rep type-rep)
|
||||
make-ClassTop
|
||||
|
@ -1146,8 +1146,8 @@
|
|||
((-> ManyUniv) ((list) Univ . ->* . b) . -> . b)))]
|
||||
|
||||
;; Section 10.2
|
||||
[raise (cl->* (Univ . -> . (Un))
|
||||
(Univ Univ . -> . (Un)))]
|
||||
[raise (cl->* ((Un -Flat -Exn) . -> . (Un))
|
||||
((Un -Flat -Exn) Univ . -> . (Un)))]
|
||||
[error
|
||||
(cl->* (-> Sym (Un))
|
||||
(->* (list -String) Univ (Un))
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
(require (for-template racket/base (prefix-in k: '#%kernel)))
|
||||
|
||||
(provide initialize-structs -Date -Srcloc -Date -Arity-At-Least)
|
||||
(provide initialize-structs -Date -Srcloc -Date -Arity-At-Least -Exn)
|
||||
|
||||
(define-syntax define-hierarchy
|
||||
(syntax-rules (define-hierarchy)
|
||||
|
@ -82,7 +82,7 @@
|
|||
(define-hierarchy exn:fail:contract:continuation (#:kernel-maker k:exn:fail:contract:continuation) ())
|
||||
(define-hierarchy exn:fail:contract:variable (#:kernel-maker k:exn:fail:contract:variable) ()))
|
||||
|
||||
(define-hierarchy exn:fail:syntax (#:kernel-maker k:exn:fail:syntax) ([exprs : (-lst (-Syntax Univ))]))
|
||||
(define-hierarchy exn:fail:syntax (#:kernel-maker k:exn:fail:syntax) ([exprs : (-lst Any-Syntax)]))
|
||||
|
||||
(define-hierarchy exn:fail:read (#:kernel-maker k:exn:fail:read)
|
||||
([srclocs : (-lst Univ)]) ;; cce: Univ here should be srcloc
|
||||
|
|
|
@ -164,6 +164,10 @@
|
|||
(make-Vector sexp)
|
||||
(make-Box sexp)
|
||||
t)))
|
||||
(define/decl -Flat
|
||||
(-mu flat
|
||||
(Un -Null -Number -Boolean -Symbol -String -Keyword -Char
|
||||
(-pair flat flat))))
|
||||
(define/decl -Sexp (-Sexpof (Un)))
|
||||
(define Syntax-Sexp (-Sexpof Any-Syntax))
|
||||
(define Ident (-Syntax -Symbol))
|
||||
|
|
|
@ -3176,6 +3176,14 @@
|
|||
#:ret (ret -String)
|
||||
#:msg #rx"expected: Symbol.*given: Any"]
|
||||
|
||||
[tc-err
|
||||
(raise (λ ([x : Number]) (add1 x)))
|
||||
#:ret (ret (Un))]
|
||||
|
||||
[tc-err
|
||||
(exn:fail:syntax "" (current-continuation-marks) (list (datum->syntax #f add1)))
|
||||
#:ret (ret -Exn)]
|
||||
|
||||
;; PR 14218
|
||||
[tc-e (ann (values "foo" "bar") (Values String String))
|
||||
#:ret (ret (list -String -String))]
|
||||
|
|
Loading…
Reference in New Issue
Block a user