Author: Owen Pan Date: 2025-04-17T19:07:14-07:00 New Revision: c99ffe58af23251d83073b8ad002536edc3864ae
URL: https://github.com/llvm/llvm-project/commit/c99ffe58af23251d83073b8ad002536edc3864ae DIFF: https://github.com/llvm/llvm-project/commit/c99ffe58af23251d83073b8ad002536edc3864ae.diff LOG: [clang-format] Fix a bug in FormatToken::isObjCAccessSpecifier() (#136109) Fix #136092 Added: Modified: clang/lib/Format/FormatToken.h clang/unittests/Format/TokenAnnotatorTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/FormatToken.h b/clang/lib/Format/FormatToken.h index 87e16397ad069..946cd7b81587f 100644 --- a/clang/lib/Format/FormatToken.h +++ b/clang/lib/Format/FormatToken.h @@ -706,8 +706,9 @@ struct FormatToken { [[nodiscard]] bool isTypeOrIdentifier(const LangOptions &LangOpts) const; bool isObjCAccessSpecifier() const { - return Next && Next->isOneOf(tok::objc_public, tok::objc_protected, - tok::objc_package, tok::objc_private); + return is(tok::at) && Next && + Next->isOneOf(tok::objc_public, tok::objc_protected, + tok::objc_package, tok::objc_private); } /// Returns whether \p Tok is ([{ or an opening < of a template or in diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp index 2c7319ccefec2..043ee2e088ddb 100644 --- a/clang/unittests/Format/TokenAnnotatorTest.cpp +++ b/clang/unittests/Format/TokenAnnotatorTest.cpp @@ -3963,6 +3963,12 @@ TEST_F(TokenAnnotatorTest, UTF8StringLiteral) { EXPECT_TOKEN(Tokens[1], tok::utf8_string_literal, TT_Unknown); } +TEST_F(TokenAnnotatorTest, IdentifierPackage) { + auto Tokens = annotate("auto package;"); + ASSERT_EQ(Tokens.size(), 4u) << Tokens; + EXPECT_FALSE(Tokens[0]->isObjCAccessSpecifier()); +} + } // namespace } // namespace format } // namespace clang _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits