Commit 8150f654 authored by Sebastian Graf's avatar Sebastian Graf Committed by Marge Bot

PmCheck: Print types of uncovered patterns (#18932)

In order to avoid confusion as in #18932, we display the type of the
match variables in the non-exhaustiveness warning, e.g.

```
T18932.hs:14:1: warning: [-Wincomplete-patterns]
    Pattern match(es) are non-exhaustive
    In an equation for ‘g’:
        Patterns of type  ‘T a’, ‘T a’, ‘T a’ not matched:
            (MkT2 _) (MkT1 _) (MkT1 _)
            (MkT2 _) (MkT1 _) (MkT2 _)
            (MkT2 _) (MkT2 _) (MkT1 _)
            (MkT2 _) (MkT2 _) (MkT2 _)
            ...
   |
14 | g (MkT1 x) (MkT1 _) (MkT1 _) = x
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
```

It also allows us to omit the type signature on wildcard matches which
we previously showed in only some situations, particularly
`-XEmptyCase`.

Fixes #18932.
parent 52114fa0
Pipeline #27656 failed with stages
in 665 minutes and 40 seconds
......@@ -381,7 +381,10 @@ reportWarnings dflags ctx@(DsMatchContext kind loc) vars
case vars of -- See #11245
[] -> text "Guards do not cover entire pattern space"
_ -> let us = map (\nabla -> pprUncovered nabla vars) nablas
in hang (text "Patterns not matched:") 4
pp_tys = pprQuotedList $ map idType vars
in hang
(text "Patterns of type" <+> pp_tys <+> text "not matched:")
4
(vcat (take maxPatterns us) $$ dots maxPatterns us)
approx_msg = vcat
......
......@@ -136,26 +136,13 @@ checkRefuts x = do
-- | Pretty print a variable, but remember to prettify the names of the variables
-- that refer to neg-literals. The ones that cannot be shown are printed as
-- underscores. Even with a type signature, if it's not too noisy.
-- underscores.
pprPmVar :: PprPrec -> Id -> PmPprM SDoc
-- Type signature is "too noisy" by my definition if it needs to parenthesize.
-- I like "not matched: _ :: Proxy (DIdEnv (Id, SDoc))",
-- but I don't like "not matched: (_ :: stuff) (_:_) (_ :: Proxy (DIdEnv (Id, SDoc)))"
-- The useful information in the latter case is the constructor that we missed,
-- not the types of the wildcards in the places that aren't matched as a result.
pprPmVar prec x = do
nabla <- ask
case lookupSolution nabla x of
Just (PACA alt _tvs args) -> pprPmAltCon prec alt args
Nothing -> fromMaybe typed_wildcard <$> checkRefuts x
where
-- if we have no info about the parameter and would just print a
-- wildcard, also show its type.
typed_wildcard
| prec <= sigPrec
= underscore <+> text "::" <+> ppr (idType x)
| otherwise
= underscore
Nothing -> fromMaybe underscore <$> checkRefuts x
pprPmAltCon :: PprPrec -> PmAltCon -> [Id] -> PmPprM SDoc
pprPmAltCon _prec (PmAltLit l) _ = pure (ppr l)
......
DsStrictWarn.hs:7:11: warning: [-Wincomplete-uni-patterns]
Pattern match(es) are non-exhaustive
In a pattern binding: Patterns not matched: []
In a pattern binding: Patterns of type ‘String’ not matched: []
GadtOverlap.hs:19:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘h’: Patterns not matched: T3
In an equation for ‘h’: Patterns of type ‘T a’ not matched: T3
T14135.hs:16:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘f’: Patterns not matched: Foo2 _
In an equation for ‘f’:
Patterns of type ‘Foo a’ not matched: Foo2 _
......@@ -33,7 +33,7 @@ T14546a.hs:21:7: warning: [-Woverlapping-patterns (in -Wdefault)]
T14546a.hs:23:4: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: 0
In a case alternative: Patterns of type ‘Integer’ not matched: 0
T14546a.hs:24:7: warning: [-Woverlapping-patterns (in -Wdefault)]
Pattern match is redundant
......@@ -45,7 +45,7 @@ T14546a.hs:25:7: warning: [-Woverlapping-patterns (in -Wdefault)]
T14546a.hs:27:4: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: 3
In a case alternative: Patterns of type ‘Integer’ not matched: 3
T14546a.hs:28:7: warning: [-Woverlapping-patterns (in -Wdefault)]
Pattern match is redundant
......
......@@ -6,4 +6,4 @@ T14546d.hs:3:10: warning: [-Wmissing-methods (in -Wdefault)]
T14546d.hs:7:5: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: 3
In a case alternative: Patterns of type ‘D’ not matched: 3
T5455.hs:8:11: warning: [-Wincomplete-uni-patterns]
Pattern match(es) are non-exhaustive
In a pattern binding: Patterns not matched: []
In a pattern binding: Patterns of type ‘String’ not matched: []
T5455.hs:13:13: warning: [-Wincomplete-uni-patterns]
Pattern match(es) are non-exhaustive
In a pattern binding: Patterns not matched: []
In a pattern binding: Patterns of type ‘String’ not matched: []
......@@ -2,7 +2,7 @@
KindEqualities.hs:25:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘zero’:
Patterns not matched:
Patterns of type ‘TyRep a’ not matched:
TyApp (TyApp _ _) TyInt
TyApp (TyApp _ _) TyBool
TyApp (TyApp _ _) TyMaybe
......
......@@ -2,6 +2,6 @@
T8101.hs:7:9: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘ABC’ not matched:
B
C
......@@ -3,6 +3,6 @@
T8101b.hs:7:9: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘ABC’ not matched:
B
C
......@@ -21,7 +21,7 @@ werror.hs:10:1: error: [-Wmissing-signatures (in -Wall), -Werror=missing-signatu
werror.hs:10:1: error: [-Wincomplete-patterns (in -Wextra), -Werror=incomplete-patterns]
Pattern match(es) are non-exhaustive
In an equation for ‘f’: Patterns not matched: (_:_)
In an equation for ‘f’: Patterns of type ‘[a]’ not matched: (_:_)
werror.hs:11:1: error: [-Woverlapping-patterns (in -Wdefault), -Werror=overlapping-patterns]
Pattern match is redundant
......
......@@ -5,7 +5,7 @@
A.hs:5:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘incompletePattern’:
Patterns not matched: p where p is not one of {0}
Patterns of type ‘Int’ not matched: p where p is not one of {0}
A.hs:8:15: warning: [-Wunused-matches (in -Wextra)]
Defined but not used: ‘x’
......
T15139.hs:11:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘f1’: Patterns not matched: False
In an equation for ‘f1’:
Patterns of type ‘Bool’ not matched: False
|
11 | f1 True = case can'tHappen of {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
T15139.hs:12:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘f2’: Patterns not matched: False
In an equation for ‘f2’:
Patterns of type ‘Bool’ not matched: False
|
12 | f2 True = case can'tHappen of
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
T15139.hs:13:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘g’: Patterns not matched: False
In an equation for ‘g’: Patterns of type ‘Bool’ not matched: False
|
13 | g True = case () of () -> True
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
T13964.hs:18:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘catchAll’: Patterns not matched: T
In an equation for ‘catchAll’:
Patterns of type ‘Boolean’ not matched: T
T14059a.hs:20:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘wibble’: Patterns not matched: SFalse
In an equation for ‘wibble’:
Patterns of type ‘SBool z’ not matched: SFalse
T14059a.hs:23:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘wobble’: Patterns not matched: SFalse
In an equation for ‘wobble’:
Patterns of type ‘SBool z’ not matched: SFalse
T17386.hs:11:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘f’: Patterns not matched: F
In an equation for ‘f’: Patterns of type ‘B’ not matched: F
T17386.hs:18:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘g’: Patterns not matched: T
In an equation for ‘g’: Patterns of type ‘B’ not matched: T
completesig02.hs:10:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘a’: Patterns not matched: ()
In an equation for ‘a’: Patterns of type ‘()’ not matched: ()
......@@ -2,10 +2,11 @@
completesig04.hs:10:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘f’:
Patterns not matched:
Patterns of type ‘T’ not matched:
B
C
completesig04.hs:12:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘g’: Patterns not matched: Nothing
In an equation for ‘g’:
Patterns of type ‘Maybe a’ not matched: Nothing
completesig06.hs:13:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘m1’: Patterns not matched: B
In an equation for ‘m1’: Patterns of type ‘T’ not matched: B
completesig06.hs:16:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘m2’: Patterns not matched: A
In an equation for ‘m2’: Patterns of type ‘T’ not matched: A
completesig06.hs:20:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘m3’:
Patterns not matched:
Patterns of type ‘T’ not matched:
A
B
completesig06.hs:23:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘m4’:
Patterns not matched:
Patterns of type ‘T’, ‘S’ not matched:
A D
B D
completesig06.hs:29:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘m5’:
Patterns not matched:
Patterns of type ‘T’, ‘S’ not matched:
A D
B D
......@@ -10,7 +10,7 @@ completesig07.hs:20:1: warning: [-Woverlapping-patterns (in -Wdefault)]
completesig07.hs:23:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘m3’:
Patterns not matched:
Patterns of type ‘T’ not matched:
A
B
......
......@@ -9,4 +9,4 @@ completesig10.hs:16:1: warning: [-Woverlapping-patterns (in -Wdefault)]
completesig10.hs:20:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘m2’: Patterns not matched: A
In an equation for ‘m2’: Patterns of type ‘T’ not matched: A
completesig11.hs:14:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘m1’: Patterns not matched: B
In an equation for ‘m1’: Patterns of type ‘T’ not matched: B
EmptyCase001.hs:9:6: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: _ :: Int
In a case alternative: Patterns of type ‘Int’ not matched: _
EmptyCase001.hs:14:8: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘String’ not matched:
[]
(_:_)
EmptyCase001.hs:18:8: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: _ :: Char
In a case alternative: Patterns of type ‘Char’ not matched: _
EmptyCase002.hs:16:6: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: MkT _
In a case alternative: Patterns of type ‘T’ not matched: MkT _
EmptyCase002.hs:43:6: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘T1 B’ not matched:
MkT1 B1
MkT1 B2
EmptyCase002.hs:47:6: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘T1 (E Int)’ not matched:
MkT1 False
MkT1 True
EmptyCase002.hs:51:6: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: MkT1 (MkT2 (MkT1 D2))
In a case alternative:
Patterns of type ‘T1
(T2 (T1 (D (E Int) (E (E Int)))))’ not matched:
MkT1 (MkT2 (MkT1 D2))
EmptyCase003.hs:15:6: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: _ :: A a
In a case alternative: Patterns of type ‘A a’ not matched: _
EmptyCase003.hs:32:6: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: _ :: C a
In a case alternative: Patterns of type ‘C a’ not matched: _
EmptyCase003.hs:37:6: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: _ :: C Int
In a case alternative: Patterns of type ‘C Int’ not matched: _
EmptyCase004.hs:15:6: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: A2
In a case alternative: Patterns of type ‘A Bool’ not matched: A2
EmptyCase004.hs:19:6: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘A a’ not matched:
A1
A2
EmptyCase004.hs:31:8: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: B1 _
In a case alternative: Patterns of type ‘B a a’ not matched: B1 _
EmptyCase004.hs:35:6: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘B a b’ not matched:
B1 _
B2
EmptyCase004.hs:47:6: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘A a’ not matched:
A1
A2
EmptyCase004.hs:50:9: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: B2
In a case alternative: Patterns of type ‘B a b’ not matched: B2
EmptyCase004.hs:51:9: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: B1 _
In a case alternative: Patterns of type ‘B a b’ not matched: B1 _
EmptyCase005.hs:24:8: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Void3 _
In a case alternative:
Patterns of type ‘Void3’ not matched: Void3 _
EmptyCase005.hs:67:8: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘T ()’ not matched:
T1
T2
EmptyCase005.hs:73:8: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘T Bool’ not matched:
MkTBool False
MkTBool True
EmptyCase005.hs:79:8: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: MkTInt _
In a case alternative:
Patterns of type ‘T Int’ not matched: MkTInt _
EmptyCase005.hs:91:8: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘G Int’ not matched:
MkV False
MkV True
EmptyCase005.hs:101:8: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: _ :: H Int
In a case alternative: Patterns of type ‘H Int’ not matched: _
EmptyCase006.hs:18:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Foo1 MkGA1
In a case alternative:
Patterns of type ‘Foo1 Int’ not matched: Foo1 MkGA1
EmptyCase006.hs:26:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘Foo1 a’ not matched:
Foo1 MkGA1
Foo1 (MkGA2 _)
Foo1 MkGA3
EmptyCase007.hs:21:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Foo2 _
In a case alternative:
Patterns of type ‘Foo2 a’ not matched: Foo2 _
EmptyCase007.hs:25:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Foo2 _
In a case alternative:
Patterns of type ‘Foo2 (a, a)’ not matched: Foo2 _
EmptyCase007.hs:33:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Foo2 (_, _)
In a case alternative:
Patterns of type ‘Foo2 Int’ not matched: Foo2 (_, _)
EmptyCase007.hs:37:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Foo2 _
In a case alternative:
Patterns of type ‘Foo2 Char’ not matched: Foo2 _
EmptyCase007.hs:44:17: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: _ :: FA Char
In a case alternative: Patterns of type ‘FA Char’ not matched: _
EmptyCase007.hs:48:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘Foo2 [Int]’ not matched:
Foo2 []
Foo2 (_:_)
......@@ -2,18 +2,21 @@
EmptyCase008.hs:17:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘Foo3 Int’ not matched:
Foo3 (MkDA1 _)
Foo3 MkDA2
EmptyCase008.hs:21:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Foo3 _
In a case alternative:
Patterns of type ‘Foo3 a’ not matched: Foo3 _
EmptyCase008.hs:40:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Foo4 MkDB1
In a case alternative:
Patterns of type ‘Foo4 Int ()’ not matched: Foo4 MkDB1
EmptyCase008.hs:48:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Foo4 _
In a case alternative:
Patterns of type ‘Foo4 a b’ not matched: Foo4 _
EmptyCase009.hs:21:9: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Bar _
In a case alternative: Patterns of type ‘Bar f’ not matched: Bar _
EmptyCase009.hs:33:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Bar MkDB2_u
In a case alternative:
Patterns of type ‘Bar (DB ())’ not matched: Bar MkDB2_u
EmptyCase009.hs:42:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Bar MkGB3
In a case alternative:
Patterns of type ‘Bar GB’ not matched: Bar MkGB3
......@@ -2,41 +2,46 @@
EmptyCase010.hs:24:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘Baz GC a’ not matched:
Baz MkGC1
Baz (MkGC2 _)
EmptyCase010.hs:28:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Baz MkGC1
In a case alternative:
Patterns of type ‘Baz GC 'T1’ not matched: Baz MkGC1
EmptyCase010.hs:37:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘Baz GD Maybe’ not matched:
Baz MkGD1
Baz MkGD3
EmptyCase010.hs:41:9: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Baz MkGD3
In a case alternative:
Patterns of type ‘Baz GD (Either Int)’ not matched: Baz MkGD3
EmptyCase010.hs:45:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘Baz GD f’ not matched:
Baz MkGD1
Baz MkGD2
Baz MkGD3
EmptyCase010.hs:57:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Baz _
In a case alternative:
Patterns of type ‘Baz (DC ()) a’ not matched: Baz _
EmptyCase010.hs:69:7: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Baz MkDC2
In a case alternative:
Patterns of type ‘Baz (DC Bool) [Int]’ not matched: Baz MkDC2
EmptyCase010.hs:73:9: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Baz _
In a case alternative:
Patterns of type ‘Baz f a’ not matched: Baz _
......@@ -2,6 +2,6 @@
T10746.hs:9:10: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative:
Patterns not matched:
Patterns of type ‘Bool’ not matched:
False
True
T11336b.hs:25:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘fun’: Patterns not matched: Proxy
In an equation for ‘fun’:
Patterns of type ‘Proxy a’ not matched: Proxy
......@@ -9,7 +9,8 @@ T11822.hs:33:1: warning:
T11822.hs:33:1: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In an equation for ‘mkTreeNode’:
Patterns not matched:
Patterns of type ‘prefix’, ‘Seq SiblingDependencies’,
‘Set prefix’, ‘Depth’ not matched:
_ (Data.Sequence.Internal.Seq Data.Sequence.Internal.EmptyT)
(Data.Set.Internal.Bin _ _ _ _) (Depth _)
_ (Data.Sequence.Internal.Seq Data.Sequence.Internal.EmptyT)
......
T15305.hs:48:23: warning: [-Wincomplete-patterns (in -Wextra)]
Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: MkAbyss _
In a case alternative:
Patterns of type ‘Abyss’ not matched: MkAbyss _