diff options
Diffstat (limited to 'ghc')
-rw-r--r-- | ghc/Main.hs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/ghc/Main.hs b/ghc/Main.hs index 4ef44f20ca..fc6ab88960 100644 --- a/ghc/Main.hs +++ b/ghc/Main.hs @@ -492,6 +492,10 @@ isDoMakeMode :: Mode -> Bool isDoMakeMode (Right (Right DoMake)) = True isDoMakeMode _ = False +isDoEvalMode :: Mode -> Bool +isDoEvalMode (Right (Right (DoEval _))) = True +isDoEvalMode _ = False + #ifdef GHCI isInteractiveMode :: PostLoadMode -> Bool isInteractiveMode DoInteractive = True @@ -629,6 +633,15 @@ setMode newMode newFlag = liftEwM $ do | isShowGhcUsageMode newMode && isDoInteractiveMode oldMode -> ((showGhciUsageMode, newFlag), []) + + -- If we have both -e and --interactive then -e always wins + _ | isDoEvalMode oldMode && + isDoInteractiveMode newMode -> + ((oldMode, oldFlag), []) + | isDoEvalMode newMode && + isDoInteractiveMode oldMode -> + ((newMode, newFlag), []) + -- Otherwise, --help/--version/--numeric-version always win | isDominantFlag oldMode -> ((oldMode, oldFlag), []) | isDominantFlag newMode -> ((newMode, newFlag), []) |