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) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits