[GHC] #12949: Pattern coverage mistake

GHC ghc-devs at haskell.org
Tue Dec 20 11:09:55 UTC 2016


#12949: Pattern coverage mistake
-------------------------------------+-------------------------------------
        Reporter:  dfeuer            |                Owner:  gkaracha
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  8.2.1
       Component:  Compiler          |              Version:  8.0.1
      Resolution:                    |             Keywords:
                                     |  PatternMatchWarnings
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Incorrect         |  Unknown/Multiple
  error/warning at compile-time      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by gkaracha):

 I guess I could fix this by
 - Turning `Name` back into `Id` in the checker (incl. the term oracle)
 - Checking equality on term variables taking their type into account,
 something like this:
 {{{#!hs
     tmEqVar :: Id -> Id -> Bool
     tmEqVar x1 x2 = (idName x1 == idName x2) && (idType x1 `eqType` idType
 x2)
 }}}
 Does that make sense?

 PS. I am not happy to have types in the term oracle (it's not as modular
 as I liked it to be) but I don't know of any other way to "restore" the
 implicit invariant that each variable has only **one type**.

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


More information about the ghc-tickets mailing list