<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/142008>142008</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang-format] EmptyLineAfterAccessModifier and EmptyLineBeforeAccessModifier for Qt-specific access modifiers
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-format
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          EugeneZelenko
      </td>
    </tr>
</table>

<pre>
    Looks like `EmptyLineAfterAccessModifier` and `EmptyLineBeforeAccessModifier` are not applied to Qt-specific access modifiers: `signals`, `public slots`, `protected slots` and `private slots`.
Test file:

```
#include <string>

class Test
{
    Q_OBJECT

public:

 Test();

protected:

    void protected_method();

private:

    void private_method();

signals:

    void signal();

public slots:

 void public_slot();

protected slots:

    void protected_slot();

private slots:

    void private_slot();
};
```

I tried 19.1.1 and `main` (https://github.com/llvm/llvm-project/commit/49d48c32e04742ebd05cbbd7dd544b1217b6d9d0)

Configuration:

```
BasedOnStyle: LLVM

AlignConsecutiveDeclarations:
  Enabled: true
  AcrossEmptyLines: false
  AcrossComments: false
AllowShortFunctionsOnASingleLine: Inline
BreakBeforeBraces: Allman
ColumnLimit: 100
IndentPPDirectives: AfterHash
IndentWidth: 4
LineEnding: LF
UseTab: Never

Language: Cpp
AccessModifierOffset: -4
AlignAfterOpenBracket: AlwaysBreak
AlignConsecutiveMacros: AcrossEmptyLines
AllowAllArgumentsOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
BinPackArguments: false
BinPackParameters: false
BreakConstructorInitializers: BeforeComma
BreakTemplateDeclarations: Yes
ConstructorInitializerIndentWidth: 0
ContinuationIndentWidth: 4
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: Always
FixNamespaceComments: true
MaxEmptyLinesToKeep: 1
PackConstructorInitializers: Never
PointerAlignment: Left
SortUsingDeclarations: true
StatementMacros:
  - PyObject_HEAD
  - Q_OBJECT
```

Abandoned patch on Phabricator: https://reviews.llvm.org/D129845

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUVl1v4jgU_TXmxSpynADhgQfzpekuHRi1s6vdl8pxboK3jh3ZDjPdX7-yAxRaptJKSCS-n-fcYzvcOVlrgBkazdFoOeCd3xs7W3U1aPgbFOgXMyhM-TrbGPPisJIvgNGYrJrWv26kBlZ5sEwIcO7BlLKSYNGYYK7LK7c5VMbCDT8LWBuPedsqCSX2Bn_zd64FISspMI8BuDlGOJSykDb0zJVDY4LoIiy0XaGkwE4Zf7lqjQfhoTwbTn21Vh64h_P6EBH2BM7jSipAKUMk_sbk-CMM0VRqoboSMEoXzlupa5SuekehuHM4JAjvkzkiDGOMvz1v57-tFk-9U9_jOXnvTnNEpyidH11ODb95YYwPRpb4bHpuwO9N-SEyAroVFw23o048fojqDe9rXJJ8DumrRNNzMP0K0vu4j8BuRl_O6ZfgPkROlseHywkSdo-9DSpLpsNkmJzE0HCpgzYQzffet7EOXSO6rqXfd8VQmAbRtVKH099da80_IDyia2GaRoaHbFpmuUgpkGySUShKMhJFUU7KcpRlRUKTSTEupyUJPcZeFkZXsu4s99Lom5KbcwflVj_616hJvNn88dB7MSVrvTDagei8PMAShOJ9piNLGK80L1RUEva2g7jGhDXOnTdl3E4VV-7SujBNA9pf2ZhS5sfj3li_7rSIZbaaPUpdKwiJgu-9VuGJsLkF_tLv97nloq_ClGq4jrBV1-iNDKylDCckIL3XJWi_2y2lBREA9THhaPnC3f7s8acs_T6YMkRYKLzSZdyHDG_WiLDvDp54EV6_wgFsT9aG67rjdWxy0bYBztUxtK0qB7GZu-zEbSy9bUEHBC-9lakf_NVFdDdG8MADe9HvPclH_phSzNZdJHerv8JPf6Luimam1I5b3oAH67bVxWhvB82l3nHxck59w_aW78oYkAQE3nbCG3uvpZdcyX-Pfv0Igxz4yfsJmlZx_15v-K-I8naud5MjvaOXuovxNwb76d1yMdvPL5fzxBBha_nzK2_AtVzApb6PG-OB_3wb15P5HaCN2kSEBfo-4ejUys5IHXoNogjZoyKhCtfBo7H-u5O6fk_asfij5x5CzFlBcTPe4d3rtginzPOXFVse1y5vlOujjRVcl0ZDiVvuxR4bjXd7XlgpuDeRjeuzzcJBwg83DOfZ0Nga0fUyodM8GyHCBuUsLafplA9glkyyfJSlhOSD_Ww0znNBSFJNipRPinEqRqMkGfGqyKtC5HwgZ5TQERnRaZLTlOZDXlUwFiSHpBrnY1KgjEDDpToXHkjnOpglGQ0lFC9Aufg1QqlQXNd3lbEN94jS8H1iZ_EALrraoYwo6fwbhIGXXsUvmavA0RJ_pqh4C3wqJVwZ--lXyaCzava_r46I2yG6PkI_zOh_AQAA___eFxwr">