sstwcw marked 3 inline comments as done.
sstwcw added a comment.

About the unit tests that failed in B150668 <https://reviews.llvm.org/B150668>. 
  It looks like they were stopped because they took over 1 minute.  I ran the 
first test on my laptop.  Both this revision and main took about 2 minutes.  
What should I do about it?



================
Comment at: clang/include/clang/Format/Format.h:157
+  ///   a   &= 2;
+  ///   bbb  = 2;
+  ///
----------------
HazardyKnusperkeks wrote:
> HazardyKnusperkeks wrote:
> > sstwcw wrote:
> > > HazardyKnusperkeks wrote:
> > > > sstwcw wrote:
> > > > > HazardyKnusperkeks wrote:
> > > > > > sstwcw wrote:
> > > > > > > HazardyKnusperkeks wrote:
> > > > > > > > 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.
> > > > > > > I can do it either way. But I thought without the extra space the 
> > > > > > > formatted code looked ugly, especially when mixing `>>=` and `=`. 
> > > > > > >  Which way do you prefer?
> > > > > > > 
> > > > > > > 
> > > > > > > ```
> > > > > > > a >>= 2;
> > > > > > > bbb = 2;
> > > > > > > ```
> > > > > > I would prefer an option, to be able to do both.
> > > > > > I think I would use the variant which is more compact, but can't 
> > > > > > say for sure until I really have the option and tried it.
> > > > > You mean like a new entry under `AlignConsecutiveStyle` with the 
> > > > > options to align the left ends of the operators and to align the 
> > > > > equal sign with and without padding them to the same length? I don't 
> > > > > want the new option to be merged with `AlignCompound`, because we are 
> > > > > working on adding support for a language that uses both `=` and `<=` 
> > > > > for regular assignments, and maybe someone will want to support a 
> > > > > language that has both `=` and `:=` in the future.
> > > > Yeah. Basing on @MyDeveloperDay 's suggestion:
> > > > ```
> > > > struct AlignConsecutiveStyle {
> > > >   bool Enabled;
> > > >   bool AcrossComments;
> > > >   bool AcrossEmptyLines;
> > > >   bool AlignCompound;
> > > >   bool CompactWhitespace; // This is just a suggestion, I'm open for 
> > > > better names.
> > > > };
> > > > ```
> > > I added the new option. Moving the old options into the struct turned out 
> > > to be too much work for me on a weekend. If you can accept the 
> > > configuration style in the current revision, I will probably move the old 
> > > options into the struct at some later date. By the way, what is the 
> > > purpose of `FormatStyle::operator==`? It looks like it does not 
> > > compare`BraceWrapping`.
> > I can believe that it is too much for a weekend. But I'd like the complete 
> > migration in one patch. There are also other align styles, which currently 
> > use the same enum. And they should keep to use the same type (struct in 
> > this case). Even though there are then some options which are not (yet?) 
> > applicable to them.
> > 
> > We can mark that in the code:
> > ```Whether compound statements ae aligned along with the normal ones. Note 
> > this currently applies only to assignments: Align i.e. ``+=`` with ``=`````
> >By the way, what is the purpose of `FormatStyle::operator==`? It looks like 
> >it does not compare`BraceWrapping`.
> This is an oversight, it should do what `bool operator==(const FormatStyle&) 
> const = default;` would do, if we had C++ 20.
> 
> 
In the new version all the alignment options can be read as objects.  The names 
are still ``AlignConsecutiveMacros`` etc.


================
Comment at: clang/include/clang/Format/Format.h:163
+  /// \endcode
+  bool AlignCompoundAssignments;
+
----------------
curdeius wrote:
> sstwcw wrote:
> > curdeius wrote:
> > > HazardyKnusperkeks wrote:
> > > > 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.
> > > > 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.
> > > 
> > > :+1:
> > > 
> > > That's my preference too. Having both `AlignConsecutiveAssignments` and 
> > > `AlignConsecutiveAssignmentsOptions` is error-prone.
> > About `AlignConsecutiveAssignments` and 
> > `AlignConsecutiveAssignmentsOptions`. Based on the current YAML 
> > infrastructure, it does not seem possible to support both enum and struct 
> > under one name.
> Grrr, indeed, that doesn't seem easy. I'm gonna play a bit more with 
> `yaml::PolymorphicTraits` but not sure it's of any help here.
> So yeah, please go on with this revision as if I weren't doing anything :).
In the new version I added support for it.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D119599

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to