testsuite: Add testsuite for #16978
authorBen Gamari <ben@smart-cactus.org>
Wed, 31 Jul 2019 18:07:43 +0000 (14:07 -0400)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Sun, 4 Aug 2019 22:18:08 +0000 (18:18 -0400)
testsuite/tests/simplCore/should_compile/T16978.hs [new file with mode: 0644]
testsuite/tests/simplCore/should_compile/all.T

diff --git a/testsuite/tests/simplCore/should_compile/T16978.hs b/testsuite/tests/simplCore/should_compile/T16978.hs
new file mode 100644 (file)
index 0000000..cf78013
--- /dev/null
@@ -0,0 +1,29 @@
+-- | Caused Core Lint failure due to floating of unlifted join point to the
+-- top-level.
+module Bug where
+
+import Control.Monad.Trans.State.Strict (State, modify')
+import Data.Text (Text)
+import qualified Data.Text.Lazy.Builder as B
+
+data Value = String !Text | Null
+
+type Render a = State B.Builder a
+
+tellBuilder :: B.Builder -> Render ()
+tellBuilder b' = modify' f where
+    f b = b <> b'
+
+renderNode :: Value -> Render ()
+renderNode v =
+  renderValue v >>= outputRaw
+
+outputRaw :: Text -> Render ()
+outputRaw = tellBuilder . B.fromText
+{-# INLINE outputRaw #-}
+
+renderValue :: Value -> Render Text
+renderValue v = case v of
+    String str -> return str
+    _ -> let x = x in x
+{-# INLINE renderValue #-}
index 7cfbc21..94406ba 100644 (file)
@@ -305,5 +305,6 @@ test('T16288', normal, multimod_compile, ['T16288B', '-O -dcore-lint -v0'])
 test('T16348', normal, compile, ['-O'])
 test('T16918', normal, compile, ['-O'])
 test('T16918a', normal, compile, ['-O'])
+test('T16978', normal, compile, ['-O'])
 test('T16979a', normal, compile, ['-O'])
 test('T16979b', normal, compile, ['-O'])