[clang] 9835cf1 - clang-format: [JS] pragmas for tslint, tsc.
Martin Probst via cfe-commits
cfe-commits at lists.llvm.org
Fri Jan 17 04:39:14 PST 2020
Author: Martin Probst
Date: 2020-01-17T13:39:05+01:00
New Revision: 9835cf159014f40e8ea655d0bb3a341ef7ec34f7
URL: https://github.com/llvm/llvm-project/commit/9835cf159014f40e8ea655d0bb3a341ef7ec34f7
DIFF: https://github.com/llvm/llvm-project/commit/9835cf159014f40e8ea655d0bb3a341ef7ec34f7.diff
LOG: clang-format: [JS] pragmas for tslint, tsc.
Summary:
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.
Reviewers: krasimir
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D72907
Added:
Modified:
clang/lib/Format/Format.cpp
clang/unittests/Format/FormatTestJS.cpp
Removed:
################################################################################
diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp
index f12bca48c630..cce9458cf22f 100644
--- a/clang/lib/Format/Format.cpp
+++ b/clang/lib/Format/Format.cpp
@@ -939,9 +939,9 @@ FormatStyle getGoogleStyle(FormatStyle::LanguageKind Language) {
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;
diff --git a/clang/unittests/Format/FormatTestJS.cpp b/clang/unittests/Format/FormatTestJS.cpp
index 0150b43a0787..ffeb53d9a33c 100644
--- a/clang/unittests/Format/FormatTestJS.cpp
+++ b/clang/unittests/Format/FormatTestJS.cpp
@@ -2168,6 +2168,38 @@ TEST_F(FormatTestJS, JSDocAnnotations) {
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'\";");
More information about the cfe-commits
mailing list