summaryrefslogtreecommitdiff
path: root/libraries/stm
diff options
context:
space:
mode:
authorBen Gamari <bgamari.foss@gmail.com>2017-09-13 12:22:27 -0400
committerBen Gamari <ben@smart-cactus.org>2017-09-13 16:54:22 -0400
commit10a1a4781c646f81ca9e2ef7a2585df2cbe3a014 (patch)
tree8638418f2e91b636c39dc941c7be97a7fcc02968 /libraries/stm
parent4cead3c1d5bf1c5f3cfb1898fd9d618674292f4b (diff)
downloadhaskell-10a1a4781c646f81ca9e2ef7a2585df2cbe3a014.tar.gz
Model divergence of retry# as ThrowsExn, not Diverges
The demand signature of the retry# primop previously had a Diverges result. However, this caused the demand analyser to conclude that a program of the shape, catchRetry# (... >> retry#) would diverge. Of course, this is plainly wrong; catchRetry#'s sole reason to exist is to "catch" the "exception" thrown by retry#. While catchRetry#'s demand signature correctly had the ExnStr flag set on its first argument, indicating that it should catch divergence, the logic associated with this flag doesn't apply to Diverges results. This resulted in #14171. The solution here is to treat the divergence of retry# as an exception. Namely, give it a result type of ThrowsExn rather than Diverges. Updates stm submodule for tests. Test Plan: Validate with T14171 Reviewers: simonpj, austin Subscribers: rwbarton, thomie GHC Trac Issues: #14171, #8091 Differential Revision: https://phabricator.haskell.org/D3919
Diffstat (limited to 'libraries/stm')
m---------libraries/stm0
1 files changed, 0 insertions, 0 deletions
diff --git a/libraries/stm b/libraries/stm
-Subproject 9c3c3bb28834d1ba9574be7f887c8914afd4232
+Subproject b6e863e517bdcc3c5de1fbcb776a3fd7e6fe210