Skip to content
  • Georgios Karachalias's avatar
    Major Overhaul of Pattern Match Checking (Fixes #595) · 8a506104
    Georgios Karachalias authored
    This patch adresses several problems concerned with exhaustiveness and
    redundancy checking of pattern matching. The list of improvements includes:
    
    * Making the check type-aware (handles GADTs, Type Families, DataKinds, etc.).
      This fixes #4139, #3927, #8970 and other related tickets.
    
    * Making the check laziness-aware. Cases that are overlapped but affect
      evaluation are issued now with "Patterns have inaccessible right hand side".
      Additionally, "Patterns are overlapped" is now replaced by "Patterns are
      redundant".
    
    * Improved messages for literals. This addresses tickets #5724, #2204, etc.
    
    * Improved reasoning concerning cases where simple and overloaded
      patterns are matched (See #322).
    
    * Substantially improved reasoning for pattern guards. Addresses #3078.
    
    * OverloadedLists extension does not break exhaustiveness checking anymore
      (addresses #9951). Note that in general this cannot be handled but if we know
      that an argument has type '[...
    8a506104