Skip to content

Commit 04d71ea

Browse files
authored
[Format] Dont treat LBrace after extends/implements as initializer list (#108524)
This extends the fix in #106242 for other derived class types.
1 parent 9ec1f65 commit 04d71ea

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

clang/lib/Format/UnwrappedLineParser.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -4042,7 +4042,7 @@ void UnwrappedLineParser::parseRecord(bool ParseAsExpr) {
40424042
}
40434043

40444044
auto IsListInitialization = [&] {
4045-
if (!ClassName || IsDerived)
4045+
if (!ClassName || IsDerived || JSPastExtendsOrImplements)
40464046
return false;
40474047
assert(FormatTok->is(tok::l_brace));
40484048
const auto *Prev = FormatTok->getPreviousNonComment();

clang/unittests/Format/FormatTestJS.cpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -579,12 +579,17 @@ TEST_F(FormatTestJS, GoogScopes) {
579579
"});");
580580
}
581581

582-
TEST_F(FormatTestJS, GoogAnonymousClass) {
582+
TEST_F(FormatTestJS, ClassExtends) {
583583
verifyFormat("a = class extends goog.structs.a {\n"
584584
" a() {\n"
585585
" return 0;\n"
586586
" }\n"
587587
"};");
588+
verifyFormat("a = class Foo extends goog.structs.a {\n"
589+
" a() {\n"
590+
" return 0;\n"
591+
" }\n"
592+
"};");
588593
}
589594

590595
TEST_F(FormatTestJS, IIFEs) {

clang/unittests/Format/TokenAnnotatorTest.cpp

+8
Original file line numberDiff line numberDiff line change
@@ -3277,6 +3277,14 @@ TEST_F(TokenAnnotatorTest, BraceKind) {
32773277
EXPECT_TOKEN(Tokens[8], tok::r_brace, TT_ClassRBrace);
32783278
EXPECT_BRACE_KIND(Tokens[8], BK_Block);
32793279

3280+
Tokens = annotate("a = class Foo extends goog.a {};",
3281+
getGoogleStyle(FormatStyle::LK_JavaScript));
3282+
ASSERT_EQ(Tokens.size(), 12u) << Tokens;
3283+
EXPECT_TOKEN(Tokens[8], tok::l_brace, TT_ClassLBrace);
3284+
EXPECT_BRACE_KIND(Tokens[8], BK_Block);
3285+
EXPECT_TOKEN(Tokens[9], tok::r_brace, TT_ClassRBrace);
3286+
EXPECT_BRACE_KIND(Tokens[9], BK_Block);
3287+
32803288
Tokens = annotate("#define FOO(X) \\\n"
32813289
" struct X##_tag_ {};");
32823290
ASSERT_EQ(Tokens.size(), 14u) << Tokens;

0 commit comments

Comments
 (0)