Commit de139cc4 authored by Artem Pelenitsyn's avatar Artem Pelenitsyn Committed by Marge Bot
Browse files

add reproducer for #15630

parent 2b7c71cb
Pipeline #22132 passed with stages
in 830 minutes and 27 seconds
module T15630 where
data IValue = IDefault
| IInt Int
| IBlob String
(?) :: Applicative m => (IValue -> m a) -> IValue -> m (Maybe a)
(?) _ IDefault = pure Nothing
(?) p x = Just <$> p x
getInt :: IValue -> Either () Int
getInt (IInt i) = Right i
getInt v = Left ()
getString :: IValue -> Either () String
getString (IBlob b) = Right $ b
getString v = Left ()
(<+>) :: Applicative m => (m (a -> b), [IValue]) -> (IValue -> m a) -> (m b, [IValue])
(<+>) (f, (v:vs)) p = (f <*> (p v), vs)
data TestStructure = TestStructure
{ _param1 :: Int
, _param2 :: Maybe String
, _param3 :: Maybe Int
, _param4 :: Maybe String
, _param5 :: Maybe Int
, _param6 :: Maybe Int
, _param7 :: Maybe String
, _param8 :: Maybe String
, _param9 :: Maybe Int
, _param10 :: Maybe Int
, _param11 :: Maybe String
, _param12 :: Maybe String
, _param13 :: Maybe Int
, _param14 :: Maybe Int
, _param15 :: Maybe String
}
getMenuItem :: [IValue] -> Either () TestStructure
getMenuItem vs = fst $ (pure TestStructure, vs)
<+> getInt
<+> (getString ?)
<+> (getInt ?)
<+> (getString ?)
<+> (getInt ?)
<+> (getInt ?)
<+> (getString ?)
<+> (getString ?)
<+> (getInt ?)
<+> (getInt ?)
<+> (getString ?)
<+> (getString ?)
<+> (getInt ?)
<+> (getInt ?)
<+> (getString ?)
......@@ -346,6 +346,11 @@ test ('T15164',
],
compile,
['-v0 -O'])
test('T15630',
[collect_compiler_stats()
],
compile,
['-O2'])
# See https://gitlab.haskell.org/ghc/ghc/merge_requests/312#note_186960
test ('WWRec',
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment