| Opt_RunCPSZ
| Opt_ConvertToZipCfgAndBack
| Opt_AutoLinkPackages
+ | Opt_ImplicitImportQualified
-- keeping stuff
| Opt_KeepHiDiffs
( "allow-incoherent-instances", Opt_IncoherentInstances,
deprecatedForLanguage "IncoherentInstances" ),
( "gen-manifest", Opt_GenManifest, const Supported ),
- ( "embed-manifest", Opt_EmbedManifest, const Supported )
+ ( "embed-manifest", Opt_EmbedManifest, const Supported ),
+ ( "implicit-import-qualified", Opt_ImplicitImportQualified, const Supported )
]
supportedLanguages :: [String]
= lookupImportedName rdr_name
| otherwise
- = -- First look up the name in the normal environment.
- lookupGreRn_maybe rdr_name `thenM` \ mb_gre ->
+ = do
+ -- First look up the name in the normal environment.
+ mb_gre <- lookupGreRn_maybe rdr_name
case mb_gre of {
Just gre -> returnM (gre_name gre) ;
- Nothing ->
+ Nothing -> do
-- We allow qualified names on the command line to refer to
-- *any* name exported by any module in scope, just as if
-- there was an "import qualified M" declaration for every
-- module.
- getModule `thenM` \ mod ->
- if isQual rdr_name && mod == iNTERACTIVE then
- -- This test is not expensive,
- lookupQualifiedName rdr_name -- and only happens for failed lookups
- else do
+ allow_qual <- doptM Opt_ImplicitImportQualified
+ mod <- getModule
+ -- This test is not expensive,
+ -- and only happens for failed lookups
+ if isQual rdr_name && allow_qual && mod == iNTERACTIVE
+ then lookupQualifiedName rdr_name
+ else do
traceRn $ text "lookupGlobalOccRn"
- unboundName rdr_name }
+ unboundName rdr_name
+ }
lookupImportedName :: RdrName -> TcRnIf m n Name
-- Lookup the occurrence of an imported name
<entry>dynamic</entry>
<entry>-</entry>
</row>
+ <row>
+ <entry><option>-fno-implicit-import-qualified</option></entry>
+ <entry><link linkend="ghci-import-qualified">Turn off
+ implicit qualified import of everything in GHCi</link></entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
</tbody>
</tgroup>
loaded</literal>”.</para>
</sect3>
- <sect3>
+ <sect3 id="ghci-import-qualified">
<title>Qualified names</title>
<para>To make life slightly easier, the GHCi prompt also
behaves as if there is an implicit <literal>import
qualified</literal> declaration for every module in every
- package, and every module currently loaded into GHCi.</para>
+ package, and every module currently loaded into GHCi. This
+ behaviour can be disabled with the flag <option>-fno-implicit-import-qualified</option><indexterm><primary><option>-fno-implicit-import-qualified</option></primary></indexterm>.</para>
</sect3>
<sect3>
_other -> 1
}
+ -- turn on -fimplicit-import-qualified for GHCi now, so that it
+ -- can be overriden from the command-line
+ dflags1a | DoInteractive <- cli_mode = imp_qual_enabled
+ | DoEval _ <- cli_mode = imp_qual_enabled
+ | otherwise = dflags1
+ where imp_qual_enabled = dflags1 `dopt_set` Opt_ImplicitImportQualified
+
-- The rest of the arguments are "dynamic"
-- Leftover ones are presumably files
- (dflags2, fileish_args, dynamicFlagWarnings) <- GHC.parseDynamicFlags dflags1 argv3
+ (dflags2, fileish_args, dynamicFlagWarnings) <- GHC.parseDynamicFlags dflags1a argv3
let flagWarnings = staticFlagWarnings
++ modeFlagWarnings