[PATCH] D72907: clang-format: [JS] pragmas for tslint, tsc.
Martin Probst via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Jan 17 01:48:37 PST 2020
mprobst created this revision.
mprobst added a reviewer: krasimir.
mprobst added a project: clang.
tslint and tsc (the TypeScript compiler itself) use comment pragmas of
the style:
// tslint:disable-next-line:foo
// @ts-ignore
These must not be wrapped and must stay on their own line, in isolation.
For tslint, this required adding it to the pragma regexp. The comments
starting with `@` are already left alone, but this change adds test
coverage for them.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D72907
Files:
clang/lib/Format/Format.cpp
clang/unittests/Format/FormatTestJS.cpp
Index: clang/unittests/Format/FormatTestJS.cpp
===================================================================
--- clang/unittests/Format/FormatTestJS.cpp
+++ clang/unittests/Format/FormatTestJS.cpp
@@ -2168,6 +2168,38 @@
getGoogleJSStyleWithColumns(20)));
}
+TEST_F(FormatTestJS, TslintComments) {
+ // tslint uses pragma comments that must be on their own line.
+ verifyFormat("// Comment that needs wrapping. Comment that needs wrapping. "
+ "Comment that needs\n"
+ "// wrapping. Trailing line.\n"
+ "// tslint:disable-next-line:must-be-on-own-line",
+ "// Comment that needs wrapping. Comment that needs wrapping. "
+ "Comment that needs wrapping.\n"
+ "// Trailing line.\n"
+ "// tslint:disable-next-line:must-be-on-own-line");
+}
+
+TEST_F(FormatTestJS, TscComments) {
+ // As above, @ts-ignore and @ts-check comments must be on their own line.
+ verifyFormat("// Comment that needs wrapping. Comment that needs wrapping. "
+ "Comment that needs\n"
+ "// wrapping. Trailing line.\n"
+ "// @ts-ignore",
+ "// Comment that needs wrapping. Comment that needs wrapping. "
+ "Comment that needs wrapping.\n"
+ "// Trailing line.\n"
+ "// @ts-ignore");
+ verifyFormat("// Comment that needs wrapping. Comment that needs wrapping. "
+ "Comment that needs\n"
+ "// wrapping. Trailing line.\n"
+ "// @ts-check",
+ "// Comment that needs wrapping. Comment that needs wrapping. "
+ "Comment that needs wrapping.\n"
+ "// Trailing line.\n"
+ "// @ts-check");
+}
+
TEST_F(FormatTestJS, RequoteStringsSingle) {
verifyFormat("var x = 'foo';", "var x = \"foo\";");
verifyFormat("var x = 'fo\\'o\\'';", "var x = \"fo'o'\";");
Index: clang/lib/Format/Format.cpp
===================================================================
--- clang/lib/Format/Format.cpp
+++ clang/lib/Format/Format.cpp
@@ -939,9 +939,9 @@
GoogleStyle.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_Empty;
GoogleStyle.AlwaysBreakBeforeMultilineStrings = false;
GoogleStyle.BreakBeforeTernaryOperators = false;
- // taze:, triple slash directives (`/// <...`), @see, which is commonly
- // followed by overlong URLs.
- GoogleStyle.CommentPragmas = "(taze:|^/[ \t]*<|@see)";
+ // taze:, triple slash directives (`/// <...`), tslint:, and @see, which is
+ // commonly followed by overlong URLs.
+ GoogleStyle.CommentPragmas = "(taze:|^/[ \t]*<|tslint:|@see)";
GoogleStyle.MaxEmptyLinesToKeep = 3;
GoogleStyle.NamespaceIndentation = FormatStyle::NI_All;
GoogleStyle.SpacesInContainerLiterals = false;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D72907.238717.patch
Type: text/x-patch
Size: 2846 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200117/6dbf0bb5/attachment.bin>
More information about the cfe-commits
mailing list