From 6aa635d7402b734e8f3e236b3d02af8c538221b8 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Tue, 20 Oct 2015 12:33:40 -0400 Subject: [PATCH] Fix equality handling on literals. Repairs eb93a2b57117 and closes #215. --- .../typed-racket/typecheck/tc-app/tc-app-eq.rkt | 4 ++-- typed-racket-test/fail/issue-215-2.rkt | 7 +++++++ typed-racket-test/fail/issue-215.rkt | 4 ++++ 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 typed-racket-test/fail/issue-215-2.rkt create mode 100644 typed-racket-test/fail/issue-215.rkt diff --git a/typed-racket-lib/typed-racket/typecheck/tc-app/tc-app-eq.rkt b/typed-racket-lib/typed-racket/typecheck/tc-app/tc-app-eq.rkt index 03d67438..4f128ae3 100644 --- a/typed-racket-lib/typed-racket/typecheck/tc-app/tc-app-eq.rkt +++ b/typed-racket-lib/typed-racket/typecheck/tc-app/tc-app-eq.rkt @@ -57,8 +57,8 @@ (tc-result1: (Value: (? ok? val2)) _ o2)) (ret -Boolean (-FS (-and (-filter (-val val2) o1) (-filter (-val val1) o2)) - (-and (-not-filter (-val val1) o1) - (-not-filter (-val val2) o2))))] + (-and (-not-filter (-val val2) o1) + (-not-filter (-val val1) o2))))] [((tc-result1: t _ o) (tc-result1: (Value: (? ok? val)))) (ret -Boolean (-FS (-filter (-val val) o) (-not-filter (-val val) o)))] [((tc-result1: (Value: (? ok? val))) (tc-result1: t _ o)) diff --git a/typed-racket-test/fail/issue-215-2.rkt b/typed-racket-test/fail/issue-215-2.rkt new file mode 100644 index 00000000..620ba48b --- /dev/null +++ b/typed-racket-test/fail/issue-215-2.rkt @@ -0,0 +1,7 @@ +#lang typed/racket + + +(ann (let ((x 'b)) + (if (equal? x 'a) + 42 + "foo")) Number) diff --git a/typed-racket-test/fail/issue-215.rkt b/typed-racket-test/fail/issue-215.rkt new file mode 100644 index 00000000..828628a3 --- /dev/null +++ b/typed-racket-test/fail/issue-215.rkt @@ -0,0 +1,4 @@ +#; +(exn-pred "match:") +#lang typed/racket +(ann (match '(b) [(list 'a) 42]) Number)