[PATCH] D98237: [clang-format] Option for empty lines after an access modifier.

Marek Kurdej via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Mar 16 03:17:37 PDT 2021


curdeius added a comment.

That looks really good. Please add tests as indicated in the inline comments and fix the formatting (see clang-format warnings).



================
Comment at: clang/include/clang/Format/Format.h:1912
+    /// Keep existing empty lines after access modifiers.
+    /// MaxEmptyLinesToKeep is applied instead.
+    ELAAMS_Leave,
----------------
Shouldn't we put the same comment in `ELBAMS_Leave`?
That goes outside the scope of this patch if it ELBAMS doesn't behave this way.


================
Comment at: clang/include/clang/Format/Format.h:1957
+  /// Defines how many lines are put after access modifiers.
+  unsigned EmptyLinesAfterAccessModifier;
+
----------------
Max_S wrote:
> curdeius wrote:
> > This option seems to be very different from `EmptyLineBeforeAccessModifier`. I don't mean in what it does, because this is analogical, but in the possible options.
> > Wouldn't it be less surprising to have (at least some) similar options here and there?
> > Is there any value in having more than one line after access modifiers? Couldn't that be achieved with Leave option?
> > How do the two options work together?
> > 
> > Also, the difference in singular vs. plural form of "Line(s)" in these two options is disconcerting.
> > From the user perspective, it's error-prone to have two options that are at the same time so similar and so different.
> I agree with you and changed it accordingly. I left out the option `LogicalBlock`.
> 
> The interaction between the two options is quite minimal. I can add extra tests, that would demonstrate this but I do not think that this is necessary.
> 
> The leave option would now applies MaxEmptyLinesToKeep in a correct way. See also my remarks in >>! In D98237#2616621.
I like the new version. Thank you for the update.
I'd still love to see the tests with both Before/After options (and we probably want `MaxEmptyLinesToKeep > 1` for these tests in order to check whether e.g. Always/Always keeps precisely one new line).

I mean something along these lines (amongst other tests):
```
  Style.EmptyLineAfterAccessModifier = FormatStyle::ELAAMS_Always;
  Style.EmptyLineBeforeAccessModifier = FormatStyle::ELBAMS_Always;
  Style.MaxEmptyLinesToKeep = 3;
  EXPECT_EQ(R"(
struct S {
private:

public:
};
)",
format(R"(
struct S {
private:



public:
};
)", Style));
```


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D98237



More information about the cfe-commits mailing list