Fix #12099: Remove bogus flags
authorSean Gillespie <sean@mistersg.net>
Fri, 10 Jun 2016 10:53:37 +0000 (12:53 +0200)
committerBen Gamari <ben@smart-cactus.org>
Fri, 10 Jun 2016 14:22:34 +0000 (16:22 +0200)
Remove -fwarn- and -fno-warn- from flagsForCompletion

Testcase: Fix linter error on T12099

For Issue #12099

Reviewers: austin, thomie, bgamari

Reviewed By: austin, thomie, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D2281

GHC Trac Issues: #12099

compiler/main/DynFlags.hs
testsuite/tests/ghc-api/T12099.hs [new file with mode: 0644]
testsuite/tests/ghc-api/T12099.stdout [new file with mode: 0644]
testsuite/tests/ghc-api/all.T

index 30d4d30..5515b8c 100644 (file)
@@ -2994,9 +2994,9 @@ dynamic_flags_deps = [
     wWarningFlagsDeps
  ++ map (mkFlag turnOff "fno-warn-" unSetWarningFlag . hideFlag)
     wWarningFlagsDeps
- ++ [ (NotDeprecated, unrecognisedWarning "W")
-    , (NotDeprecated, unrecognisedWarning "fwarn-")
-    , (NotDeprecated, unrecognisedWarning "fno-warn-") ]
+ ++ [ (NotDeprecated, unrecognisedWarning "W"),
+      (Deprecated,    unrecognisedWarning "fwarn-"),
+      (Deprecated,    unrecognisedWarning "fno-warn-") ]
  ++ map (mkFlag turnOn  "f"         setExtensionFlag  ) fLangFlagsDeps
  ++ map (mkFlag turnOff "fno-"      unSetExtensionFlag) fLangFlagsDeps
  ++ map (mkFlag turnOn  "X"         setExtensionFlag  ) xFlagsDeps
@@ -3015,7 +3015,7 @@ dynamic_flags_deps = [
 -- | This is where we handle unrecognised warning flags. We only issue a warning
 -- if -Wunrecognised-warning-flags is set. See Trac #11429 for context.
 unrecognisedWarning :: String -> Flag (CmdLineP DynFlags)
-unrecognisedWarning prefix = defFlag prefix (Prefix action)
+unrecognisedWarning prefix = defHiddenFlag prefix (Prefix action)
   where
     action :: String -> EwM (CmdLineP DynFlags) ()
     action flag = do
diff --git a/testsuite/tests/ghc-api/T12099.hs b/testsuite/tests/ghc-api/T12099.hs
new file mode 100644 (file)
index 0000000..d5d5d54
--- /dev/null
@@ -0,0 +1,27 @@
+module Main where
+
+import DynFlags
+
+import Control.Monad
+import Data.List
+
+-- Verify bogus flags aren't printed on flagsForCompletion and
+-- allNonDeprecatedFlags:
+--  * -fwarn-
+--  * -fno-warn-
+--
+-- Should print nothing
+main :: IO ()
+main = mapM_ print $ fwarnFlags (flagsForCompletion True) ++ nonDepFwarnFlags
+
+-- Get flags beginning with -fwarn- and -fno-warn-
+fwarnFlags :: [String] -> [String]
+fwarnFlags = filter isFwarn
+  where isFwarn flag = any (flip isPrefixOf $ flag) ["-fwarn-", "-fno-warn"]
+
+-- Get suggested flags for -fwarn-, -fno-warn-
+nonDepFwarnFlags :: [String]
+nonDepFwarnFlags = filter isFwarn allNonDeprecatedFlags
+  where isFwarn "-fwarn-"    = True
+        isFwarn "-fno-warn-" = True
+        isFwarn _            = False
diff --git a/testsuite/tests/ghc-api/T12099.stdout b/testsuite/tests/ghc-api/T12099.stdout
new file mode 100644 (file)
index 0000000..e69de29
index 12c64eb..377c1e3 100644 (file)
@@ -26,3 +26,4 @@ test('T9015', extra_run_opts('"' + config.libdir + '"'),
               ['-package ghc'])
 test('T11579', extra_run_opts('"' + config.libdir + '"'), compile_and_run,
      ['-package ghc'])
+test('T12099', normal, compile_and_run, ['-package ghc'])