Skip to content
This repository was archived by the owner on Jan 2, 2021. It is now read-only.

Commit 5a2ffa4

Browse files
committed
Use 'wWarningFlags' to avoid hardcoding 'showFlag'
1 parent 71da233 commit 5a2ffa4

File tree

1 file changed

+5
-78
lines changed

1 file changed

+5
-78
lines changed

src/Development/IDE/GHC/Warnings.hs

Lines changed: 5 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
module Development.IDE.GHC.Warnings(withWarnings) where
55

6+
import Data.List
67
import ErrUtils
78
import GhcPlugins as GHC hiding (Var, (<>))
89

@@ -39,82 +40,8 @@ attachReason wr d = d{_code = StringValue <$> showReason wr}
3940
where
4041
showReason = \case
4142
NoReason -> Nothing
42-
Reason flag -> Just $ showFlag flag
43-
ErrReason flag -> showFlag <$> flag
43+
Reason flag -> showFlag flag
44+
ErrReason flag -> showFlag =<< flag
4445

45-
showFlag :: WarningFlag -> T.Text
46-
showFlag f = "-W" <> case f of
47-
Opt_WarnAllMissedSpecs -> "all-missed-specialisations"
48-
Opt_WarnAlternativeLayoutRuleTransitional -> "alternative-layout-rule-transitional"
49-
Opt_WarnAutoOrphans -> "auto-orphans"
50-
Opt_WarnCPPUndef -> "cpp-undef"
51-
Opt_WarnDeferredOutOfScopeVariables -> "deferred-out-of-scope-variables"
52-
Opt_WarnDeferredTypeErrors -> "deferred-type-errors"
53-
Opt_WarnDeprecatedFlags -> "deprecated-flags"
54-
Opt_WarnDerivingTypeable -> "deriving-typeable"
55-
Opt_WarnDodgyExports -> "dodgy-exports"
56-
Opt_WarnDodgyForeignImports -> "dodgy-foreign-imports"
57-
Opt_WarnDodgyImports -> "dodgy-imports"
58-
Opt_WarnDuplicateConstraints -> "duplicate-constraints"
59-
Opt_WarnDuplicateExports -> "duplicate-exports"
60-
Opt_WarnEmptyEnumerations -> "empty-enumerations"
61-
Opt_WarnHiShadows -> "hi-shadowing"
62-
Opt_WarnIdentities -> "identities"
63-
Opt_WarnImplicitKindVars -> "implicit-kind-vars"
64-
Opt_WarnImplicitPrelude -> "implicit-prelude"
65-
Opt_WarnInaccessibleCode -> "inaccessible-code"
66-
Opt_WarnIncompletePatterns -> "incomplete-patterns"
67-
Opt_WarnIncompletePatternsRecUpd -> "incomplete-record-updates"
68-
Opt_WarnIncompleteUniPatterns -> "incomplete-uni-patterns"
69-
Opt_WarnInlineRuleShadowing -> "inline-rule-shadowing"
70-
Opt_WarnMissedExtraSharedLib -> "missed-extra-shared-lib"
71-
Opt_WarnMissedSpecs -> "missed-specializations"
72-
Opt_WarnMissingDerivingStrategies -> "missing-deriving-strategies"
73-
Opt_WarnMissingExportedSignatures -> "missing-export-lists"
74-
Opt_WarnMissingExportList -> "missing-exported-signatures"
75-
Opt_WarnMissingFields -> "missing-fields"
76-
Opt_WarnMissingHomeModules -> "missing-home-modules"
77-
Opt_WarnMissingImportList -> "missing-import-lists"
78-
Opt_WarnMissingLocalSignatures -> "missing-local-signatures"
79-
Opt_WarnMissingMethods -> "missing-methods"
80-
Opt_WarnMissingMonadFailInstances -> "missing-monadfail-instances"
81-
Opt_WarnMissingPatternSynonymSignatures -> "missing-pattern-synonym-signatures"
82-
Opt_WarnMissingSignatures -> "missing-signatures"
83-
Opt_WarnMonomorphism -> "monomorphism-restriction"
84-
Opt_WarnNameShadowing -> "name-shadowing"
85-
Opt_WarnNonCanonicalMonadFailInstances -> "noncanonical-monadfail-instances"
86-
Opt_WarnNonCanonicalMonadInstances -> "noncanonical-monad-instances"
87-
Opt_WarnNonCanonicalMonoidInstances -> "noncanonical-monoid-instances"
88-
Opt_WarnOrphans -> "orphans"
89-
Opt_WarnOverflowedLiterals -> "overflowed-literals"
90-
Opt_WarnOverlappingPatterns -> "overlapping-patterns"
91-
Opt_WarnPartialFields -> "partial-fields"
92-
Opt_WarnPartialTypeSignatures -> "partial-type-signatures"
93-
Opt_WarnRedundantConstraints -> "redundant-constraints"
94-
Opt_WarnSafe -> "safe"
95-
Opt_WarnSemigroup -> "semigroup"
96-
Opt_WarnSimplifiableClassConstraints -> "simplifiable-class-constraints"
97-
Opt_WarnSpaceAfterBang -> "missing-space-after-bang"
98-
Opt_WarnStarBinder -> "star-binder"
99-
Opt_WarnStarIsType -> "star-is-type"
100-
Opt_WarnTabs -> "tabs"
101-
Opt_WarnTrustworthySafe -> "trustworthy-safe"
102-
Opt_WarnTypeDefaults -> "type-defaults"
103-
Opt_WarnTypedHoles -> "typed-holes"
104-
Opt_WarnUnbangedStrictPatterns -> "unbanged-strict-patterns"
105-
Opt_WarnUnrecognisedPragmas -> "unrecognised-pragmas"
106-
Opt_WarnUnrecognisedWarningFlags -> "unrecognisedarning-flags"
107-
Opt_WarnUnsafe -> "unsafe"
108-
Opt_WarnUnsupportedCallingConventions -> "unsupported-calling-conventions"
109-
Opt_WarnUnsupportedLlvmVersion -> "unsupported-llvm-version"
110-
Opt_WarnUntickedPromotedConstructors -> "unticked-promoted-constructors"
111-
Opt_WarnUnusedDoBind -> "unused-do-bind"
112-
Opt_WarnUnusedForalls -> "unused-foralls"
113-
Opt_WarnUnusedImports -> "unused-imports"
114-
Opt_WarnUnusedLocalBinds -> "unused-local-binds"
115-
Opt_WarnUnusedMatches -> "unused-matches"
116-
Opt_WarnUnusedPatternBinds -> "unused-pattern-binds"
117-
Opt_WarnUnusedTopBinds -> "unused-top-binds"
118-
Opt_WarnUnusedTypePatterns -> "unused-type-patterns"
119-
Opt_WarnWarningsDeprecations -> "deprecations"
120-
Opt_WarnWrongDoBind -> "wrong-do-bind"
46+
showFlag :: WarningFlag -> Maybe T.Text
47+
showFlag flag = ("-W" <>) . T.pack . flagSpecName <$> find ((== flag) . flagSpecFlag) wWarningFlags

0 commit comments

Comments
 (0)