mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-27 03:48:33 +00:00
[clang-format] Do not format likely xml
Summary: This patch detects the leading '<' in likely xml files and stops formatting in that case. A recent use of a Qt xml file with a .ts extension triggered this: http://doc.qt.io/qt-4.8/linguist-ts-file-format.html Reviewers: djasper Reviewed By: djasper Subscribers: sammccall, cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D37136 llvm-svn: 311999
This commit is contained in:
parent
81341d7022
commit
a2e7d0dee3
@ -1539,14 +1539,19 @@ bool isMpegTS(StringRef Code) {
|
||||
return Code.size() > 188 && Code[0] == 0x47 && Code[188] == 0x47;
|
||||
}
|
||||
|
||||
bool likelyXml(StringRef Code) {
|
||||
return Code.ltrim().startswith("<");
|
||||
}
|
||||
|
||||
tooling::Replacements sortIncludes(const FormatStyle &Style, StringRef Code,
|
||||
ArrayRef<tooling::Range> Ranges,
|
||||
StringRef FileName, unsigned *Cursor) {
|
||||
tooling::Replacements Replaces;
|
||||
if (!Style.SortIncludes)
|
||||
return Replaces;
|
||||
if (Style.Language == FormatStyle::LanguageKind::LK_JavaScript &&
|
||||
isMpegTS(Code))
|
||||
if (likelyXml(Code) ||
|
||||
(Style.Language == FormatStyle::LanguageKind::LK_JavaScript &&
|
||||
isMpegTS(Code)))
|
||||
return Replaces;
|
||||
if (Style.Language == FormatStyle::LanguageKind::LK_JavaScript)
|
||||
return sortJavaScriptImports(Style, Code, Ranges, FileName);
|
||||
@ -1894,7 +1899,8 @@ tooling::Replacements reformat(const FormatStyle &Style, StringRef Code,
|
||||
FormatStyle Expanded = expandPresets(Style);
|
||||
if (Expanded.DisableFormat)
|
||||
return tooling::Replacements();
|
||||
if (Expanded.Language == FormatStyle::LK_JavaScript && isMpegTS(Code))
|
||||
if (likelyXml(Code) ||
|
||||
(Expanded.Language == FormatStyle::LK_JavaScript && isMpegTS(Code)))
|
||||
return tooling::Replacements();
|
||||
|
||||
typedef std::function<tooling::Replacements(const Environment &)>
|
||||
|
@ -11253,6 +11253,13 @@ TEST_F(FormatTest, UTF8CharacterLiteralCpp11) {
|
||||
EXPECT_EQ("auto c = u8'a';", format("auto c = u8'a';"));
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, DoNotFormatLikelyXml) {
|
||||
EXPECT_EQ("<!-- ;> -->",
|
||||
format("<!-- ;> -->", getGoogleStyle()));
|
||||
EXPECT_EQ(" <!-- >; -->",
|
||||
format(" <!-- >; -->", getGoogleStyle()));
|
||||
}
|
||||
|
||||
} // end namespace
|
||||
} // end namespace format
|
||||
} // end namespace clang
|
||||
|
@ -398,6 +398,17 @@ TEST_F(SortIncludesTest, ValidAffactedRangesAfterDeduplicatingIncludes) {
|
||||
EXPECT_EQ(26u, Ranges[0].getLength());
|
||||
}
|
||||
|
||||
TEST_F(SortIncludesTest, DoNotSortLikelyXml) {
|
||||
EXPECT_EQ("<!--;\n"
|
||||
"#include <b>\n"
|
||||
"#include <a>\n"
|
||||
"-->",
|
||||
sort("<!--;\n"
|
||||
"#include <b>\n"
|
||||
"#include <a>\n"
|
||||
"-->"));
|
||||
}
|
||||
|
||||
} // end namespace
|
||||
} // end namespace format
|
||||
} // end namespace clang
|
||||
|
Loading…
x
Reference in New Issue
Block a user