From 812f1a8c79b92640aa5a7512e8e9560ff438000d Mon Sep 17 00:00:00 2001 From: Asumu Takikawa Date: Wed, 23 Mar 2016 16:02:22 -0400 Subject: [PATCH] Add types for box-cas!, unsafe-box*-cas! --- typed-racket-lib/typed-racket/base-env/base-env.rkt | 2 ++ typed-racket-test/unit-tests/typecheck-tests.rkt | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/typed-racket-lib/typed-racket/base-env/base-env.rkt b/typed-racket-lib/typed-racket/base-env/base-env.rkt index 8ebfe693..712673de 100644 --- a/typed-racket-lib/typed-racket/base-env/base-env.rkt +++ b/typed-racket-lib/typed-racket/base-env/base-env.rkt @@ -876,6 +876,7 @@ ((-box a) . -> . a) ((make-BoxTop) . -> . Univ)))] [set-box! (-poly (a) ((-box a) a . -> . -Void))] +[box-cas! (-poly (a) ((-box a) a a . -> . -Boolean))] [unsafe-unbox (-poly (a) (cl->* ((-box a) . -> . a) ((make-BoxTop) . -> . Univ)))] @@ -884,6 +885,7 @@ ((-box a) . -> . a) ((make-BoxTop) . -> . Univ)))] [unsafe-set-box*! (-poly (a) ((-box a) a . -> . -Void))] +[unsafe-box*-cas! (-poly (a) ((-box a) a a . -> . -Boolean))] [box? (make-pred-ty (make-BoxTop))] ;; Section 4.13 (Hash Tables) diff --git a/typed-racket-test/unit-tests/typecheck-tests.rkt b/typed-racket-test/unit-tests/typecheck-tests.rkt index 6b7b0bec..baef09af 100644 --- a/typed-racket-test/unit-tests/typecheck-tests.rkt +++ b/typed-racket-test/unit-tests/typecheck-tests.rkt @@ -301,6 +301,7 @@ racket/system racket/tcp racket/udp + racket/unsafe/ops racket/vector syntax/stx @@ -1951,6 +1952,10 @@ (struct-type-property? prop)) #:ret (ret -Boolean -true-filter)) + ;; Boxes + [tc-e (box-cas! (box "foo") "bar" "baz") -Boolean] + [tc-e (unsafe-box*-cas! (box "foo") "bar" "baz") -Boolean] + ;; Weak boxes [tc-e (make-weak-box "foo") (-weak-box -String)] [tc-e (weak-box-value (make-weak-box "foo")) (-opt -String)]