diff options
author | Matthew Pickering <matthewtpickering@gmail.com> | 2016-07-01 01:15:01 +0200 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2016-07-01 14:12:37 +0200 |
commit | b412d8230b20223beff797d6207868aea9fd2085 (patch) | |
tree | e04b5e55debdeba41e0b641b74763d278a331bc1 /compiler/rename | |
parent | 81b437bcc680745d5d50d731b978a1764f40ab36 (diff) | |
download | haskell-b412d8230b20223beff797d6207868aea9fd2085.tar.gz |
Allow one type signature for multiple pattern synonyms
This makes pattern synonym signatures more consistent with normal
type signatures.
Updates haddock submodule.
Differential Revision: https://phabricator.haskell.org/D2083
Diffstat (limited to 'compiler/rename')
-rw-r--r-- | compiler/rename/RnBinds.hs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/compiler/rename/RnBinds.hs b/compiler/rename/RnBinds.hs index 0466de375e..f6c18b41c5 100644 --- a/compiler/rename/RnBinds.hs +++ b/compiler/rename/RnBinds.hs @@ -558,8 +558,8 @@ mkSigTvFn sigs = add_scoped_tvs names (hsScopedTvs sig_ty) env add_scoped_sig (L _ (TypeSig names sig_ty)) env = add_scoped_tvs names (hsWcScopedTvs sig_ty) env - add_scoped_sig (L _ (PatSynSig name sig_ty)) env - = add_scoped_tvs [name] (hsScopedTvs sig_ty) env + add_scoped_sig (L _ (PatSynSig names sig_ty)) env + = add_scoped_tvs names (hsScopedTvs sig_ty) env add_scoped_sig _ env = env add_scoped_tvs :: [Located Name] -> [Name] -> NameEnv [Name] -> NameEnv [Name] @@ -925,13 +925,13 @@ renameSig ctxt sig@(MinimalSig s (L l bf)) = do new_bf <- traverse (lookupSigOccRn ctxt sig) bf return (MinimalSig s (L l new_bf), emptyFVs) -renameSig ctxt sig@(PatSynSig v ty) - = do { v' <- lookupSigOccRn ctxt sig v +renameSig ctxt sig@(PatSynSig vs ty) + = do { new_vs <- mapM (lookupSigOccRn ctxt sig) vs ; (ty', fvs) <- rnHsSigType ty_ctxt ty - ; return (PatSynSig v' ty', fvs) } + ; return (PatSynSig new_vs ty', fvs) } where ty_ctxt = GenericCtx (text "a pattern synonym signature for" - <+> quotes (ppr v)) + <+> ppr_sig_bndrs vs) ppr_sig_bndrs :: [Located RdrName] -> SDoc ppr_sig_bndrs bs = quotes (pprWithCommas ppr bs) |