Author: Owen Pan Date: 2023-08-17T16:04:44-07:00 New Revision: e3a79503a30f8c9d8fba79f3e5427bb895f320cf
URL: https://github.com/llvm/llvm-project/commit/e3a79503a30f8c9d8fba79f3e5427bb895f320cf DIFF: https://github.com/llvm/llvm-project/commit/e3a79503a30f8c9d8fba79f3e5427bb895f320cf.diff LOG: [clang-format] Exclude kw_decltype in RemoveParentheses >From https://en.cppreference.com/w/cpp/language/decltype: Note that if the name of an object is parenthesized, it is treated as an ordinary lvalue expression, thus decltype(x) and decltype((x)) are often different types. Fixes #64786. Differential Revision: https://reviews.llvm.org/D158155 Added: Modified: clang/lib/Format/UnwrappedLineParser.cpp clang/unittests/Format/FormatTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index 2d34837a4fac04..a89265a858f405 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -2472,7 +2472,7 @@ bool UnwrappedLineParser::parseParens(TokenType AmpAmpTokenType) { const auto *PrevPrev = Prev ? Prev->getPreviousNonComment() : nullptr; const bool Blacklisted = PrevPrev && - (PrevPrev->is(tok::kw___attribute) || + (PrevPrev->isOneOf(tok::kw___attribute, tok::kw_decltype) || (SeenEqual && (PrevPrev->isOneOf(tok::kw_if, tok::kw_while) || PrevPrev->endsSequence(tok::kw_constexpr, tok::kw_if)))); diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 3d20163973d749..b4ceea865d1d41 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -26313,6 +26313,7 @@ TEST_F(FormatTest, RemoveParentheses) { Style.RemoveParentheses = FormatStyle::RPS_MultipleParentheses; verifyFormat("int x __attribute__((aligned(16))) = 0;", Style); + verifyFormat("decltype((foo->bar)) baz;", Style); verifyFormat("class __declspec(dllimport) X {};", "class __declspec((dllimport)) X {};", Style); verifyFormat("int x = (({ 0; }));", "int x = ((({ 0; })));", Style); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits