------------ desugared source code data Data0 :: Type where Data0 :: Data0 data Data1 (_ :: Type) (_ :: Type) (_ :: Type) :: Type where Data1 :: forall a b c . a -> b -> c -> Data1 a b c data Data2 :: Type where Data21 :: Int -> Data2 Data22 :: Int -> Int -> Data2 Data23 :: Int -> Data2 Data24 :: Data2 x = \(a :: _) -> case'Data2 (\_ -> _) (\_ -> _rhs undefined) (\(b :: _) _ -> _rhs b) (\(c :: _) -> _rhs c) (_rhs undefined) a y = \(a :: _) -> case'Data2 (\_ -> _) (\_ -> _rhs undefined) (\_ (b :: _) -> _rhs b) (\_ -> _rhs undefined) (_rhs undefined) a data Data5 (_ :: Type) (_ :: Type) (_ :: Type) :: Type where Data51 :: forall a b c . a -> Data5 a b c Data52 :: forall d e f . d -> e -> f -> Data5 d e f Data53 :: forall g h i . Int -> g -> Float -> h -> i -> Data5 g h i a5 = \(a :: _) -> case'Data5 (\_ -> _) (\(b :: _) -> _rhs b) (\(c :: _) _ _ -> _rhs c) (\_ _ _ _ _ -> _rhs undefined) a b5 = \(a :: _) -> case'Data5 (\_ -> _) (\_ -> _rhs undefined) (\_ (b :: _) _ -> _rhs b) (\_ _ _ _ _ -> _rhs undefined) a c5 = \(a :: _) -> case'Data5 (\_ -> _) (\_ -> _rhs undefined) (\_ _ (b :: _) -> _rhs b) (\_ _ _ _ _ -> _rhs undefined) a main is not found ------------ trace 'Data0 :: Type Data0 :: Data0 case'Data0 :: forall (a :: Data0 -> Type) -> a 'Data0 -> forall (b :: Data0) -> a b match'Data0 :: forall (a :: Type -> Type) -> a Data0 -> forall b -> a b -> a b 'Data1 :: Type -> Type -> Type -> Type Data1 :: forall a b c . a -> b -> c -> Data1 a b c case'Data1 :: forall a b c . forall (d :: Data1 a b c -> Type) -> (forall (e :: a) (f :: b) (g :: c) -> d ('Data1 e f g)) -> forall (h :: Data1 a b c) -> d h match'Data1 :: forall (a :: Type -> Type) -> (forall b c d -> a (Data1 b c d)) -> forall e -> a e -> a e 'Data2 :: Type Data21 :: Int -> Data2 Data22 :: Int -> Int -> Data2 Data23 :: Int -> Data2 Data24 :: Data2 case'Data2 :: forall (a :: Data2 -> Type) -> (forall (b :: Int) -> a ('Data21 b)) -> (forall (c :: Int) (d :: Int) -> a ('Data22 c d)) -> (forall (e :: Int) -> a ('Data23 e)) -> a 'Data24 -> forall (f :: Data2) -> a f match'Data2 :: forall (a :: Type -> Type) -> a Data2 -> forall b -> a b -> a b x :: Data2 -> Int y :: Data2 -> Int 'Data5 :: Type -> Type -> Type -> Type Data51 :: forall a b c . a -> Data5 a b c Data52 :: forall a b c . a -> b -> c -> Data5 a b c Data53 :: forall a b c . Int -> a -> Float -> b -> c -> Data5 a b c case'Data5 :: forall a b c . forall (d :: Data5 a b c -> Type) -> (forall (e :: a) -> d ('Data51 e)) -> (forall (f :: a) (g :: b) (h :: c) -> d ('Data52 f g h)) -> (forall (i :: Int) (j :: a) (k :: Float) (l :: b) (m :: c) -> d ('Data53 i j k l m)) -> forall (n :: Data5 a b c) -> d n match'Data5 :: forall (a :: Type -> Type) -> (forall b c d -> a (Data5 b c d)) -> forall e -> a e -> a e a5 :: forall a b c . Data5 a b c -> a b5 :: forall a b c . Data5 a b c -> b c5 :: forall a b c . Data5 a b c -> c ------------ tooltips testdata/data.lc 1:6-1:11 Type | Type | Type | Type | Type testdata/data.lc 1:6-1:19 Type testdata/data.lc 1:14-1:19 Data0 testdata/data.lc 3:6-3:11 Type -> Type -> Type -> Type | Type -> Type -> Type -> Type | Type -> Type -> Type -> Type | Type -> Type -> Type -> Type | Type testdata/data.lc 3:6-3:13 Type -> Type -> Type testdata/data.lc 3:6-3:15 Type -> Type testdata/data.lc 3:6-3:17 Type | Type testdata/data.lc 3:6-3:25 Type | Type | Type | Type testdata/data.lc 3:6-3:31 Type | Type | Type | Type | Type testdata/data.lc 3:12-3:13 Type testdata/data.lc 3:14-3:15 Type testdata/data.lc 3:16-3:17 Type testdata/data.lc 3:20-3:25 forall a b c . a -> b -> c -> Data1 a b c | Data1 _g _f _e | Type | Type | Type | Type testdata/data.lc 3:26-3:27 Type testdata/data.lc 3:28-3:29 Type testdata/data.lc 3:30-3:31 Type testdata/data.lc 5:6-5:11 Type | Type | Type | Type | Type | Type | Type | Type | Type | Type | Type testdata/data.lc 5:6-6:39 Type testdata/data.lc 5:6-8:20 Type | Type | Type | Type testdata/data.lc 5:14-5:20 Int -> Data2 | Data2 | Type | Type testdata/data.lc 5:21-5:24 Type testdata/data.lc 6:14-6:20 Int -> Int -> Data2 | Data2 | Type | Type | Type testdata/data.lc 6:23-6:24 Data2 -> Int testdata/data.lc 6:28-6:31 Type testdata/data.lc 6:33-6:34 Data2 -> Int testdata/data.lc 6:36-6:39 Type testdata/data.lc 7:14-7:20 Int -> Data2 | Data2 | Type | Type testdata/data.lc 7:28-7:31 Type testdata/data.lc 8:14-8:20 Data2 testdata/data.lc 10:6-10:11 Type -> Type -> Type -> Type | Type -> Type -> Type -> Type | Type -> Type -> Type -> Type | Type -> Type -> Type -> Type | Type -> Type -> Type -> Type | Type -> Type -> Type -> Type | Type testdata/data.lc 10:6-10:14 Type -> Type -> Type | Type -> Type -> Type | Type -> Type -> Type testdata/data.lc 10:6-10:17 Type -> Type | Type -> Type | Type -> Type testdata/data.lc 10:6-10:20 Type | Type | Type | Type | Type | Type testdata/data.lc 10:6-10:38 Type | Type | Type testdata/data.lc 10:6-11:54 Type | Type | Type | Type | Type testdata/data.lc 10:6-12:29 Type | Type | Type | Type | Type | Type testdata/data.lc 10:6-12:48 Type | Type | Type | Type | Type | Type | Type testdata/data.lc 10:12-10:14 Type | Type | Type testdata/data.lc 10:15-10:17 Type | Type | Type testdata/data.lc 10:18-10:20 Type | Type | Type testdata/data.lc 10:23-10:29 forall a b c . a -> Data5 a b c | Data5 _e _d _c | Type | Type testdata/data.lc 10:32-10:34 forall a b c . Data5 a b c -> a testdata/data.lc 10:36-10:38 Type testdata/data.lc 11:23-11:29 forall a b c . a -> b -> c -> Data5 a b c | Data5 _h _g _f | Type | Type | Type | Type testdata/data.lc 11:36-11:38 Type testdata/data.lc 11:40-11:42 forall a b c . Data5 a b c -> b testdata/data.lc 11:44-11:46 Type testdata/data.lc 11:48-11:50 forall a b c . Data5 a b c -> c testdata/data.lc 11:52-11:54 Type testdata/data.lc 12:23-12:29 forall a b c . Int -> a -> Float -> b -> c -> Data5 a b c | Data5 _k _j _i | Type | Type | Type | Type | Type | Type testdata/data.lc 12:30-12:33 Type testdata/data.lc 12:34-12:36 Type testdata/data.lc 12:37-12:42 Type testdata/data.lc 12:43-12:45 Type testdata/data.lc 12:46-12:48 Type ------------ warnings Uncovered pattern(s) at testdata/data.lc:6:23: | Data22 { x :: Int, y::Int } ^ Missing case(s): x (Data21 _) x Data24 Uncovered pattern(s) at testdata/data.lc:6:33: | Data22 { x :: Int, y::Int } ^ Missing case(s): y (Data21 _) y (Data23 _) y Data24 Uncovered pattern(s) at testdata/data.lc:10:32: data Data5 a5 b5 c5 = Data51 { a5::a5} ^^ Missing case(s): a5 (Data53 _ _ _ _ _) Uncovered pattern(s) at testdata/data.lc:11:40: | Data52 { a5::a5, b5::b5, c5::c5 } ^^ Missing case(s): b5 (Data51 _) b5 (Data53 _ _ _ _ _) Uncovered pattern(s) at testdata/data.lc:11:48: | Data52 { a5::a5, b5::b5, c5::c5 } ^^ Missing case(s): c5 (Data51 _) c5 (Data53 _ _ _ _ _)