From 8f6d3c792024ea0985679ac3e07f4d32b02d19c1 Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Tue, 17 May 2011 17:16:59 -0400 Subject: [PATCH] Avoid printing results of tests when eliminating if branches at the toplevel. Closes PR 11928. --- .../tests/typed-scheme/optimizer/tests/dead-else.rkt | 4 ++-- .../tests/typed-scheme/optimizer/tests/dead-then.rkt | 4 ++-- .../optimizer/tests/silent-dead-branch.rkt | 12 ++++++++++++ collects/typed-scheme/optimizer/dead-code.rkt | 8 ++++---- 4 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 collects/tests/typed-scheme/optimizer/tests/silent-dead-branch.rkt diff --git a/collects/tests/typed-scheme/optimizer/tests/dead-else.rkt b/collects/tests/typed-scheme/optimizer/tests/dead-else.rkt index cbc34a9a63..82160d760d 100644 --- a/collects/tests/typed-scheme/optimizer/tests/dead-else.rkt +++ b/collects/tests/typed-scheme/optimizer/tests/dead-else.rkt @@ -1,8 +1,8 @@ #; ( -#f line #f col #f - op - dead else branch +dead-else.rkt line 15 col 13 - (#%app + (quote 4.0) (quote 5.0)) - dead else branch dead-else.rkt line 14 col 14 - + - binary float -#f line #f col #f - op - dead else branch +dead-else.rkt line 18 col 13 - (#%app + (quote 4.0) (quote 5.0)) - dead else branch dead-else.rkt line 17 col 14 - + - binary float 5.05.0 ) diff --git a/collects/tests/typed-scheme/optimizer/tests/dead-then.rkt b/collects/tests/typed-scheme/optimizer/tests/dead-then.rkt index 7e3ee6c8d6..0a727c379f 100644 --- a/collects/tests/typed-scheme/optimizer/tests/dead-then.rkt +++ b/collects/tests/typed-scheme/optimizer/tests/dead-then.rkt @@ -1,8 +1,8 @@ #; ( -#f line #f col #f - op - dead then branch +dead-then.rkt line 14 col 13 - (#%app + (quote 2.0) (quote 3.0)) - dead then branch dead-then.rkt line 15 col 14 - + - binary float -#f line #f col #f - op - dead then branch +dead-then.rkt line 17 col 13 - (#%app + (quote 2.0) (quote 3.0)) - dead then branch dead-then.rkt line 18 col 14 - + - binary float 9.09.0 ) diff --git a/collects/tests/typed-scheme/optimizer/tests/silent-dead-branch.rkt b/collects/tests/typed-scheme/optimizer/tests/silent-dead-branch.rkt new file mode 100644 index 0000000000..b4cd4a0a2c --- /dev/null +++ b/collects/tests/typed-scheme/optimizer/tests/silent-dead-branch.rkt @@ -0,0 +1,12 @@ +#; +( + silent-dead-branch.rkt 12:0 (let-values () (quote 1)) -- dead then branch + ) + +#lang typed/racket + +;; then branch gets eliminated, which puts the test in a begin +;; however, doing that at the toplevel causes the result of (number? "1") +;; to be printed, which is bad. +;; this was PR 11928 +(when (number? "1") 1) diff --git a/collects/typed-scheme/optimizer/dead-code.rkt b/collects/typed-scheme/optimizer/dead-code.rkt index c6ba818078..fa65d188d4 100644 --- a/collects/typed-scheme/optimizer/dead-code.rkt +++ b/collects/typed-scheme/optimizer/dead-code.rkt @@ -15,12 +15,12 @@ (pattern (if tst:expr thn:expr els:expr) #:when (tautology? #'tst) #:with opt - (begin (log-optimization "dead else branch" #'op) - #`(begin #,((optimize) #'tst) + (begin (log-optimization "dead else branch" #'els) + #`(begin (void #,((optimize) #'tst)) #,((optimize) #'thn)))) (pattern (if tst:expr thn:expr els:expr) #:when (contradiction? #'tst) #:with opt - (begin (log-optimization "dead then branch" #'op) - #`(begin #,((optimize) #'tst) + (begin (log-optimization "dead then branch" #'thn) + #`(begin (void #,((optimize) #'tst)) #,((optimize) #'els)))))