[commit: ghc] master: Move function from where clause to top level (ddb50b3)
David Terei
davidterei at gmail.com
Fri Dec 23 06:32:12 CET 2011
Ian,
Could you please pull all recent commits by me into the 7.4 branch?
Cheers,
David
On 23 December 2011 16:28, David Terei <davidterei at gmail.com> wrote:
> Repository : ssh://darcs.haskell.org//srv/darcs/ghc
>
> On branch : master
>
> http://hackage.haskell.org/trac/ghc/changeset/ddb50b3109a040f1be36ed58c230097c2a95e0d2
>
>>---------------------------------------------------------------
>
> commit ddb50b3109a040f1be36ed58c230097c2a95e0d2
> Author: David Terei <davidterei at gmail.com>
> Date: Tue Dec 20 15:15:21 2011 -0800
>
> Move function from where clause to top level
>
>>---------------------------------------------------------------
>
> compiler/main/HscMain.hs | 69 ++++++++++++++++++++++------------------------
> 1 files changed, 33 insertions(+), 36 deletions(-)
>
> diff --git a/compiler/main/HscMain.hs b/compiler/main/HscMain.hs
> index c705526..025efb9 100644
> --- a/compiler/main/HscMain.hs
> +++ b/compiler/main/HscMain.hs
> @@ -911,20 +911,18 @@ hscCheckSafeImports tcg_env = do
> text "Rule \"" <> ftext n <> text "\" ignored" $+$
> text "User defined rules are disabled under Safe Haskell"
>
> --- | Validate that safe imported modules are actually safe.
> --- For modules in the HomePackage (the package the module we
> --- are compiling in resides) this just involves checking its
> --- trust type is 'Safe' or 'Trustworthy'. For modules that
> --- reside in another package we also must check that the
> --- external pacakge is trusted. See the Note [Safe Haskell
> --- Trust Check] above for more information.
> +-- | Validate that safe imported modules are actually safe. For modules in the
> +-- HomePackage (the package the module we are compiling in resides) this just
> +-- involves checking its trust type is 'Safe' or 'Trustworthy'. For modules
> +-- that reside in another package we also must check that the external pacakge
> +-- is trusted. See the Note [Safe Haskell Trust Check] above for more
> +-- information.
> --
> --- The code for this is quite tricky as the whole algorithm
> --- is done in a few distinct phases in different parts of the
> --- code base. See RnNames.rnImportDecl for where package trust
> --- dependencies for a module are collected and unioned.
> --- Specifically see the Note [RnNames . Tracking Trust Transitively]
> --- and the Note [RnNames . Trust Own Package].
> +-- The code for this is quite tricky as the whole algorithm is done in a few
> +-- distinct phases in different parts of the code base. See
> +-- RnNames.rnImportDecl for where package trust dependencies for a module are
> +-- collected and unioned. Specifically see the Note [RnNames . Tracking Trust
> +-- Transitively] and the Note [RnNames . Trust Own Package].
> checkSafeImports :: DynFlags -> TcGblEnv -> Hsc TcGblEnv
> checkSafeImports dflags tcg_env
> = do
> @@ -941,7 +939,7 @@ checkSafeImports dflags tcg_env
> clearWarnings
> logWarnings oldErrs
>
> - -- See the Note [ Safe Haskell Inference]
> + -- See the Note [Safe Haskell Inference]
> case (not $ isEmptyBag errs) of
>
> -- We have errors!
> @@ -953,7 +951,7 @@ checkSafeImports dflags tcg_env
>
> -- All good matey!
> False -> do
> - when (packageTrustOn dflags) $ checkPkgTrust pkg_reqs
> + when (packageTrustOn dflags) $ checkPkgTrust dflags pkg_reqs
> -- add in trusted package requirements for this module
> let new_trust = emptyImportAvails { imp_trust_pkgs = catMaybes pkgs }
> return tcg_env { tcg_imports = imp_info `plusImportAvails` new_trust }
> @@ -986,22 +984,6 @@ checkSafeImports dflags tcg_env
> checkSafe (_, _, False) = return Nothing
> checkSafe (m, l, True ) = hscCheckSafe' dflags m l
>
> - -- Here we check the transitive package trust requirements are OK still.
> - checkPkgTrust :: [PackageId] -> Hsc ()
> - checkPkgTrust pkgs =
> - case errors of
> - [] -> return ()
> - _ -> (liftIO . throwIO . mkSrcErr . listToBag) errors
> - where
> - errors = catMaybes $ map go pkgs
> - go pkg
> - | trusted $ getPackageDetails (pkgState dflags) pkg
> - = Nothing
> - | otherwise
> - = Just $ mkPlainErrMsg noSrcSpan
> - $ text "The package (" <> ppr pkg <> text ") is required"
> - <> text " to be trusted but it isn't!"
> -
> -- | Check that a module is safe to import.
> --
> -- We return a package id if the safe import is OK and a Nothing otherwise
> @@ -1055,11 +1037,10 @@ hscCheckSafe' dflags m l = do
> <+> text "can't be safely imported!"
> <+> text "The module itself isn't safe."
>
> - -- | Check the package a module resides in is trusted.
> - -- Safe compiled modules are trusted without requiring
> - -- that their package is trusted. For trustworthy modules,
> - -- modules in the home package are trusted but otherwise
> - -- we check the package trust flag.
> + -- | Check the package a module resides in is trusted. Safe compiled
> + -- modules are trusted without requiring that their package is trusted. For
> + -- trustworthy modules, modules in the home package are trusted but
> + -- otherwise we check the package trust flag.
> packageTrusted :: SafeHaskellMode -> Bool -> Module -> Bool
> packageTrusted _ _ _
> | not (packageTrustOn dflags) = True
> @@ -1084,6 +1065,22 @@ hscCheckSafe' dflags m l = do
> | thisPackage dflags == modulePackageId m = True
> | otherwise = False
>
> +-- | Check the list of packages are trusted.
> +checkPkgTrust :: DynFlags -> [PackageId] -> Hsc ()
> +checkPkgTrust dflags pkgs =
> + case errors of
> + [] -> return ()
> + _ -> (liftIO . throwIO . mkSrcErr . listToBag) errors
> + where
> + errors = catMaybes $ map go pkgs
> + go pkg
> + | trusted $ getPackageDetails (pkgState dflags) pkg
> + = Nothing
> + | otherwise
> + = Just $ mkPlainErrMsg noSrcSpan
> + $ text "The package (" <> ppr pkg <> text ") is required"
> + <> text " to be trusted but it isn't!"
> +
> -- | Set module to unsafe and wipe trust information.
> --
> -- Make sure to call this method to set a module to infered unsafe,
>
>
>
> _______________________________________________
> Cvs-ghc mailing list
> Cvs-ghc at haskell.org
> http://www.haskell.org/mailman/listinfo/cvs-ghc
More information about the Cvs-ghc
mailing list