[PATCH] D127873: [clang-format] Fix misplacemnt of `*` in declaration of pointer to struct

Jack Huang via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jun 17 10:12:56 PDT 2022


jackhong12 added inline comments.


================
Comment at: clang/lib/Format/TokenAnnotator.cpp:2314-2315
+    if (PrevToken->is(tok::r_brace) && Tok.isOneOf(tok::amp, tok::ampamp) &&
+        PrevToken->MatchingParen && PrevToken->MatchingParen->is(TT_Unknown))
+      return TT_BinaryOperator;
+
----------------
HazardyKnusperkeks wrote:
> Unknown is everything, until some type is assigned. This way it should be clearer.
> 
> Also put that check above the other one and add the `r_brace` back.
There are other problems. Clang-format will split the input into multiple lines first. For instance, `struct {\n int n;\n} &&ptr={};` will be separated as `struct {`, `int n;` and `} &&ptr={};`. It only handles the relation in the line. When declaring a struct variable, the value of `MatchingParen` will always be NULL instead of pointing to the last left brace. So it will not enter that branch in this case.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127873/new/

https://reviews.llvm.org/D127873



More information about the cfe-commits mailing list