67-pattern COMPLETE pragma overwhelms the pattern match checker
I have a data type Expr
with 67 constructors representing an AST, and a function that checks whether the AST is in normal form. If I add a simple pattern synonym for one of the constructors, and the necessary COMPLETE
pragma, the pattern match checker gives up with Pattern match checker exceeded (2000000) iterations
while checking the function. Increasing the iterations to -fmax-pmcheck-iterations=100000000
doesn't help.
I don't really understand how the pattern match checker works, but I wonder whether it could do better here? Maybe !963 (closed) would improve the situation?
The code (derived from dhall
) is in Lib.hs, the warnings generated with 8.8.0.20190721
, are in ghc-8.8.0.20190721.log