From 3421ad30321bb7fa42cbe0511438d6d7db033f56 Mon Sep 17 00:00:00 2001 From: sof Date: Fri, 5 Jul 2002 16:15:14 +0000 Subject: [PATCH] [project @ 2002-07-05 16:15:14 by sof] When validating the number of source files on the command-line wrt other options, only consider source files. i.e., don't consider .a's and .o's that inadvertently, and idempotently, might be present. --- ghc/compiler/main/DriverPhases.hs | 10 ++++++++-- ghc/compiler/main/Main.hs | 14 ++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/ghc/compiler/main/DriverPhases.hs b/ghc/compiler/main/DriverPhases.hs index e25e358..214cd36 100644 --- a/ghc/compiler/main/DriverPhases.hs +++ b/ghc/compiler/main/DriverPhases.hs @@ -1,5 +1,5 @@ ----------------------------------------------------------------------------- --- $Id: DriverPhases.hs,v 1.19 2002/04/11 12:03:33 simonpj Exp $ +-- $Id: DriverPhases.hs,v 1.20 2002/07/05 16:15:14 sof Exp $ -- -- GHC Driver -- @@ -19,7 +19,8 @@ module DriverPhases ( hsbootish_file, hsbootish_suffix, objish_file, objish_suffix, cish_file, cish_suffix, - isExtCore_file, extcoreish_suffix + isExtCore_file, extcoreish_suffix, + isSourceFile -- :: FilePath -> Bool ) where import DriverUtil @@ -118,3 +119,8 @@ objish_file = objish_suffix . getFileSuffix hsbootish_file = hsbootish_suffix . getFileSuffix isExtCore_file = extcoreish_suffix . getFileSuffix + +isSourceFile :: FilePath -> Bool +isSourceFile f = + haskellish_src_file f || + cish_file f diff --git a/ghc/compiler/main/Main.hs b/ghc/compiler/main/Main.hs index 0e4910a..3cb06dd 100644 --- a/ghc/compiler/main/Main.hs +++ b/ghc/compiler/main/Main.hs @@ -1,7 +1,7 @@ {-# OPTIONS -fno-warn-incomplete-patterns -optc-DNON_POSIX_SOURCE #-} ----------------------------------------------------------------------------- --- $Id: Main.hs,v 1.106 2002/05/01 17:56:57 sof Exp $ +-- $Id: Main.hs,v 1.107 2002/07/05 16:15:14 sof Exp $ -- -- GHC Driver program -- @@ -42,7 +42,8 @@ import DriverFlags ( buildStaticHscOpts, dynamic_flags, processArgs, static_flags) import DriverMkDepend ( beginMkDependHS, endMkDependHS ) -import DriverPhases ( Phase(HsPp, Hsc), haskellish_src_file, objish_file ) +import DriverPhases ( Phase(HsPp, Hsc), haskellish_src_file, objish_file, + isSourceFile ) import DriverUtil ( add, handle, handleDyn, later, splitFilename, unknownFlagsErr, getFileSuffix ) @@ -257,12 +258,13 @@ main = if (mode == DoInteractive) then beginInteractive srcs else do -- -o sanity checking + let real_srcs = filter isSourceFile srcs -- filters out .a and .o that might appear o_file <- readIORef v_Output_file - if (srcs `lengthExceeds` 1 && isJust o_file && mode /= DoLink && mode /= DoMkDLL) + if (real_srcs `lengthExceeds` 1 && isJust o_file && mode /= DoLink && mode /= DoMkDLL) then throwDyn (UsageError "can't apply -o to multiple source files") else do - if null srcs then throwDyn (UsageError "no input files") else do + if null real_srcs then throwDyn (UsageError "no input files") else do let compileFile src = do restoreDynFlags @@ -280,19 +282,15 @@ main = let not_hs_file = not (haskellish_src_file src) pp <- if not_hs_file || mode == StopBefore Hsc || mode == StopBefore HsPp then return src_and_suff else do --- hPutStrLn stderr "before" >> hFlush stderr phases <- genPipeline (StopBefore Hsc) stop_flag False{-not persistent-} defaultHscLang src_and_suff --- hPutStrLn stderr "after" >> hFlush stderr pipeLoop phases src_and_suff False{-no linking-} False{-no -o flag-} basename suffix -- rest of compilation hsc_lang <- dynFlag hscLang --- hPutStrLn stderr ("before-1 " ++ show (pp,mode)) >> hFlush stderr phases <- genPipeline mode stop_flag True hsc_lang pp --- hPutStrLn stderr "after" >> hFlush stderr (r,_) <- pipeLoop phases pp (mode==DoLink || mode==DoMkDLL) True{-use -o flag-} basename suffix return r -- 1.7.10.4