diff options
author | Ryan Scott <ryan.gl.scott@gmail.com> | 2020-05-04 13:21:49 -0400 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2020-05-06 04:43:58 -0400 |
commit | 9afd92512b41cf6c6de3a17b474d8d4bb01158c3 (patch) | |
tree | 0daac06ebb37203adb5b0a4a1e8219718544aacc | |
parent | 94e7c563ab24fe452a16900a6777349970df1945 (diff) | |
download | haskell-9afd92512b41cf6c6de3a17b474d8d4bb01158c3.tar.gz |
Refactoring: Use bindSigTyVarsFV in rnMethodBinds
`rnMethodBinds` was explicitly using `xoptM` to determine if
`ScopedTypeVariables` is enabled before bringing type variables
bound by the class/instance header into scope. However, this `xoptM`
logic is already performed by the `bindSigTyVarsFV` function. This
patch uses `bindSigTyVarsFV` in `rnMethodBinds` to reduce the number
of places where we need to consult if `ScopedTypeVariables` is on.
This is purely refactoring, and there should be no user-visible
change in behavior.
-rw-r--r-- | compiler/GHC/Rename/Bind.hs | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/compiler/GHC/Rename/Bind.hs b/compiler/GHC/Rename/Bind.hs index c6c175c07c..fe7fb78b08 100644 --- a/compiler/GHC/Rename/Bind.hs +++ b/compiler/GHC/Rename/Bind.hs @@ -869,8 +869,7 @@ rnMethodBinds is_cls_decl cls ktv_names binds sigs -- Rename the bindings RHSs. Again there's an issue about whether the -- type variables from the class/instance head are in scope. -- Answer no in Haskell 2010, but yes if you have -XScopedTypeVariables - ; scoped_tvs <- xoptM LangExt.ScopedTypeVariables - ; (binds'', bind_fvs) <- maybe_extend_tyvar_env scoped_tvs $ + ; (binds'', bind_fvs) <- bindSigTyVarsFV ktv_names $ do { binds_w_dus <- mapBagM (rnLBind (mkScopedTvFn other_sigs')) binds' ; let bind_fvs = foldr (\(_,_,fv1) fv2 -> fv1 `plusFV` fv2) emptyFVs binds_w_dus @@ -878,12 +877,6 @@ rnMethodBinds is_cls_decl cls ktv_names binds sigs ; return ( binds'', spec_inst_prags' ++ other_sigs' , sig_fvs `plusFV` sip_fvs `plusFV` bind_fvs) } - where - -- For the method bindings in class and instance decls, we extend - -- the type variable environment iff -XScopedTypeVariables - maybe_extend_tyvar_env scoped_tvs thing_inside - | scoped_tvs = extendTyVarEnvFVRn ktv_names thing_inside - | otherwise = thing_inside rnMethodBindLHS :: Bool -> Name -> LHsBindLR GhcPs GhcPs |