Skip to content
Snippets Groups Projects
Commit a38ae69a authored by sheaf's avatar sheaf Committed by Marge Bot
Browse files

lint-codes: add Hadrian targets

This commit adds new Hadrian targets:

  codes, codes:used - list all used diagnostic codes
  codes:outdated - list outdated diagnostic codes

This allows users to easily query GHC for used and outdated
diagnostic codes, e.g.

  hadrian/build -j --flavour=<..> codes

will list all used diagnostic codes in the command line by running
the lint-codes utility in the "list codes" mode of operation.

The diagnostic code consistency and coverage test is still run as usual,
through the testsuite:

  hadrian/build test --only="codes"
parent 477d223c
No related branches found
No related tags found
No related merge requests found
......@@ -78,6 +78,7 @@ executable hadrian
, Rules.BinaryDist
, Rules.CabalReinstall
, Rules.Clean
, Rules.Codes
, Rules.Compile
, Rules.Dependencies
, Rules.Docspec
......
......@@ -15,6 +15,7 @@ import qualified Base
import qualified CommandLine
import qualified Environment
import qualified Rules
import qualified Rules.Codes
import qualified Rules.Clean
import qualified Rules.Docspec
import qualified Rules.Documentation
......@@ -99,6 +100,7 @@ main = do
Rules.Docspec.docspecRules
Rules.Documentation.documentationRules
Rules.Clean.cleanRules
Rules.Codes.codesRules
Rules.Lint.lintRules
Rules.Nofib.nofibRules
Rules.oracleRules
......
module Rules.Codes
( codesRules
) where
import Base
import Packages ( programPath, lintCodes )
import Settings.Program ( programContext )
data Usage
= Used
| Outdated
describeUsage :: Usage -> String
describeUsage Used = "used"
describeUsage Outdated = "outdated"
usageArg :: Usage -> String
usageArg Used = "list"
usageArg Outdated = "outdated"
codesRules :: Rules ()
codesRules = do
"codes:used" ~> codes Used
"codes:outdated" ~> codes Outdated
"codes" ~> codes Used
codes :: Usage -> Action ()
codes usage = do
let stage = Stage1 -- ?
codesProgram <- programPath =<< programContext stage lintCodes
need [ codesProgram ]
ghcLibDir <- stageLibPath stage
let args = [ usageArg usage, ghcLibDir ]
cmdLine = unwords ( codesProgram : args )
putBuild $ "| Computing " ++ describeUsage usage ++ " diagnostic codes."
putBuild $ "| " <> cmdLine
cmd_ cmdLine
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment