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

    <tr>
        <th>Summary</th>
        <td>
            Clang-format 18 adds spaces for Q_EMIT when signal is emitted on return value of expressions
        </td>
    </tr>

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

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

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

<pre>
    Should state and result of clang-format17 and below:

```cpp
int main()
{
    Q_EMIT someMethod()->notifyMe();
}
```

clang-format-18:
```cpp
int main()
{
    Q_EMIT someMethod() -> notifyMe();
}
```

The following code would be formatted correctly
```cpp
int main()
{
 Q_EMIT(someMethod()->singal());
}
```

The weirdest part is: `clang-format-18 -i example_format.cpp` causes the bad behavior. git-clang-format-18 however does it correctly!

```ini
---
# SPDX-FileCopyrightText: 2019 Christoph Cullmann <cullmann@kde.org>
# SPDX-FileCopyrightText: 2019 Gernot Gebhard <gebhard@absint.com>
#
# SPDX-License-Identifier: MIT

# This file got automatically created by ECM, do not edit
# See https://clang.llvm.org/docs/ClangFormatStyleOptions.html for the config options
# and https://community.kde.org/Policies/Frameworks_Coding_Style#Clang-format_automatic_code_formatting
# for clang-format tips & tricks
---
Language: JavaScript
DisableFormat: true
---

# Style for C++
Language: Cpp

# base is WebKit coding style: https://webkit.org/code-style-guidelines/
# below are only things set that diverge from this style!
BasedOnStyle: WebKit

# enforce C++11 (e.g. for std::vector<std::vector<lala>>
Standard: Cpp11

# 4 spaces indent
TabWidth: 4

# 2 * 80 wide lines
ColumnLimit: 160

# sort includes inside line separated groups
SortIncludes: true

# break before braces on function, namespace and class definitions.
BreakBeforeBraces: Linux

# CrlInstruction *a;
PointerAlignment: Right

# horizontally aligns arguments after an open bracket.
AlignAfterOpenBracket: Align

# don't move all parameters to new line
AllowAllParametersOfDeclarationOnNextLine: false

# no single line functions
AllowShortFunctionsOnASingleLine: None

# always break before you encounter multi line strings
AlwaysBreakBeforeMultilineStrings: true

# don't move arguments to own lines if they are not all on the same
BinPackArguments: false

# don't move parameters to own lines if they are not all on the same
BinPackParameters: false

# In case we have an if statement with multiple lines the operator should be at the beginning of the line
# but we do not want to break assignments
BreakBeforeBinaryOperators: NonAssignment

# format C++11 braced lists like function calls
Cpp11BracedListStyle: true

# do not put a space before C++11 braced lists
SpaceBeforeCpp11BracedList: false

# remove empty lines
KeepEmptyLinesAtTheStartOfBlocks: false

# no namespace indentation to keep indent level low
NamespaceIndentation: None

# we use template< without space.
SpaceAfterTemplateKeyword: false

# Always break after template declaration
AlwaysBreakTemplateDeclarations: true

# macros for which the opening brace stays attached.
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH, forever, Q_FOREVER, QBENCHMARK, QBENCHMARK_ONCE , wl_resource_for_each, wl_resource_for_each_safe ]

# keep lambda formatting multi-line if not empty
AllowShortLambdasOnASingleLine: Empty

# We do not want clang-format to put all arguments on a new line
AllowAllArgumentsOnNextLine: false
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysWF1v6jwS_jXhZgTKB7T0ggug8L7d05a-h2rP3iEnmSTeOnZkO6Tsr1-Nk5RA29Xu0UroHHBm5pnPx5MyY3guERfebOXN7kestoXSCybwPbj1g2QUq_S02BeqFikYyywCkyloNLWwoDJIBJP5OFO6ZDa4dQ9jFKrxoqXn33t-_--N336SqmpPuLRQMi69cO6Fd53U7ar9AgDw12Hz9PAKRpX4hLZQaSs59qKNVJZnpyfsdKNVr35_hTZ0YejpOJifHfy_uQbkG_yWc68FQqaEUA2XOSQqRWhczmM6J5ctppAorTGx4vR7nrdue-H8q5waLnMmOsX_ye8GuU7RWKiYtsCNFy2BnLrMN4w54DsrK4GH9nBCbt_4kLDaoAFbIMSMIi7YkSs9gZzb8bWVQjV4RA2pQgPcDlISBl82HJe8PRmPx92jMIL9y_0_xlsucK2qk-Z5YV_x3ZLnoR_cwbrQ3FhVFbCuhSiZlOBF66T77k39txQnSudetPmvbf6BWioLf2BcMJ2Svbz96k19Fhsu7SRR5dDilelHnqA0OH5IUVqecdRkmyo6jDuM4LXgBjIuEHJlgdVWlczyhAlxgkQjo1aKT7BZP3nhGlJFLQuYcjsARITC2oqK6YVbL9y6QkyEOJYu8HCbqsR44XZN51tXn709CdxVlitpJoUtBbWuq2uiZMZzUO2zMwzRxRWMKstacnua9CkOty9K8IQjoW01K7FR-s0c1irlMj84UC-M1oNGOXzEfKBR6vrNcpmfocm1YXOB5ZUBL7wBq3nyZq6a5pHJvGY5Usr_xo5sn2hedQm754bFAtskkIDVNV433Tm15LCDX3vhij6fANb9PJ-1YmYQuIFfGP9wbU_Bg3HBR8urJDYYv3HbZY8yMHaC47zmKQouXSoHtomwgWkEJcUJbMFlbsCgBVswCyk_os4RMq1Kemg62H7gVsxgupP73pfWxesAUGZKJ9gHHQTghXOc5BOXCmNT8j5aHjGxSnvR-vOJYILRePQTsrdMpjQ_bcaC4BpyCqZiCfGEpJHpGIvFv3hqC9KaXmuE4IVLmPvQ8BShzZR7uFaiLuUjL7krcHDJgqRqFJGfTESdOkTTWwCDFdNu6HKt6qqzuFfaPnTilz0zKIxG9gYxZkojxNrFoiRktUxokGh6JSvRRelmKRHMGEgx45K3Y9iViAytnJ2VM0OIj1zW79eQay0epLG6dgiUDvZxFbwoLi3qpeC5LCmh0RJ-Es9dGymU5v9S0jrGYSRugOm8JiUDLLOogUlQFUoX1hvazlFne0kCuwrlqn1GOO7BNU5KObi1UKojAhOCbiBWokVtwCqQ2LgK9KaFapZCvHzI7LJ7TATVhiu5k8_4bh9JPFpCxoT5VA6pgG5J0dW1L4MZ2N8XSttt_2Anl3un0Jt9VvKTVSYadjKXtT6pGlAmqqZ8Q1kLy7tespqGs0ckzUFtn0iQ5Pad2Dd9dZm3j8JYBaqRbdsDz4i5T44W6H6g9Crp2NywsjO54vKFJW_L3sS3qbtAvKzS70Geq_gt5oOEhFizQSgYBSoJwS2x5Cw03BZtbquupO0SoirUzBIpFf0KRtcDrSeYcymJeJVzddBdblxrS2DdhdowaSm-trDtot0m6dNIcsn0adfBmq5Rlh8a14F1F9aZSR01pCC4sQYEfzv3JtCt33MYcaQb__SRG_vB1193iIuhqi2wlkX71vwateM0EmxjugL7tkgaXUtgWdnTkHB_IFYbOqTRMUv7WuDeMm132Uooup7_w5CeObElfjffVIo3xKo7A4FHFEBvKk71udd5OKt8N7ENQm0QLJaVYBa9aO16SdW2TdVkkA3HZa-d5A88Naq9sL70fTmkgpYmexBIz1T1afp7-wM6-3b2S5ZoZdyl2xQ8KfqWd23tSkojcjLArGVJgWkXzVbpDUuKJ6fuVvzZiqwgSwq6iP46bHc_N8v1n_RjtdvtX4cHJHhEfRb8--an-7HaPK__fFr-_HH567B7Xm-Azhpx0GhUrRO3xx16vK_OD4ZlCN7s_jpoV3jByjhlcF4G2-EfO2LlWbsFU8td8_mjU_zM5puz8Bnq1yUBXK6Yqp0oIQasqySwb66qD179_nLqX3NG6SJK76I7NsJFcBveBNFNMJuOisU8wixl82l8d5NG83AWh6E_n7FpFt34N34Uj_gi9MOpfxeEgR_MZtPJLJimfjSd4tSfZjHeelMfS8bFx_I_4sbUuAj8eTS7GQkWozDuDwhhOAzXC0Nvdj_SC9Ibx3VuvKnv2OJsyXIrcDHc3SGYA0tT0-9u1Kjd-3ZToAQiRSZoFcaSu7diJUGjrbWEIxM1Ejfje6XRGJqDUa3F4nI9zrkt6ti9bYVbcqX7b1xp9U9MrBduXYS0JXdBHhfhvwMAAP__if1zMg">