diff options
author | Zubin Duggal <zubin.duggal@gmail.com> | 2021-11-19 14:21:58 +0530 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2022-04-06 13:02:04 -0400 |
commit | babb47d263e0df0fa4e16da6bf86164a2a3e07ea (patch) | |
tree | 63f9ea3a73ca093e10d14e8a368d6adfadc0f895 /compiler/GHC/Driver/Flags.hs | |
parent | d2ae0a3a1a8e31e5d769f1aea95e85793043cb3a (diff) | |
download | haskell-babb47d263e0df0fa4e16da6bf86164a2a3e07ea.tar.gz |
Add warnings for file header pragmas that appear in the body of a module (#20385)
Once we are done parsing the header of a module to obtain the options, we
look through the rest of the tokens in order to determine if they contain any
misplaced file header pragmas that would usually be ignored, potentially
resulting in bad error messages.
The warnings are reported immediately so that later errors don't shadow
over potentially helpful warnings.
Metric Increase:
T13719
Diffstat (limited to 'compiler/GHC/Driver/Flags.hs')
-rw-r--r-- | compiler/GHC/Driver/Flags.hs | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/GHC/Driver/Flags.hs b/compiler/GHC/Driver/Flags.hs index a2ac1b75f4..671d163ac7 100644 --- a/compiler/GHC/Driver/Flags.hs +++ b/compiler/GHC/Driver/Flags.hs @@ -503,6 +503,7 @@ data WarningFlag = | Opt_WarnIdentities | Opt_WarnTabs | Opt_WarnUnrecognisedPragmas + | Opt_WarnMisplacedPragmas | Opt_WarnDodgyForeignImports | Opt_WarnUnusedDoBind | Opt_WarnWrongDoBind @@ -623,6 +624,7 @@ warnFlagNames wflag = case wflag of Opt_WarnTypedHoles -> "typed-holes" :| [] Opt_WarnPartialTypeSignatures -> "partial-type-signatures" :| [] Opt_WarnUnrecognisedPragmas -> "unrecognised-pragmas" :| [] + Opt_WarnMisplacedPragmas -> "misplaced-pragmas" :| [] Opt_WarnUnsafe -> "unsafe" :| [] Opt_WarnUnsupportedCallingConventions -> "unsupported-calling-conventions" :| [] Opt_WarnUnsupportedLlvmVersion -> "unsupported-llvm-version" :| [] @@ -731,6 +733,7 @@ standardWarnings -- see Note [Documenting warning flags] Opt_WarnDeferredOutOfScopeVariables, Opt_WarnPartialTypeSignatures, Opt_WarnUnrecognisedPragmas, + Opt_WarnMisplacedPragmas, Opt_WarnDuplicateExports, Opt_WarnDerivingDefaults, Opt_WarnOverflowedLiterals, |