[GHC] #15886: Spurious warning about incomplete pattern with PatternSynonyms

GHC ghc-devs at haskell.org
Mon Nov 12 03:45:12 UTC 2018


#15886: Spurious warning about incomplete pattern with PatternSynonyms
-------------------------------------+-------------------------------------
        Reporter:  selinger          |                Owner:  (none)
            Type:  bug               |               Status:  closed
        Priority:  normal            |            Milestone:  8.6.3
       Component:  Compiler          |              Version:  8.6.1
      Resolution:  invalid           |             Keywords:
                                     |  PatternSynonyms,
                                     |  PatternMatchWarnings
Operating System:  Linux             |         Architecture:  x86_64
 Type of failure:  Incorrect         |  (amd64)
  error/warning at compile-time      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by goldfire):

 Is it worth pondering the utility of inferring a `COMPLETE` for an
 obviously-total pattern synonym? That is, GHC looks at the patsyn
 definition, sees that it's total (by doing its normal pattern-match
 completeness check) and then marks the patsyn as complete. This doesn't
 violate abstraction -- it's just a little more inference magic.

 Indeed, this idea could be expanded, allowing you to tell GHC that you
 expect a certain set of pattern synonyms to be complete, asking GHC to
 check for you. For example:

 {{{#!hs

 patterns where   -- silly hypothetical syntax
   Some x = Just x
   None = Nothing
 }}}

 GHC would check these, notice that they're complete, and then pretend as
 if someone had said `{-# COMPLETE Some, None #-}`. If they're not
 complete, and we're warning about patterns, then issue a warning.

 I don't care enough about this to write, defend, etc., a proposal on the
 subject, but perhaps you (for any value of "you") do.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15886#comment:5>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list