[commit: ghc] master: Documentation for PackageArg/ModRenaming/PackageFlag (8a91079)
git at git.haskell.org
git at git.haskell.org
Tue Mar 10 21:32:18 UTC 2015
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/8a91079b5895c1505717b5d401617269720ad8ab/ghc
>---------------------------------------------------------------
commit 8a91079b5895c1505717b5d401617269720ad8ab
Author: Edward Z. Yang <ezyang at cs.stanford.edu>
Date: Mon Mar 9 13:52:40 2015 -0700
Documentation for PackageArg/ModRenaming/PackageFlag
Summary:
[skip-ci]
Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>
Test Plan: validate
Reviewers: austin, bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D723
>---------------------------------------------------------------
8a91079b5895c1505717b5d401617269720ad8ab
compiler/main/DynFlags.hs | 42 +++++++++++++++++++++++++++++++-----------
1 file changed, 31 insertions(+), 11 deletions(-)
diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
index 74e0ce6..aa6b7f9 100644
--- a/compiler/main/DynFlags.hs
+++ b/compiler/main/DynFlags.hs
@@ -1104,20 +1104,40 @@ isNoLink :: GhcLink -> Bool
isNoLink NoLink = True
isNoLink _ = False
-data PackageArg = PackageArg String
- | PackageIdArg String
- | PackageKeyArg String
+-- | We accept flags which make packages visible, but how they select
+-- the package varies; this data type reflects what selection criterion
+-- is used.
+data PackageArg =
+ PackageArg String -- ^ @-package@, by 'PackageName'
+ | PackageIdArg String -- ^ @-package-id@, by 'SourcePackageId'
+ | PackageKeyArg String -- ^ @-package-key@, by 'InstalledPackageId'
deriving (Eq, Show)
-data ModRenaming = ModRenaming Bool [(ModuleName, ModuleName)]
- deriving (Eq)
-
+-- | Represents the renaming that may be associated with an exposed
+-- package, e.g. the @rns@ part of @-package "foo (rns)"@.
+--
+-- Here are some example parsings of the package flags (where
+-- a string literal is punned to be a 'ModuleName':
+--
+-- * @-package foo@ is @ModRenaming True []@
+-- * @-package foo ()@ is @ModRenaming False []@
+-- * @-package foo (A)@ is @ModRenaming False [("A", "A")]@
+-- * @-package foo (A as B)@ is @ModRenaming False [("A", "B")]@
+-- * @-package foo with (A as B)@ is @ModRenaming True [("A", "B")]@
+data ModRenaming = ModRenaming {
+ modRenamingWithImplicit :: Bool, -- ^ Bring all exposed modules into scope?
+ modRenamings :: [(ModuleName, ModuleName)] -- ^ Bring module @m@ into scope
+ -- under name @n at .
+ } deriving (Eq)
+
+-- | Flags for manipulating packages.
data PackageFlag
- = ExposePackage PackageArg ModRenaming
- | HidePackage String
- | IgnorePackage String
- | TrustPackage String
- | DistrustPackage String
+ = ExposePackage PackageArg ModRenaming -- ^ @-package@, @-package-id@
+ -- and @-package-key@
+ | HidePackage String -- ^ @-hide-package@
+ | IgnorePackage String -- ^ @-ignore-package@
+ | TrustPackage String -- ^ @-trust-package@
+ | DistrustPackage String -- ^ @-distrust-package@
deriving (Eq)
defaultHscTarget :: Platform -> HscTarget
More information about the ghc-commits
mailing list