[clang] [clang-format] Fix annotation of Java/JavaScript keyword extends (PR #125038)
Owen Pan via cfe-commits
cfe-commits at lists.llvm.org
Wed Jan 29 23:31:41 PST 2025
https://github.com/owenca created https://github.com/llvm/llvm-project/pull/125038
Uncovered in #124891.
>From e5e706b332864ab8b90e0aac9b4f57096675c5fd Mon Sep 17 00:00:00 2001
From: Owen Pan <owenpiano at gmail.com>
Date: Wed, 29 Jan 2025 23:28:13 -0800
Subject: [PATCH] [clang-format] Fix annotation of Java/JavaScript keyword
extends
Uncovered in #124891.
---
clang/lib/Format/TokenAnnotator.cpp | 5 +++++
clang/unittests/Format/TokenAnnotatorTest.cpp | 1 +
2 files changed, 6 insertions(+)
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp
index a172df5291ae62..d2992a532d23d1 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -2583,6 +2583,11 @@ class AnnotatingParser {
if (Tok.isNot(tok::identifier) || !Tok.Previous)
return false;
+ if ((Style.isJavaScript() || Style.Language == FormatStyle::LK_Java) &&
+ Tok.is(Keywords.kw_extends)) {
+ return false;
+ }
+
if (const auto *NextNonComment = Tok.getNextNonComment();
(!NextNonComment && !Line.InMacroBody) ||
(NextNonComment &&
diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp
index fc77e277947c56..d1dc6a740bae5f 100644
--- a/clang/unittests/Format/TokenAnnotatorTest.cpp
+++ b/clang/unittests/Format/TokenAnnotatorTest.cpp
@@ -3458,6 +3458,7 @@ TEST_F(TokenAnnotatorTest, BraceKind) {
Tokens = annotate("a = class Foo extends goog.a {};",
getGoogleStyle(FormatStyle::LK_JavaScript));
ASSERT_EQ(Tokens.size(), 12u) << Tokens;
+ EXPECT_TOKEN(Tokens[4], tok::identifier, TT_Unknown); // Not TT_StartOfName
EXPECT_TOKEN(Tokens[8], tok::l_brace, TT_ClassLBrace);
EXPECT_BRACE_KIND(Tokens[8], BK_Block);
EXPECT_TOKEN(Tokens[9], tok::r_brace, TT_ClassRBrace);
More information about the cfe-commits
mailing list