[PATCH] D141959: [clang-format] Fix inconsistent identification of operator&
Björn Schäpers via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 17 13:20:26 PST 2023
HazardyKnusperkeks added a comment.
Could this be added to `Context` instead of a new type?
================
Comment at: clang/lib/Format/TokenAnnotator.cpp:1205
case tok::r_brace:
+ if (Scopes.size() > 1)
+ Scopes.pop_back();
----------------
How does this happen? The only `push` I can see is before `parseBrace`, where a `pop` is following directly after.
================
Comment at: clang/lib/Format/TokenAnnotator.cpp:1674
+ enum class ScopeType {
+ // Not contained within scope block
----------------
================
Comment at: clang/lib/Format/TokenAnnotator.cpp:1675
+ enum class ScopeType {
+ // Not contained within scope block
+ None,
----------------
Full stop at the end of your comments.
================
Comment at: clang/lib/Format/TokenAnnotator.cpp:1937
Current.setType(determineStarAmpUsage(
- Current,
+ Current, Scopes.back(),
Contexts.back().CanBeExpression && Contexts.back().IsExpression,
----------------
You don't need to pass that, you can access it directly from `determineStarAmpUsage`, right?
================
Comment at: clang/lib/Format/TokenAnnotator.cpp:2385
+ TokenType determineStarAmpUsage(const FormatToken &Tok,
+ const ScopeType TokScope, bool IsExpression,
bool InTemplateArgument) {
----------------
That `const` doesn't seem fit with the LLVM style.
================
Comment at: clang/lib/Format/TokenAnnotator.cpp:2385
+ TokenType determineStarAmpUsage(const FormatToken &Tok,
+ const ScopeType TokScope, bool IsExpression,
bool InTemplateArgument) {
----------------
HazardyKnusperkeks wrote:
> That `const` doesn't seem fit with the LLVM style.
I'd prefer you write it out.
================
Comment at: clang/lib/Format/TokenAnnotator.cpp:2490-2491
+ // Opeartors at class scope are likely pointer or reference members
+ if (TokScope == ScopeType::Class)
+ return TT_PointerOrReference;
+
----------------
What about
```
struct S {
auto Mem = C & D;
};
```
That would be annotated, or is there another rule above with would kick in? If there isn't a test with such a construct already please add one.
================
Comment at: clang/lib/Format/TokenAnnotator.cpp:2496-2502
+ ((PrevToken->getPreviousNonComment() &&
+ (PrevToken->getPreviousNonComment()->is(tok::amp) ||
+ PrevToken->getPreviousNonComment()->is(tok::period) ||
+ PrevToken->getPreviousNonComment()->is(tok::arrow) ||
+ PrevToken->getPreviousNonComment()->is(tok::arrowstar) ||
+ PrevToken->getPreviousNonComment()->is(tok::periodstar))) ||
+ !PrevToken->getPreviousNonComment()) &&
----------------
That seems better.
================
Comment at: clang/lib/Format/TokenAnnotator.cpp:2544
SmallVector<Context, 8> Contexts;
+ static SmallVector<ScopeType, 8> Scopes;
----------------
Why static?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D141959/new/
https://reviews.llvm.org/D141959
More information about the cfe-commits
mailing list