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

    <tr>
        <th>Summary</th>
        <td>
            [clang-format] member functions are not processed as functions while using SpaceBeforeParensOptions::AfterFunctionDefinitionName
        </td>
    </tr>

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

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

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

<pre>
    While trying to create a clang-format for our section, I have met with some difficulities, we usually add space after function definition names and after function declaration names (before parens), for both member functions and free functions, while not putting space after function name in function call

I have tried this clang-format configuration
[clang-format.txt](https://github.com/llvm/llvm-project/files/13771924/clang-format.txt)

the needed parameters are the following
```
SpaceBeforeParens: Custom
SpaceBeforeParensOptions:
  AfterControlStatements: true
 AfterForeachMacros: true
  AfterFunctionDefinitionName: true
 AfterFunctionDeclarationName: true
  AfterIfMacros:   true
 AfterOverloadedOperator: false
  AfterRequiresInClause: true
 AfterRequiresInExpression: true
  BeforeNonEmptyParentheses: false
```
exactly:
```
AfterFunctionDefinitionName: true
AfterFunctionDeclarationName: true
```
preferred output is:
```cpp
struct my_struct {
    int some_field = 0;
    void some_member_function ();
} test_obj;

void my_struct::some_member_function () {
    printf("hello from member function");
}

void some_free_function () {
    printf("hello from free function");
}

void do_stuff () {
    // use member function
    test_obj.some_member_function();

    // use free function
    some_free_function();
}
```
output i have (using clang-15, ubuntu-22.04)
```cpp
struct my_struct {
    int some_field = 0;
    void some_member_function ();
} test_obj;

void my_struct::some_member_function() {
    printf("hello from member function");
}

void some_free_function () {
    printf("hello from free function");
}

void do_stuff () {
    // use member function
    test_obj.some_member_function();

    // use free function
    some_free_function();
}
```

note line 6:
>```cpp
>void my_struct::some_member_function() {
>```
which has no space after member function definition name
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsVk1v4zYQ_TX0ZRBDovx58CGJYyCHboruoceAIocWFxSpksMk_veFJH_KbpDuqQUWMGSZfJx5fByOn4jRbB3iik0f2HQ9EokqH1aNr0QlRqVXu9WflbEIFHbGbYE8yICCEARIK9z2TvtQCwLtA_gUIKIk4x3jj_AMlXhDqJHg3VAF0dcIymhtZLKGDMYW9Y6QYhLW7kAoBbEREkFowgA6uS4YKNTGme7ViRojCKeuMdKKIM5AjC9K1D4gNCKgi4wv24Qt09JTBTXW5VmEPqoOiKehjmC3f-cJmkTUinCTY5sTjDsNSGEty9Ysu--fezkoGFRAlYmXAkrvtNmmfgf7ddOHc8iYPohN14wvKqImsuKe8Q3jm62hKpVj6WvGN9a-Hb7umuB_oCTGN9rYVu1NXszn-ZJPGN9cRebLc7ZUIThEhapVT9RIGCKIgNDOaG-tfzduu18yy_af7uf3Vp-HTvrfe-WLe3hMkXz9D4CXppe72GcHuG_VffSOgrffSRDW6KgLRCHhHtWBNj6gkNVvQgY_BOwR-yNZH8vom6jxZqwj8lhMN6A99lmfUsJVpJc3DNYLheqlwSDIhxanhY2XUf7Av5IJGJ_doxUp3mR1wjx9NAFjbCtkQKlX85t3T3VDu05VqjBiHKQdHBV-CEl2dxR-MP1l-b6u3iBDE1BjCKjAJ2oSgYnXZGTT9CORQpIE9e51_8bmDwcFAIyjrsm8aoNWASvWkLHiDPDmjeoR_d1_PV5WxhftBTiA2XwNhJFeffnjNNg9uxhHAi3X4v6TkJcMm2Ac6W6GV2itBx18PexEjPMBmSsC_TYD4k_lu2hyX8im_GukpPXNHH0TghTxah9HzEHL8S2lhtrfinzJ-Ii4luH6IG-W3aHY-p7M-CLFtrP3TTGftn0_lclRuuN8nE1OzfH_XJK_KvI_XJH903lCsMYhzE5tsHi6LjtWPP3ssZ_H60feKyMrqEQE5y_czUC-oREbqVWhlsVSjHCVz7NiulzOMz6qVksxlcUEOfKcZwoXWuR6kucyX5Sz-ULmI7PiGS9yzmf5JFtwPta8mM1RcSxLKfmsZJMMa2HsuHUyYx-2IxNjwtV8VixnIytKtLEzrZyfO5m2dKbrUVh1BqhM28gmmTWR4ikQGbKd4b1YOF3fMIRhb_yClxgjKhDxbLp3hn3n-MzSFJ_9j45SsKt_beg6MVpH1-nxdwAAAP__-w62Pg">