[PATCH] D119599: Add option to align compound assignments like `+=`

Björn Schäpers via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Sat Feb 12 02:24:22 PST 2022


HazardyKnusperkeks added inline comments.


================
Comment at: clang/include/clang/Format/Format.h:157
+  ///   a   &= 2;
+  ///   bbb  = 2;
+  ///
----------------
curdeius wrote:
> I guess it would be complicated to avoid adding an additional space here. I mean, it could be:
> ```
> a  &= 2;
> bbb = 2;
> ```
> And with 3-char operators, there's one more space.
That would be awesome, but it should be an option to turn off or on.
But I think this would really be complicated.


================
Comment at: clang/include/clang/Format/Format.h:163
+  /// \endcode
+  bool AlignCompoundAssignments;
+
----------------
MyDeveloperDay wrote:
> This option is not independent of `AlignConsecutiveAssignments` is it? this will cause confusion when people turn it on without turning on `AlignConsecutiveAssignments` 
> 
> Options have a lifecycle we have noticed
> 
> 1) They start as bool
> 2) They become enums
> 3) They then end up as a struct of bool
> 4) Sometimes the struct becomes of enums
> 
> Whilst I like what you are doing here I fear we will get bugs where people say I set AlignCompoundAssignments: true but its doesn't work.
> 
> `AlignConsecutiveAssignments` is already gone too far on the enum, it should be a struct
> 
> so rather than
> 
> ```
> enum AlignConsecutiveStyle {
>     ACS_None,
>     ACS_Consecutive,
>     ACS_AcrossEmptyLines,
>     ACS_AcrossComments,
>     ACS_AcrossEmptyLinesAndComments
>   };
> AlignConsecutiveStyle  AlignConsecutiveAssignments ;
> 
> ```
> it should be perhaps
> 
> ```
> struct {
>     bool AcrossEmptyLines,
>     bool AcrossComments,
>     bool AlignCompound
> } AlignConsecutiveStyle;
> 
> AlignConsecutiveStyle  AlignConsecutiveAssignments;
> ```
> 
> in the .clang-format file it would become
> 
> ```
> AlignConsecutiveAssignments: Custom
> AlignConsecutiveAssignmentsOptions:
>            AcrossEmptyLines: true
>            AcrossComments: true
>            AlignCompound: false
> ```
> 
> I realise this would be a much bigger piece of work (in the config) but the existing options would map to the new options, and then we have a structure for which have space for future expansion.
> 
> The introduction of a dependent option in my view triggers the need for that config change? @HazardyKnusperkeks 
>  you thoughts, I know we've done this before, what  do you think in this case?     
> 
> 
> 
I would even go further (and that I already told the last time). Drop the ``Custom`` and map the old enums to the struct when parsing, so no new option.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D119599



More information about the cfe-commits mailing list