diff options
author | Ryan Scott <ryan.gl.scott@gmail.com> | 2017-09-25 14:21:54 -0400 |
---|---|---|
committer | Ryan Scott <ryan.gl.scott@gmail.com> | 2017-09-25 14:21:54 -0400 |
commit | 0e60cc1825aace414597b644731c30269994f7fb (patch) | |
tree | 42082c3542b86fd18fadc0c08d3c15d4af723dc1 /compiler | |
parent | abed9bf5008baf6b3e84251fe4d07de80c532ead (diff) | |
download | haskell-0e60cc1825aace414597b644731c30269994f7fb.tar.gz |
Document how GHC disambiguates between multiple COMPLETE sets
Summary:
Up until now, the knowledge of how GHC chooses which
`COMPLETE` set to use in the presence of multiple applicable
`COMPLETE` sets for a single data type constructor was only
documented in the GHC wiki. But this really should be advertised to
anyone who uses `COMPLETE` pragmas heavily, so per SPJ's advice in
https://ghc.haskell.org/trac/ghc/ticket/14253#comment:10, this adds
this wisdom to the GHC users' guide.
Test Plan: Read it
Reviewers: austin, bgamari
Subscribers: mpickering, rwbarton, thomie
GHC Trac Issues: #14253
Differential Revision: https://phabricator.haskell.org/D4005
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/deSugar/Check.hs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/compiler/deSugar/Check.hs b/compiler/deSugar/Check.hs index 53b766f01b..3226a8773d 100644 --- a/compiler/deSugar/Check.hs +++ b/compiler/deSugar/Check.hs @@ -102,7 +102,12 @@ liftD m = ListT $ \sk fk -> m >>= \a -> sk a fk -- Pick the first match complete covered match or otherwise the "best" match. -- The best match is the one with the least uncovered clauses, ties broken -- by the number of inaccessible clauses followed by number of redundant --- clauses +-- clauses. +-- +-- This is specified in the +-- "Disambiguating between multiple ``COMPLETE`` pragmas" section of the +-- users' guide. If you update the implementation of this function, make sure +-- to update that section of the users' guide as well. getResult :: PmM PmResult -> DsM PmResult getResult ls = do res <- fold ls goM (pure Nothing) |