Author: Marek Kurdej Date: 2022-05-18T07:27:45+02:00 New Revision: 573a5b58001d6dd86d404832b7b1c45a1b4f4c55
URL: https://github.com/llvm/llvm-project/commit/573a5b58001d6dd86d404832b7b1c45a1b4f4c55 DIFF: https://github.com/llvm/llvm-project/commit/573a5b58001d6dd86d404832b7b1c45a1b4f4c55.diff LOG: Revert "[clang-format] Fix WhitespaceSensitiveMacros not being honoured when macro closing parenthesis is followed by a newline." This reverts commit 50cd52d9357224cce66a9e00c9a0417c658a5655. It provoked regressions in C++ and ObjectiveC as described in https://reviews.llvm.org/D123676#3515949. Reproducers: ``` MACRO_BEGIN #if A int f(); #else int f(); #endif ``` ``` NS_SWIFT_NAME(A) @interface B : C @property(readonly) D value; @end ``` Added: Modified: clang/lib/Format/FormatTokenLexer.cpp clang/lib/Format/UnwrappedLineParser.cpp clang/unittests/Format/FormatTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/FormatTokenLexer.cpp b/clang/lib/Format/FormatTokenLexer.cpp index d1d236cf032b2..187b30fd55a7e 100644 --- a/clang/lib/Format/FormatTokenLexer.cpp +++ b/clang/lib/Format/FormatTokenLexer.cpp @@ -1027,10 +1027,7 @@ FormatToken *FormatTokenLexer::getNextToken() { Tokens.back()->Tok.getIdentifierInfo()->getPPKeywordID() == tok::pp_define) && it != Macros.end()) { - if (it->second == TT_UntouchableMacroFunc) - FormatTok->setFinalizedType(TT_UntouchableMacroFunc); - else - FormatTok->setType(it->second); + FormatTok->setType(it->second); if (it->second == TT_IfMacro) { // The lexer token currently has type tok::kw_unknown. However, for this // substitution to be treated correctly in the TokenAnnotator, faking diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index bde543131931e..be081a9189600 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -1839,8 +1839,7 @@ void UnwrappedLineParser::parseStructuralElement(IfStmtKind *IfKind, : CommentsBeforeNextToken.front()->NewlinesBefore > 0; if (FollowedByNewline && (Text.size() >= 5 || FunctionLike) && - tokenCanStartNewLine(*FormatTok) && Text == Text.upper() && - !PreviousToken->isTypeFinalized()) { + tokenCanStartNewLine(*FormatTok) && Text == Text.upper()) { PreviousToken->setFinalizedType(TT_FunctionLikeOrFreestandingMacro); addUnwrappedLine(); return; diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 22c46a129403b..e54a6db2ca46b 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -23661,11 +23661,6 @@ TEST_F(FormatTest, WhitespaceSensitiveMacros) { // Don't use the helpers here, since 'mess up' will change the whitespace // and these are all whitespace sensitive by definition - - // Newlines are important here. - EXPECT_EQ("FOO(1+2 );\n", format("FOO(1+2 );\n", Style)); - EXPECT_EQ("FOO(1+2 )\n", format("FOO(1+2 )\n", Style)); - EXPECT_EQ("FOO(String-ized&Messy+But(: :Still)=Intentional);", format("FOO(String-ized&Messy+But(: :Still)=Intentional);", Style)); EXPECT_EQ( _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits