[project @ 2003-07-21 15:14:18 by ross]
authorross <unknown>
Mon, 21 Jul 2003 15:14:18 +0000 (15:14 +0000)
committerross <unknown>
Mon, 21 Jul 2003 15:14:18 +0000 (15:14 +0000)
Check for unknown flags before (rather than after) checking -o and -ohi
flags, avoiding confusing behaviour like

% ghc -bad-option -c x.hs
ghc-6.0: unrecognised flags: -bad-option

% ghc -bad-option -c x.hs -ohi x.hi
ghc-6.0: -ohi can only be used when compiling a single source file
Usage: For basic information, try the `--help' option.

% ghc -bad-option -c x.hs -o x.o
ghc-6.0: can't apply -o to multiple source files
Usage: For basic information, try the `--help' option.

(looks better with scores of flags)

please merge to STABLE

ghc/compiler/main/Main.hs

index f9f64cb..7da0074 100644 (file)
@@ -1,7 +1,7 @@
 {-# OPTIONS -fno-warn-incomplete-patterns -optc-DNON_POSIX_SOURCE #-}
 
 -----------------------------------------------------------------------------
--- $Id: Main.hs,v 1.130 2003/07/17 12:04:53 simonmar Exp $
+-- $Id: Main.hs,v 1.131 2003/07/21 15:14:18 ross Exp $
 --
 -- GHC Driver program
 --
@@ -266,6 +266,10 @@ main =
 checkOptions :: GhcMode -> [String] -> [String] -> IO ()
      -- Final sanity checking before kicking off a compilation (pipeline).
 checkOptions mode srcs objs = do
+     -- Complain about any unknown flags
+   let unknown_opts = [ f | f@('-':_) <- srcs ]
+   when (notNull unknown_opts) (unknownFlagsErr unknown_opts)
+
        -- -ohi sanity check
    ohi <- readIORef v_Output_hi
    if (isJust ohi && 
@@ -285,10 +289,6 @@ checkOptions mode srcs objs = do
        then throwDyn (UsageError "no input files")
        else do
 
-     -- Complain about any unknown flags
-   let unknown_opts = [ f | f@('-':_) <- srcs ]
-   when (notNull unknown_opts) (unknownFlagsErr unknown_opts)
-
      -- Verify that output files point somewhere sensible.
    verifyOutputFiles