Document the perplexing reversed nature of extraPkgConfs and friends.
authorEdward Z. Yang <ezyang@cs.stanford.edu>
Sun, 19 Mar 2017 23:06:55 +0000 (16:06 -0700)
committerEdward Z. Yang <ezyang@cs.stanford.edu>
Mon, 20 Mar 2017 20:59:23 +0000 (13:59 -0700)
Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
compiler/main/DynFlags.hs

index f80f9a7..057c2c0 100644 (file)
@@ -805,16 +805,26 @@ data DynFlags = DynFlags {
   --  Package flags
   extraPkgConfs         :: [PkgConfRef] -> [PkgConfRef],
         -- ^ The @-package-db@ flags given on the command line, in the order
-        -- they appeared.
+        -- they appeared.  In *reverse* order that they're specified
+        -- on the command line.  This is intended to be applied with the
+        -- list of "initial" package databases derived from @GHC_PACKAGE_PATH@;
+        -- see 'getPackageConfRefs'; this is a function because 'extraPkgConfs'
+        -- maybe configured to filter out certain flags from *either* the
+        -- user command line, or the base command; see for example
+        -- 'removeUserPkgConf'.
 
   ignorePackageFlags    :: [IgnorePackageFlag],
-        -- ^ The @-ignore-package@ flags from the command line
+        -- ^ The @-ignore-package@ flags from the command line.
+        -- In *reverse* order that they're specified on the command line.
   packageFlags          :: [PackageFlag],
-        -- ^ The @-package@ and @-hide-package@ flags from the command-line
+        -- ^ The @-package@ and @-hide-package@ flags from the command-line.
+        -- In *reverse* order that they're specified on the command line.
   pluginPackageFlags    :: [PackageFlag],
-        -- ^ The @-plugin-package-id@ flags from command line
+        -- ^ The @-plugin-package-id@ flags from command line.
+        -- In *reverse* order that they're specified on the command line.
   trustFlags            :: [TrustFlag],
-        -- ^ The @-trust@ and @-distrust@ flags
+        -- ^ The @-trust@ and @-distrust@ flags.
+        -- In *reverse* order that they're specified on the command line.
   packageEnv            :: Maybe FilePath,
         -- ^ Filepath to the package environment file (if overriding default)