[clang-format] Skip block commented out includes when sorting them (#97787)
Fixes #97539.
This commit is contained in:
parent
34855405b0
commit
ceade83ad5
@ -3222,10 +3222,16 @@ tooling::Replacements sortCppIncludes(const FormatStyle &Style, StringRef Code,
|
||||
if (Trimmed.contains(RawStringTermination))
|
||||
FormattingOff = false;
|
||||
|
||||
if (isClangFormatOff(Trimmed))
|
||||
bool IsBlockComment = false;
|
||||
|
||||
if (isClangFormatOff(Trimmed)) {
|
||||
FormattingOff = true;
|
||||
else if (isClangFormatOn(Trimmed))
|
||||
} else if (isClangFormatOn(Trimmed)) {
|
||||
FormattingOff = false;
|
||||
} else if (Trimmed.starts_with("/*")) {
|
||||
IsBlockComment = true;
|
||||
Pos = Code.find("*/", SearchFrom + 2);
|
||||
}
|
||||
|
||||
const bool EmptyLineSkipped =
|
||||
Trimmed.empty() &&
|
||||
@ -3235,9 +3241,10 @@ tooling::Replacements sortCppIncludes(const FormatStyle &Style, StringRef Code,
|
||||
|
||||
bool MergeWithNextLine = Trimmed.ends_with("\\");
|
||||
if (!FormattingOff && !MergeWithNextLine) {
|
||||
if (tooling::HeaderIncludes::IncludeRegex.match(Line, &Matches)) {
|
||||
if (!IsBlockComment &&
|
||||
tooling::HeaderIncludes::IncludeRegex.match(Trimmed, &Matches)) {
|
||||
StringRef IncludeName = Matches[2];
|
||||
if (Line.contains("/*") && !Line.contains("*/")) {
|
||||
if (Trimmed.contains("/*") && !Trimmed.contains("*/")) {
|
||||
// #include with a start of a block comment, but without the end.
|
||||
// Need to keep all the lines until the end of the comment together.
|
||||
// FIXME: This is somehow simplified check that probably does not work
|
||||
|
||||
@ -1455,6 +1455,15 @@ TEST_F(SortIncludesTest, DisableRawStringLiteralSorting) {
|
||||
#undef X
|
||||
}
|
||||
|
||||
TEST_F(SortIncludesTest, BlockCommentedOutIncludes) {
|
||||
StringRef Code{"/* #include \"foo.h\"\n"
|
||||
"#include \"bar.h\" */\n"
|
||||
"#include <chrono>"};
|
||||
|
||||
FmtStyle = getGoogleStyle(FormatStyle::LK_Cpp);
|
||||
verifyFormat(Code, sort(Code, "input.cpp", 0));
|
||||
}
|
||||
|
||||
} // end namespace
|
||||
} // end namespace format
|
||||
} // end namespace clang
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user