diff options
author | Tim Baumann <tim@timbaumann.info> | 2017-08-06 11:33:38 +0200 |
---|---|---|
committer | Alexander Biehl <alexbiehl@gmail.com> | 2017-08-06 11:33:38 +0200 |
commit | 3fddb62913c72f29843335aa796c2e444ded1608 (patch) | |
tree | a3cccdacd8e546e527488009ebd5d9c815be46d3 /html-test/src/ConstructorPatternExport.hs | |
parent | 4d765e3cd0a735f9a7e8d13fb6633f9ee534fbfb (diff) |
Fix: Generate pattern signatures for constructors exported as patterns (#663)
* Fix pretty-printing of pattern signatures
Pattern synonyms can have up to two contexts, both having a
different semantic meaning: The first holds the constraints
required to perform the matching, the second contains the
constraints provided by a successful pattern match. When the
first context is empty but the second is not it is necessary
to render the first, empty context.
* Generate pattern synonym signatures for ctors exported as patterns
This fixes #653.
* Simplify extractPatternSyn
It is not necessary to generate the simplest type signature since
it will be simplified when pretty-printed.
* Add changelog entries for PR #663
* Fix extractPatternSyn error message
Diffstat (limited to 'html-test/src/ConstructorPatternExport.hs')
-rw-r--r-- | html-test/src/ConstructorPatternExport.hs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/html-test/src/ConstructorPatternExport.hs b/html-test/src/ConstructorPatternExport.hs new file mode 100644 index 00000000..7897b4bc --- /dev/null +++ b/html-test/src/ConstructorPatternExport.hs @@ -0,0 +1,26 @@ +{-# LANGUAGE PatternSynonyms #-} +{-# LANGUAGE ExistentialQuantification #-} +{-# LANGUAGE GADTs #-} +{-# LANGUAGE KindSignatures #-} + +module ConstructorPatternExport ( + pattern FooCons + , pattern MyRecCons + , pattern (:+) + , pattern BlubCons + , pattern MyGADTCons + ) where + +data Foo a = FooCons String a + +data MyRec = MyRecCons { one :: Bool, two :: Int } + +data MyInfix a = String :+ a + +data Blub = forall b. Show b => BlubCons b + +data MyGADT :: * -> * where + MyGADTCons :: forall a. Eq a => a -> Int -> MyGADT (Maybe String) + +pattern MyGADTCons' :: () => forall a. Eq a => a -> Int -> MyGADT (Maybe String) +pattern MyGADTCons' x y = MyGADTCons x y
\ No newline at end of file |