[llvm-branch-commits] [clang] 5426b2f - [clang-format] PR48535 clang-format Incorrectly Removes Space After C Style Cast When Type Is Not a Pointer
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Dec 23 06:49:32 PST 2020
Author: mydeveloperday
Date: 2020-12-23T14:45:14Z
New Revision: 5426b2f9ed9f6f3a3e1d6452325f7a49a5d08ec4
URL: https://github.com/llvm/llvm-project/commit/5426b2f9ed9f6f3a3e1d6452325f7a49a5d08ec4
DIFF: https://github.com/llvm/llvm-project/commit/5426b2f9ed9f6f3a3e1d6452325f7a49a5d08ec4.diff
LOG: [clang-format] PR48535 clang-format Incorrectly Removes Space After C Style Cast When Type Is Not a Pointer
https://bugs.llvm.org/show_bug.cgi?id=48535
using `SpaceAfterCStyleCast: true`
```
size_t idx = (size_t) a;
size_t idx = (size_t) (a - 1);
```
is formatted as:
```
size_t idx = (size_t) a;
size_t idx = (size_t)(a - 1);
```
This revision aims to improve that by improving the function which tries to identify a CastRParen
Reviewed By: curdeius
Differential Revision: https://reviews.llvm.org/D93626
Added:
Modified:
clang/lib/Format/TokenAnnotator.cpp
clang/unittests/Format/FormatTest.cpp
Removed:
################################################################################
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp
index 733ca1e0e852..a0cb86cfcebf 100755
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -1915,6 +1915,13 @@ class AnnotatingParser {
if (Tok.Next->isOneOf(tok::identifier, tok::kw_this))
return true;
+ if (Tok.Next->is(tok::l_paren) &&
+ !(Tok.Previous && Tok.Previous->is(tok::identifier) &&
+ Tok.Previous->Previous &&
+ Tok.Previous->Previous->isOneOf(tok::arrowstar, tok::arrow,
+ tok::star)))
+ return true;
+
if (!Tok.Next->Next)
return false;
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index d2aed304f213..ee757c14eafb 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -11989,6 +11989,20 @@ TEST_F(FormatTest, ConfigurableSpacesInParentheses) {
" do_something((int) i);\n"
"} while (something( ));",
Spaces);
+
+ verifyFormat("size_t idx = (size_t) (ptr - ((char *) file));", Spaces);
+ verifyFormat("size_t idx = (size_t) a;", Spaces);
+ verifyFormat("size_t idx = (size_t) (a - 1);", Spaces);
+ verifyFormat("size_t idx = (a->*foo)(a - 1);", Spaces);
+ verifyFormat("size_t idx = (a->foo)(a - 1);", Spaces);
+ verifyFormat("size_t idx = (*foo)(a - 1);", Spaces);
+ Spaces.SpaceAfterCStyleCast = false;
+ verifyFormat("size_t idx = (size_t)(ptr - ((char *)file));", Spaces);
+ verifyFormat("size_t idx = (size_t)a;", Spaces);
+ verifyFormat("size_t idx = (size_t)(a - 1);", Spaces);
+ verifyFormat("size_t idx = (a->*foo)(a - 1);", Spaces);
+ verifyFormat("size_t idx = (a->foo)(a - 1);", Spaces);
+ verifyFormat("size_t idx = (*foo)(a - 1);", Spaces);
}
TEST_F(FormatTest, ConfigurableSpacesInSquareBrackets) {
More information about the llvm-branch-commits
mailing list