[clang] 0734fb2 - clang-format: [JS] Handle more keyword-named methods.
Martin Probst via cfe-commits
cfe-commits at lists.llvm.org
Fri Jan 17 01:19:06 PST 2020
Author: Martin Probst
Date: 2020-01-17T10:10:16+01:00
New Revision: 0734fb21ed5e267dda1a91e5f8b82f653ac3562d
URL: https://github.com/llvm/llvm-project/commit/0734fb21ed5e267dda1a91e5f8b82f653ac3562d
DIFF: https://github.com/llvm/llvm-project/commit/0734fb21ed5e267dda1a91e5f8b82f653ac3562d.diff
LOG: clang-format: [JS] Handle more keyword-named methods.
Summary:
Including `do`, `for`, and `while`, `if`, `else`, `try`, `catch`, in
addition to the previously handled fields. The unit test explicitly uses
methods, but this code path handles both fields and methods.
Reviewers: krasimir
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D72827
Added:
Modified:
clang/lib/Format/UnwrappedLineParser.cpp
clang/unittests/Format/FormatTestJS.cpp
Removed:
################################################################################
diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp
index ead6b4743207..18b4cc5306f5 100644
--- a/clang/lib/Format/UnwrappedLineParser.cpp
+++ b/clang/lib/Format/UnwrappedLineParser.cpp
@@ -1011,13 +1011,22 @@ void UnwrappedLineParser::parseStructuralElement() {
parseAccessSpecifier();
return;
case tok::kw_if:
+ if (Style.Language == FormatStyle::LK_JavaScript && Line->MustBeDeclaration)
+ // field/method declaration.
+ break;
parseIfThenElse();
return;
case tok::kw_for:
case tok::kw_while:
+ if (Style.Language == FormatStyle::LK_JavaScript && Line->MustBeDeclaration)
+ // field/method declaration.
+ break;
parseForOrWhileLoop();
return;
case tok::kw_do:
+ if (Style.Language == FormatStyle::LK_JavaScript && Line->MustBeDeclaration)
+ // field/method declaration.
+ break;
parseDoWhile();
return;
case tok::kw_switch:
@@ -1045,6 +1054,9 @@ void UnwrappedLineParser::parseStructuralElement() {
return;
case tok::kw_try:
case tok::kw___try:
+ if (Style.Language == FormatStyle::LK_JavaScript && Line->MustBeDeclaration)
+ // field/method declaration.
+ break;
parseTryCatch();
return;
case tok::kw_extern:
@@ -1290,6 +1302,12 @@ void UnwrappedLineParser::parseStructuralElement() {
// element continues.
break;
case tok::kw_try:
+ if (Style.Language == FormatStyle::LK_JavaScript &&
+ Line->MustBeDeclaration) {
+ // field/method declaration.
+ nextToken();
+ break;
+ }
// We arrive here when parsing function-try blocks.
if (Style.BraceWrapping.AfterFunction)
addUnwrappedLine();
diff --git a/clang/unittests/Format/FormatTestJS.cpp b/clang/unittests/Format/FormatTestJS.cpp
index f5be0d7a4ab1..0150b43a0787 100644
--- a/clang/unittests/Format/FormatTestJS.cpp
+++ b/clang/unittests/Format/FormatTestJS.cpp
@@ -358,6 +358,22 @@ TEST_F(FormatTestJS, ReservedWordsMethods) {
" x();\n"
" }\n"
"}\n");
+ verifyFormat("class KeywordNamedMethods {\n"
+ " do() {\n"
+ " }\n"
+ " for() {\n"
+ " }\n"
+ " while() {\n"
+ " }\n"
+ " if() {\n"
+ " }\n"
+ " else() {\n"
+ " }\n"
+ " try() {\n"
+ " }\n"
+ " catch() {\n"
+ " }\n"
+ "}\n");
}
TEST_F(FormatTestJS, ReservedWordsParenthesized) {
More information about the cfe-commits
mailing list