[PATCH] D29186: clang-format: [JS] do not format MPEG transport streams.
Martin Probst via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Jan 26 10:13:11 PST 2017
mprobst updated this revision to Diff 85934.
mprobst added a comment.
- Move MPEG check into Format.cpp.
https://reviews.llvm.org/D29186
Files:
lib/Format/Format.cpp
tools/clang-format/ClangFormat.cpp
unittests/Format/FormatTestJS.cpp
Index: unittests/Format/FormatTestJS.cpp
===================================================================
--- unittests/Format/FormatTestJS.cpp
+++ unittests/Format/FormatTestJS.cpp
@@ -1036,6 +1036,15 @@
verifyFormat("var regex = search.match(/(?:\?|&)times=([^?&]+)/i);");
}
+TEST_F(FormatTestJS, IgnoresMpegTS) {
+ std::string MpegTS(200, ' ');
+ MpegTS.replace(0, strlen("nearlyLooks + like + ts + code; "),
+ "nearlyLooks + like + ts + code; ");
+ MpegTS[0] = 0x47;
+ MpegTS[188] = 0x47;
+ verifyFormat(MpegTS, MpegTS);
+}
+
TEST_F(FormatTestJS, TypeAnnotations) {
verifyFormat("var x: string;");
verifyFormat("var x: {a: string; b: number;} = {};");
Index: tools/clang-format/ClangFormat.cpp
===================================================================
--- tools/clang-format/ClangFormat.cpp
+++ tools/clang-format/ClangFormat.cpp
@@ -256,6 +256,7 @@
llvm::errs() << llvm::toString(FormatStyle.takeError()) << "\n";
return true;
}
+
if (SortIncludes.getNumOccurrences() != 0)
FormatStyle->SortIncludes = SortIncludes;
unsigned CursorPosition = Cursor;
Index: lib/Format/Format.cpp
===================================================================
--- lib/Format/Format.cpp
+++ lib/Format/Format.cpp
@@ -1462,12 +1462,22 @@
return Replaces;
}
+bool isMpegTS(StringRef Code) {
+ // MPEG transport streams use the ".ts" file extension. clang-format should
+ // not attempt to format those. MPEG TS' frame format starts with 0x47 every
+ // 189 bytes - detect that and return.
+ return Code.size() > 188 && Code[0] == 0x47 && Code[188] == 0x47;
+}
+
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))
+ return Replaces;
if (Style.Language == FormatStyle::LanguageKind::LK_JavaScript)
return sortJavaScriptImports(Style, Code, Ranges, FileName);
sortCppIncludes(Style, Code, Ranges, FileName, Replaces, Cursor);
@@ -1813,7 +1823,8 @@
FormatStyle Expanded = expandPresets(Style);
if (Expanded.DisableFormat)
return tooling::Replacements();
-
+ if (Expanded.Language == FormatStyle::LK_JavaScript && isMpegTS(Code))
+ return tooling::Replacements();
auto Env = Environment::CreateVirtualEnvironment(Code, FileName, Ranges);
if (Style.Language == FormatStyle::LK_JavaScript &&
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D29186.85934.patch
Type: text/x-patch
Size: 2653 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170126/ec060532/attachment-0001.bin>
More information about the cfe-commits
mailing list