diff options
author | Ian Lynagh <igloo@earth.li> | 2007-08-05 15:33:41 +0000 |
---|---|---|
committer | Ian Lynagh <igloo@earth.li> | 2007-08-05 15:33:41 +0000 |
commit | d4050431de1adddedb240e497f77f89301f77070 (patch) | |
tree | 2c934a59a89e8908c168ccb4055d5301118d0fc6 | |
parent | 4d401b9d0514c93efc296ac99f0e89e4514996b7 (diff) | |
download | haskell-d4050431de1adddedb240e497f77f89301f77070.tar.gz |
Add a --supported-languages flag
Print the list of strings that are accepted in a LANGUAGE pragma,
or as a -XFoo flag. (No can be prepended to any of the strings).
-rw-r--r-- | compiler/main/DynFlags.hs | 5 | ||||
-rw-r--r-- | compiler/main/Main.hs | 45 | ||||
-rw-r--r-- | docs/users_guide/flags.xml | 6 | ||||
-rw-r--r-- | docs/users_guide/using.xml | 12 |
4 files changed, 50 insertions, 18 deletions
diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index 73cd8eb068..f12bb7927f 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -47,7 +47,8 @@ module DynFlags ( allFlags, -- misc stuff - machdepCCOpts, picCCOpts + machdepCCOpts, picCCOpts, + supportedLanguages, ) where #include "HsVersions.h" @@ -1169,6 +1170,8 @@ fFlags = [ ( "allow-incoherent-instances", Opt_IncoherentInstances ) ] +supportedLanguages :: [String] +supportedLanguages = map fst xFlags -- These -X<blah> flags can all be reversed with -XNo<blah> xFlags :: [(String, DynFlag)] diff --git a/compiler/main/Main.hs b/compiler/main/Main.hs index 964b48804d..3c94bf5586 100644 --- a/compiler/main/Main.hs +++ b/compiler/main/Main.hs @@ -33,7 +33,7 @@ import Packages ( dumpPackages ) import DriverPhases ( Phase(..), isSourceFilename, anyHsc, startPhase, isHaskellSrcFilename ) import StaticFlags -import DynFlags ( defaultDynFlags ) +import DynFlags import BasicTypes ( failed ) import ErrUtils ( putMsg ) import FastString ( getFastStringTable, isZEncoded, hasZEncoding ) @@ -85,11 +85,13 @@ main = -- to find out what version of GHC it's using before package.conf -- exists, so starting the session fails. case cli_mode of - ShowVersion -> do showVersion - exitWith ExitSuccess - ShowNumVersion -> do putStrLn cProjectVersion - exitWith ExitSuccess - _ -> return () + ShowSupportedLanguages -> do showSupportedLanguages + exitWith ExitSuccess + ShowVersion -> do showVersion + exitWith ExitSuccess + ShowNumVersion -> do putStrLn cProjectVersion + exitWith ExitSuccess + _ -> return () -- start our GHC session session <- GHC.newSession mbMinusB @@ -153,18 +155,21 @@ main = ---------------- Final sanity checking ----------- checkOptions cli_mode dflags srcs objs - ---------------- Do the business ----------- + ---------------- Do the business ----------- + let alreadyHandled = panic (show cli_mode ++ + " should already have been handled") case cli_mode of - ShowUsage -> showGhcUsage dflags cli_mode - PrintLibdir -> putStrLn (topDir dflags) - ShowVersion -> panic "ShowVersion should already have been handled" - ShowNumVersion -> panic "ShowNumVersion should already have been handled" - ShowInterface f -> doShowIface dflags f - DoMake -> doMake session srcs - DoMkDependHS -> doMkDependHS session (map fst srcs) - StopBefore p -> oneShot dflags p srcs - DoInteractive -> interactiveUI session srcs Nothing - DoEval expr -> interactiveUI session srcs (Just expr) + ShowUsage -> showGhcUsage dflags cli_mode + PrintLibdir -> putStrLn (topDir dflags) + ShowSupportedLanguages -> alreadyHandled + ShowVersion -> alreadyHandled + ShowNumVersion -> alreadyHandled + ShowInterface f -> doShowIface dflags f + DoMake -> doMake session srcs + DoMkDependHS -> doMkDependHS session (map fst srcs) + StopBefore p -> oneShot dflags p srcs + DoInteractive -> interactiveUI session srcs Nothing + DoEval expr -> interactiveUI session srcs (Just expr) dumpFinalStats dflags exitWith ExitSuccess @@ -291,6 +296,7 @@ verifyOutputFiles dflags = do data CmdLineMode = ShowUsage -- ghc -? | PrintLibdir -- ghc --print-libdir + | ShowSupportedLanguages -- ghc --supported-languages | ShowVersion -- ghc -V/--version | ShowNumVersion -- ghc --numeric-version | ShowInterface String -- ghc --show-iface @@ -354,6 +360,7 @@ mode_flags = , ( "V" , PassFlag (setMode ShowVersion)) , ( "-version" , PassFlag (setMode ShowVersion)) , ( "-numeric-version", PassFlag (setMode ShowNumVersion)) + , ( "-supported-languages", PassFlag (setMode ShowSupportedLanguages)) ------- interfaces ---------------------------------------------------- , ( "-show-iface" , HasArg (\f -> setMode (ShowInterface f) @@ -442,6 +449,10 @@ showBanner cli_mode dflags = do hPutStr stderr " booted by GHC version " hPutStrLn stderr cBooterVersion +showSupportedLanguages :: IO () +showSupportedLanguages = do mapM_ putStrLn supportedLanguages + exitWith ExitSuccess + showVersion :: IO () showVersion = do putStrLn (cProjectName ++ ", version " ++ cProjectVersion) diff --git a/docs/users_guide/flags.xml b/docs/users_guide/flags.xml index eaa622596f..b0dbfb1f94 100644 --- a/docs/users_guide/flags.xml +++ b/docs/users_guide/flags.xml @@ -60,6 +60,12 @@ <entry>-</entry> </row> <row> + <entry><option>––supported-languages</option></entry> + <entry>display the supported language extensions</entry> + <entry>mode</entry> + <entry>-</entry> + </row> + <row> <entry><option>––version</option></entry> <entry>display GHC version</entry> <entry>mode</entry> diff --git a/docs/users_guide/using.xml b/docs/users_guide/using.xml index c24a20c3c9..7a1391ce85 100644 --- a/docs/users_guide/using.xml +++ b/docs/users_guide/using.xml @@ -343,6 +343,18 @@ module X where <varlistentry> <term> <cmdsynopsis> + <command>ghc --supported-languages</command> + </cmdsynopsis> + <indexterm><primary><option>––supported-languages</option></primary></indexterm> + </term> + <listitem> + <para>Print the supported language extensions.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <cmdsynopsis> <command>ghc --version</command> <command>ghc -V</command> </cmdsynopsis> |