<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">