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
{-# OPTIONS -fno-warn-incomplete-patterns -optc-DNON_POSIX_SOURCE #-}
-----------------------------------------------------------------------------
{-# 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
--
--
-- GHC Driver program
--
checkOptions :: GhcMode -> [String] -> [String] -> IO ()
-- Final sanity checking before kicking off a compilation (pipeline).
checkOptions mode srcs objs = do
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 &&
-- -ohi sanity check
ohi <- readIORef v_Output_hi
if (isJust ohi &&
then throwDyn (UsageError "no input files")
else 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
-- Verify that output files point somewhere sensible.
verifyOutputFiles