@@ -32,6 +32,7 @@ p_sigDecl' = \case
32 InlineSig NoExt name inlinePragma -> p_inlineSig name inlinePragma
32 InlineSig NoExt name inlinePragma -> p_inlineSig name inlinePragma
33 SpecSig NoExt name ts inlinePragma -> p_specSig name ts inlinePragma
33 SpecSig NoExt name ts inlinePragma -> p_specSig name ts inlinePragma
34 MinimalSig NoExt _ booleanFormula -> p_minimalSig booleanFormula
34 MinimalSig NoExt _ booleanFormula -> p_minimalSig booleanFormula
35+ CompleteMatchSig NoExt _sourceText cs ty -> p_completeSig cs ty
35 _ -> notImplemented "certain types of signature declarations"
36 _ -> notImplemented "certain types of signature declarations"
@@ -157,3 +158,17 @@ p_booleanFormula = \case
157 (located' p_booleanFormula)
158 (located' p_booleanFormula)
159 Parens l -> located l (parens . p_booleanFormula)
160 Parens l -> located l (parens . p_booleanFormula)
163+ :: Located [Located RdrName] -- ^ Constructors\/patterns
164+ -> Maybe (Located RdrName) -- ^ Type
166+p_completeSig cs' mty =
167+ located cs' $ \cs ->
168+ pragma "COMPLETE" $ do
169+ velt (withSep comma p_rdrName cs)
170+ forM_ mty $ \ty -> do