diff options
author | Andre Kuhlenschmidt <andre.kuhlenschmidt@gmail.com> | 2025-08-27 10:08:26 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-08-27 10:08:26 -0700 |
commit | c649d31c596e6ca4a19103abba6499ff904ed9cc (patch) | |
tree | 8ad5201a828861896c7b24084f91d02e0ff56f20 /flang/lib/Parser/preprocessor.cpp | |
parent | 6bd844812385dd5cb65e08fe9561be9f91ace876 (diff) | |
download | llvm-c649d31c596e6ca4a19103abba6499ff904ed9cc.zip llvm-c649d31c596e6ca4a19103abba6499ff904ed9cc.tar.gz llvm-c649d31c596e6ca4a19103abba6499ff904ed9cc.tar.bz2 |
[flang][warnings] systematically guard warnings (#154234)
This change modifies the messages API to make it impossible to forget to
call ShouldWarn by moving the call inside of the API. The low level API
should be avoided and developers should call Warn on a SemanticContext
or FoldingContext.
Diffstat (limited to 'flang/lib/Parser/preprocessor.cpp')
-rw-r--r-- | flang/lib/Parser/preprocessor.cpp | 51 |
1 files changed, 18 insertions, 33 deletions
diff --git a/flang/lib/Parser/preprocessor.cpp b/flang/lib/Parser/preprocessor.cpp index 0aadc41..ae14e2d 100644 --- a/flang/lib/Parser/preprocessor.cpp +++ b/flang/lib/Parser/preprocessor.cpp @@ -742,12 +742,9 @@ void Preprocessor::Directive(const TokenSequence &dir, Prescanner &prescanner) { "# missing or invalid name"_err_en_US); } else { if (dir.IsAnythingLeft(++j)) { - if (prescanner.features().ShouldWarn( - common::UsageWarning::Portability)) { - prescanner.Say(common::UsageWarning::Portability, - dir.GetIntervalProvenanceRange(j, tokens - j), - "#undef: excess tokens at end of directive"_port_en_US); - } + prescanner.Warn(common::UsageWarning::Portability, + dir.GetIntervalProvenanceRange(j, tokens - j), + "#undef: excess tokens at end of directive"_port_en_US); } else { definitions_.erase(nameToken); } @@ -760,12 +757,9 @@ void Preprocessor::Directive(const TokenSequence &dir, Prescanner &prescanner) { "#%s: missing name"_err_en_US, dirName); } else { if (dir.IsAnythingLeft(++j)) { - if (prescanner.features().ShouldWarn( - common::UsageWarning::Portability)) { - prescanner.Say(common::UsageWarning::Portability, - dir.GetIntervalProvenanceRange(j, tokens - j), - "#%s: excess tokens at end of directive"_port_en_US, dirName); - } + prescanner.Warn(common::UsageWarning::Portability, + dir.GetIntervalProvenanceRange(j, tokens - j), + "#%s: excess tokens at end of directive"_port_en_US, dirName); } doThen = IsNameDefined(nameToken) == (dirName == "ifdef"); } @@ -784,11 +778,9 @@ void Preprocessor::Directive(const TokenSequence &dir, Prescanner &prescanner) { } } else if (dirName == "else") { if (dir.IsAnythingLeft(j)) { - if (prescanner.features().ShouldWarn(common::UsageWarning::Portability)) { - prescanner.Say(common::UsageWarning::Portability, - dir.GetIntervalProvenanceRange(j, tokens - j), - "#else: excess tokens at end of directive"_port_en_US); - } + prescanner.Warn(common::UsageWarning::Portability, + dir.GetIntervalProvenanceRange(j, tokens - j), + "#else: excess tokens at end of directive"_port_en_US); } if (ifStack_.empty()) { prescanner.Say(dir.GetTokenProvenanceRange(dirOffset), @@ -815,11 +807,9 @@ void Preprocessor::Directive(const TokenSequence &dir, Prescanner &prescanner) { } } else if (dirName == "endif") { if (dir.IsAnythingLeft(j)) { - if (prescanner.features().ShouldWarn(common::UsageWarning::Portability)) { - prescanner.Say(common::UsageWarning::Portability, - dir.GetIntervalProvenanceRange(j, tokens - j), - "#endif: excess tokens at end of directive"_port_en_US); - } + prescanner.Warn(common::UsageWarning::Portability, + dir.GetIntervalProvenanceRange(j, tokens - j), + "#endif: excess tokens at end of directive"_port_en_US); } else if (ifStack_.empty()) { prescanner.Say(dir.GetTokenProvenanceRange(dirOffset), "#endif: no #if, #ifdef, or #ifndef"_err_en_US); @@ -866,12 +856,9 @@ void Preprocessor::Directive(const TokenSequence &dir, Prescanner &prescanner) { ++k; } if (k >= pathTokens) { - if (prescanner.features().ShouldWarn( - common::UsageWarning::Portability)) { - prescanner.Say(common::UsageWarning::Portability, - dir.GetIntervalProvenanceRange(j, tokens - j), - "#include: expected '>' at end of included file"_port_en_US); - } + prescanner.Warn(common::UsageWarning::Portability, + dir.GetIntervalProvenanceRange(j, tokens - j), + "#include: expected '>' at end of included file"_port_en_US); } TokenSequence braced{path, 1, k - 1}; include = braced.ToString(); @@ -897,11 +884,9 @@ void Preprocessor::Directive(const TokenSequence &dir, Prescanner &prescanner) { } k = path.SkipBlanks(k + 1); if (k < pathTokens && path.TokenAt(k).ToString() != "!") { - if (prescanner.features().ShouldWarn(common::UsageWarning::Portability)) { - prescanner.Say(common::UsageWarning::Portability, - dir.GetIntervalProvenanceRange(j, tokens - j), - "#include: extra stuff ignored after file name"_port_en_US); - } + prescanner.Warn(common::UsageWarning::Portability, + dir.GetIntervalProvenanceRange(j, tokens - j), + "#include: extra stuff ignored after file name"_port_en_US); } std::string buf; llvm::raw_string_ostream error{buf}; |