[PATCH] D119785: [clang-format] Fix formatting of struct-like records followed by variable declaration.
Björn Schäpers via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Feb 15 11:21:05 PST 2022
HazardyKnusperkeks added inline comments.
================
Comment at: clang/lib/Format/UnwrappedLineFormatter.cpp:735
// We don't merge short records.
- FormatToken *RecordTok = Line.First;
- // Skip record modifiers.
- while (RecordTok->Next &&
- RecordTok->isOneOf(tok::kw_typedef, tok::kw_export,
- Keywords.kw_declare, Keywords.kw_abstract,
- tok::kw_default, Keywords.kw_override,
- tok::kw_public, tok::kw_private,
- tok::kw_protected, Keywords.kw_internal))
- RecordTok = RecordTok->Next;
- if (RecordTok &&
- RecordTok->isOneOf(tok::kw_class, tok::kw_union, tok::kw_struct,
- Keywords.kw_interface))
+ if (isRecordLBrace(*Line.Last))
return 0;
----------------
curdeius wrote:
> curdeius wrote:
> > MyDeveloperDay wrote:
> > > wow these are equivalent? do we need to worry about trailing comments?
> > >
> > > ```
> > > public class A { /* comment */
> > > ```
> > Yes, before we were doing a poor man's scan skipping some (but not all) keywords (hence the bugs) that could appear before a record.
> > That was error-prone and redundant w.r.t. the parsing done in UnwrappedLineParser.
> >
> > Anyway, good catch, I'll test what happens with comments.
> @MyDeveloperDay, do we want this (probably more coherent):
> ```
> verifyFormat("struct A {};", AllowSimpleBracedStatements); // already tested
> verifyFormat("struct A { /* comment */ };", AllowSimpleBracedStatements); // added
> ```
> or this (current behaviour):
> ```
> verifyFormat("struct A {};", AllowSimpleBracedStatements); // already tested
> verifyFormat("struct A { /* comment */\n"
> "};", AllowSimpleBracedStatements); // added
> ```
>
> (adapted from `TEST_F(FormatTest, FormatShortBracedStatements)`)
> @MyDeveloperDay, do we want this (probably more coherent):
> ```
> verifyFormat("struct A {};", AllowSimpleBracedStatements); // already tested
> verifyFormat("struct A { /* comment */ };", AllowSimpleBracedStatements); // added
> ```
> or this (current behaviour):
> ```
> verifyFormat("struct A {};", AllowSimpleBracedStatements); // already tested
> verifyFormat("struct A { /* comment */\n"
> "};", AllowSimpleBracedStatements); // added
> ```
>
> (adapted from `TEST_F(FormatTest, FormatShortBracedStatements)`)
Ideally I'd say depending on the input. It not dependent on that, the former.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D119785/new/
https://reviews.llvm.org/D119785
More information about the cfe-commits
mailing list