summaryrefslogtreecommitdiffstats
path: root/clang/lib/Format/Format.cpp
diff options
context:
space:
mode:
authorKrasimir Georgiev <krasimir@google.com>2017-08-29 13:51:38 +0000
committerKrasimir Georgiev <krasimir@google.com>2017-08-29 13:51:38 +0000
commita2e7d0dee30d60bb212b6f362d54c1840427abe9 (patch)
tree90a0d2d1143dfc54f7961fc59a191c8dc1627bf9 /clang/lib/Format/Format.cpp
parent81341d70222cffeff4e7fd4ddee31d80120755b3 (diff)
downloadbcm5719-llvm-a2e7d0dee30d60bb212b6f362d54c1840427abe9.tar.gz
bcm5719-llvm-a2e7d0dee30d60bb212b6f362d54c1840427abe9.zip
[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
Diffstat (limited to 'clang/lib/Format/Format.cpp')
-rw-r--r--clang/lib/Format/Format.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp
index aa4ed8c42a7..4b067fcea3e 100644
--- a/clang/lib/Format/Format.cpp
+++ b/clang/lib/Format/Format.cpp
@@ -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 &)>
OpenPOWER on IntegriCloud