<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/84995>84995</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang-format: Various formatting issues
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-format
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DarkTyger
</td>
</tr>
</table>
<pre>
# Background
We've encountered some edge cases with clang-format. This bug report contains a few of the thornier formatting issues.
# Ternary
## Expected
``` c++
std::shared_ptr<Message> message = finder == map.end()
? std::make_shared<UnknownMessage> ( socket )
: finder->second( socket );
```
## Actual
Option for line break before the ternary does appear to have intended effect:
``` c++
std::shared_ptr<Message> message =
finder == map.end() ? std::make_shared<UnknownMessage>( socket )
: finder->second( socket );
```
# Assignment
## Expected
``` c++
/* Determine the number of header blocks (LSB are S and C).
*/
const auto controlOctet = payload[ offset ];
const auto headerCount = static_cast<uint8_t>( controlOctet & 0b0011'1111 );
const bool isCompact = static_cast<bool>( controlOctet & 0b0100'0000 );
```
## Actual
A rogue `=` sign isn't aligned:
``` c++
/* Determine the number of header blocks (LSB are S and C).
*/
const auto controlOctet = payload[ offset ];
const auto headerCount = static_cast<uint8_t>( controlOctet & 0b0011'1111 );
const bool isCompact = static_cast<bool>( controlOctet & 0b0100'0000 );
```
# Dot notation
## Expected
``` c++
// Insert SOS at the beginning of the block payload.
mBlockPayload.insert(
mBlockPayload.begin(), SOS_WITH_NID, SOS_WITH_NID + 3
);
```
Also acceptable would be:
``` c++
mBlockPayload.insert(
mBlockPayload.begin(),
SOS_WITH_NID,
SOS_WITH_NID + 3
);
```
## Actual
The dotted method is disassociated from the object:
``` c++
// Insert SOS at the beginning of the block payload.
mBlockPayload
.insert( mBlockPayload.begin(), SOS_WITH_NID, SOS_WITH_NID + 3 );
```
This is fine for a fluent interface, but strange for a one-liner.
# Map alignment
## Expected
``` c++
const std::unordered_map<uint8_t, const MessageType>
MessageType::MESSAGE_TYPE_MAP = {
{ FSC_CONNECT.mType, FSC_CONNECT },
{ FSC_HEARTBEAT.mType, FSC_HEARTBEAT },
{ FSC_START_DATA.mType, FSC_START_DATA },
{ FSC_STOP_DATA.mType, FSC_STOP_DATA },
{ FSC_CAI_BUSY_BITS.mType, FSC_CAI_BUSY_BITS },
};
```
## Actual
The alignment is ignored resulting in a wall of text (there are 30 entries, which I've cropped for brevity):
``` c++
const std::unordered_map<uint8_t, const MessageType>
MessageType::MESSAGE_TYPE_MAP = {
{ FSC_CONNECT.mType, FSC_CONNECT },
{ FSC_HEARTBEAT.mType, FSC_HEARTBEAT },
{ FSC_STOP_DATA.mType, FSC_STOP_DATA },
{ FSC_CAI_BUSY_BITS.mType, FSC_CAI_BUSY_BITS },
};
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUV99ymz4Wfhr55kw8IOxgX_gCY3ubmU2Tqel2esUIOIDWIDGSSJq335FwEuO2SbZJL34eJgFJ5_939ElMa14JxBWZr8l8M2G9qaVabZg6JA8Vqkkmi4cVoQGsWX6olOxFQbwN8aLh7zckNLxDQJHLXhhUWICWLQIWFULONGq456aGvGGiuiilapmZQlJzDVlfgcJOKgO5FIZxoYFBifcgSzA1gnVFcFQwiBkuKuBa96inpz5Y7xJUgqmHs2E7s_3RYW5w5DW59IYHckLX9nHD2hQkiEgQ6ZopLNLOKBLE16g1q5AEW2iHVyDBBkouClT21X61rJuiKAhdELoctAEAkGAHT1pbdsB0UE2C-Ks4CHkvTrQTugAt8wMaOFMSHa1dkGCrMZfO0OnaYH0W2C8SEeWmZ83pxE1nuBQ2u9BwgZApZAfIsJQKhwIMWYVCogbWdcgUGAk1u0PgwqAosAAsS8yNDfFjM_ycgBdS_X9l-JcJ_oDsQuS6qEVh3gdAQneERrBBg6q1FbFFEH2bobI9USOzecgamR-0hcu_92tgCmEPTBQQE7qcPkZFnTL3kUuhDbDeSNdnSjY3ubGhBRvo2EMjWUHma5Blqe3ofPMU8InkYDu2TQ5OUhtmeJ7mTBsSxD0XZpGaY5LHZugleJnn-T6hoe_7_iing4lMyga4jmXbsdwMoD83Yde8oN_3PEJDz_O8d3REBEpWPYJdH2xsfWxhgWtBaGiANXazLN6G9X9IMf92Lf92IWEjDQhpLUjxAe23gyuhURnY3-yBGVe1DCsuhKWfIzO5qj3m-1imdm0Hb49j3Cmxm9TTNjZe4HQe-YLG1lr67Sr5lH6-2px_A6FrCB59fCUlUaMlsDzHzrCsQbiXfVNAhm8D7buCOK46C-VZ9o9j-m2_JjVCIY3BAlo0tSyAayi4ZlrLnDM7XirZuprJ7L9v5qkPRMJz-M_pfC8UXm8Md8Di2jIbOoJnUDY9CuN4W5UsR6s66w1oo5ioHldJgRf2MKB-OmJds27YAN_Pc8NG8UTbvZCqsEfHtGXdyQZEYxhWHik8eegcjTsdozGr5Xq730f_2qbJ99tteh3dup2HhOuTg1S4ht0-TuObz5-3cTJtnTCNTwdh-JFwDN1H0U_b6Euy3kYnwvY3mvqt8D6JviTpJkqikfR46iXr--Tm9mf58dSL7sfRVbr-uv-erq-S_Vn8p1MjBfb9z9vzCTIWjrwS0l4RFOq-Gc7zAhjcs6ZxDYU_LA0sTI0KHRkGHqAwiqO2ft7XPK_harhy5Ep2nW1wqezJ9Y6bB9cWb-nvjwAg_AEC34zC8wK-gsGX8fcKhMbweUn4o-EzKVZBsQyWbIIrP_Q9ugi90J_Uq9ks8GhYXs7mYUHDvAxoeBlelsuZv5zReVhO-Ip6dOYFPqXBbBb40ywMPcZC6ntLb1EWSzLzsGW8mTbNXTuVqpq4m-NqMVsu55OGZdhod-ml9PRqSii112C1smIXWV9pMvMaro1-VmS4aXA1kgoi-A9TXPb657vqpFfNqjam0xYljlgqbuo-m-ayJXRn9R7_XXRKOpKiu0GW0J1z-H8BAAD___ASeVk">