diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2015-10-28 09:41:27 +0000 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2015-10-28 09:46:22 +0000 |
commit | 04b0a73a2a418e1ca9c282ab3f2b4fe216911fdd (patch) | |
tree | 9914155e4873cd7a1b3c3dcee8fe12119b2ddbf2 /compiler/hsSyn | |
parent | 9fc2d777f53110040f48ab27643a16888fa377f5 (diff) | |
download | haskell-04b0a73a2a418e1ca9c282ab3f2b4fe216911fdd.tar.gz |
Pattern synonyms: swap provided/required
This patch swaps the order of provided and required constraints in
a pattern signature, so it now goes
pattern P :: req => prov => t1 -> ... tn -> res_ty
See the long discussion in Trac #10928.
I think I have found all the places, but I could have missed something
particularly in comments.
There is a Haddock changes; so a submodule update.
Diffstat (limited to 'compiler/hsSyn')
-rw-r--r-- | compiler/hsSyn/HsBinds.hs | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/compiler/hsSyn/HsBinds.hs b/compiler/hsSyn/HsBinds.hs index 4b661ff6cd..18756f632f 100644 --- a/compiler/hsSyn/HsBinds.hs +++ b/compiler/hsSyn/HsBinds.hs @@ -641,8 +641,8 @@ data Sig name -- For details on above see note [Api annotations] in ApiAnnotation | PatSynSig (Located name) (HsExplicitFlag, LHsTyVarBndrs name) - (LHsContext name) -- Provided context (LHsContext name) -- Required context + (LHsContext name) -- Provided context (LHsType name) -- | A type signature for a default method inside a class @@ -839,23 +839,23 @@ ppr_sig (InlineSig var inl) = pragBrackets (ppr inl <+> pprPrefixOcc (unLo ppr_sig (SpecInstSig _ ty) = pragBrackets (ptext (sLit "SPECIALIZE instance") <+> ppr ty) ppr_sig (MinimalSig _ bf) = pragBrackets (pprMinimalSig bf) -ppr_sig (PatSynSig name (flag, qtvs) (L _ prov) (L _ req) ty) +ppr_sig (PatSynSig name (flag, qtvs) (L _ req) (L _ prov) ty) = pprPatSynSig (unLoc name) False -- TODO: is_bindir (pprHsForAll flag qtvs (noLoc [])) - (pprHsContextMaybe prov) (pprHsContextMaybe req) + (pprHsContextMaybe req) (pprHsContextMaybe prov) (ppr ty) pprPatSynSig :: (OutputableBndr name) => name -> Bool -> SDoc -> Maybe SDoc -> Maybe SDoc -> SDoc -> SDoc -pprPatSynSig ident _is_bidir tvs prov req ty +pprPatSynSig ident _is_bidir tvs req prov ty = ptext (sLit "pattern") <+> pprPrefixOcc ident <+> dcolon <+> tvs <+> context <+> ty where - context = case (prov, req) of + context = case (req, prov) of (Nothing, Nothing) -> empty - (Nothing, Just req) -> parens empty <+> darrow <+> req <+> darrow - (Just prov, Nothing) -> prov <+> darrow - (Just prov, Just req) -> prov <+> darrow <+> req <+> darrow + (Nothing, Just prov) -> parens empty <+> darrow <+> prov <+> darrow + (Just req, Nothing) -> req <+> darrow + (Just req, Just prov) -> req <+> darrow <+> prov <+> darrow instance OutputableBndr name => Outputable (FixitySig name) where ppr (FixitySig names fixity) = sep [ppr fixity, pprops] |