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

    <tr>
        <th>Summary</th>
        <td>
            clang-tidy: readability-identifier-naming: ConstantCase defines all the Constant* options
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    I agree with https://github.com/llvm/llvm-project/issues/55602 that what the options exactly do is unclear. But comparing
```
$ clang-tidy --config="{Checks: '-*,readability-identifier-naming', CheckOptions: [{key: readability-identifier-naming.PrivateMemberSuffix, value: _}]}" --dump-config | grep ' readability-identifier-naming' | sort
 readability-identifier-naming.AggressiveDependentMemberLookup: 'false'
 readability-identifier-naming.GetConfigPerFile: 'true'
 readability-identifier-naming.IgnoreFailedSplit: 'false'
 readability-identifier-naming.IgnoreMainLikeFunctions: 'false'
 readability-identifier-naming.PrivateMemberHungarianPrefix: Off
 readability-identifier-naming.PrivateMemberIgnoredRegexp: ''
 readability-identifier-naming.PrivateMemberPrefix: ''
 readability-identifier-naming.PrivateMemberSuffix: _
```
with
```
$ clang-tidy --config="{Checks: '-*,readability-identifier-naming', CheckOptions: [{key: readability-identifier-naming.ConstantCase, value: lower_case}, {key: readability-identifier-naming.PrivateMemberSuffix, value: _}]}" --dump-config | grep ' readability-identifier-naming' | sort
 readability-identifier-naming.AggressiveDependentMemberLookup: 'false'
 readability-identifier-naming.ConstantCase: lower_case
 readability-identifier-naming.ConstantHungarianPrefix: Off
 readability-identifier-naming.ConstantIgnoredRegexp: ''
 readability-identifier-naming.ConstantPrefix: ''
 readability-identifier-naming.ConstantSuffix: ''
 readability-identifier-naming.GetConfigPerFile: 'true'
 readability-identifier-naming.IgnoreFailedSplit: 'false'
 readability-identifier-naming.IgnoreMainLikeFunctions: 'false'
 readability-identifier-naming.PrivateMemberHungarianPrefix: Off
 readability-identifier-naming.PrivateMemberIgnoredRegexp: ''
 readability-identifier-naming.PrivateMemberPrefix: ''
 readability-identifier-naming.PrivateMemberSuffix: _
```
it's clear in practice defining readability-identifier-naming.ConstantCase also defines all the other readability-identifier-naming.Constant* options.

As can be seen in this godbolt [example](https://godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1DIApACYAQuYukl9ZATwDKjdAGFUtAK4sGe1wAyeAyYAHI%2BAEaYxCAA7KQADqgKhE4MHt6%2BekkpjgJBIeEsUTHxdpgOaUIETMQEGT5%2BXLaY9nkM1bUEBWGR0XG2NXUNWc0KQ93BvcX9sQCUtqhexMjsHMgGCgoA1ASY49smsVYaAIIJxHgAbkx7ICZnDwCcwQTbbDPEXAD6JgDMJ1OzzQDAOr3emE%2BZl%2BAIeQI0TxBYME2wAspCSn8YYCjgARf6AjgLWicACsvD8HC0pFQnDc1ms2wUSxWmEOZj%2BPFIBE0RIWAGsQGZJAA6ABsklipK4T1JAA4zMLSZI/vpOJIKbyaZxeAoQBpubyFnBYDAoGaIEg0CwEnRouRKNbbfQYsAuIrSFgrnhVgA1PCYADuAHkEoxOFyaLQ9sQ9RAIlqIsFagBPCO8JPMYgp4MRbQVHncXjWtiCYMMWhpqm8LAsQzAcTVz14YgF677LWYVQVLx3IvkQStLW0PARYipjxYLUES4sdMLKgGYAKf1B0Ph/v8QQiMTsKQyQSKFTqJu6ZoGIwoBmWfSjvWQBaoBLtPUcXWtNvOCCuEZNUiBKYihKbJklSARfxA3I0h6ID%2BjGD9KgETphk8Ro9HKRCOgmGC%2BhiMYJgg/Cuhwz4JAWZlllWMi1Q4clSEpalaQ4bZVDlMUAFoJW2YBkGQbZ3RFMxtggXBCBIdlOTmXhCy0OYFgQTAmCwGIIAFCQRT%2BMVSWVMUzC4OVJDlWI/llGiNVIOdSQNBjeCY3V9UNatjQtJAiE8B0IFqZdOHY9iQRoYB/nxRUjgsNwFOQfk9W2MAOHYgAqUhWyUpgkxHAgU3YvAsEEPAaGidjmBYYJgFi0htnCip%2BVDF8QEOUkrGOflMDTbZkvQVK6EITLssYRx8uIQrWBKkUPFBGpBDcJglHKm5vHYbZaFQQNom%2BUQlDxcrQua1r2s69Kepy/qA0GoqRuUS4bj2dFPiELwqBoVRZrELwFt%2BWJ8VJfEPvMMxeC8hRlEMVohAQZb01IJ07Tw/98CIGGt2EURxH3RGjzULUWAEJg0FE%2BGAAlposTBGFOXtUHXEJ0AhrHmFxuGSEpmnsbQap8EpLlxnZnVBnZoGQloUHlo56TUE8ABJamNnrRx0BTGcvAYfluVbdgDUDccEnnGi6Js7V1gvYB2NllNhIVpW5gkrhtkDQgEBYtjOMkbjeP4sxBOko15MU5TKDUp45XFP5JEkUk/liOUuGlMwxTMzUmzs2wHJkvkaL%2BiyQCs%2BitUTlPnPgE1EBQVAbWhjyoZdEA3Q9L0fUwVcQzDEW%2BDoGM4wTJtM1TCGu%2BzXN8wcCGSz68tKy1Wt60bal8FbSorg7Jsux7PsuVeIcmxHMcJwwNZqRnPA5yLBclxXANG43SNZB3FHpDRpQMdPIV9HrK9LGsW8InvVSaWfNJX3fNoaQXAMHcKhUY/4QEkWAs0HIYF0hgL/LA9oUC4ItEAUhAiCD0IIXaMhSYhRcLoUwZkP84xiKAUIVwciLIqJUJ1vHRinAHYcS4jxPiAkhIiQZsQK2UlHKyW9kpfo39BRcBFBHUksQpBmDlJI6RsjY4kg4OZSy1kc48z1AaPOpBC6WhAG5WgHkAY%2BT8gIAKQVfqhUqpFaKsUEpJR9vtbqWUjp5ROkNYqRgyoVQitVX%2BAhoomAattFqdU9ppWcb1XKA0PHnUurcTAN0Sh3QengJ62w5qvTqu9T631grpwBvzEGYNAxDxLs6foZhYZiQRlfZGe5b6yHRieaktMcaoDxiQQmChiak3JpTTA1N%2BxtPpjUpmwyWaoDZsECGXMZlvl5sEIpgsSnNwMZLFAhsTbm2VjOEmDkNZMC1kfeh2cE6cGlkYY22VTYQB2ZbcwfwhK2wIPbViLDnZsLdh7fhqcFJCJUv7QOelJAyLkaC2RUi45nMYQszRvy5Jp14KomFtkeZ5zUlKDSpJhRyg0JILgsQpShzlDRP4DC0ULIxUi1F%2BtPZOQWPPWMQDJBAA%3D%3D) this makes it difficult (impossible?) to get what you want.

In
```
class test {
private:
        int member1_;
        const int member2_;
        const int Member3_;
};
```
I want member1_, member2_ and member3_. So I want to enforce private members to be lower case and with a `_` suffix. That's it, I don't care about whether they are const or not.
But, if I use "ConstantCase" then "ConstantSuffix" is also defined, and it overrides "PrivateMemberSuffix". And if I not use "ConstantCase", then it doesn't tell me about the wrong case in Member3_.

It seems to me that using "ConstantCase" should not also define "ConstantSuffix". They are mostly unrelated, and defining "ConstantSuffix" is unexpected to the user.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWFuPo7rS_TX0C-oWIeT20A_mGkhIAoEQeBlxMeBwDTaB5Nd_gnRPzxzN3mfPnKfv6EgtOthVy6vKlLXKPsYoKSF8p2Y8NRNf_JakVfPewCjq_Caer16CKrq_q7SfNBDSHSIpnRJSY2oKKFamWDlBJG2Dt7AqKFbO89vnv9e6qS4wJBQrI4xbiClWns3mDEuT1Cd0NzxICumqJqgqMQ17PyT5nY4qGmG6LcMc-s0bzbeEDqui9htUJhQjUgyg5szH3_OV5egw98vklaDoTr--hlUZo4SaihTLUgteSGGYDXxpil28UiygWKGBfuQHKEfk_ooiWBIUI9i8ln4xrMIuKFagR7_9k93oPeOpBZ_B-_DytwBvhwbdfAJ1WASwObZxjPoB8ebnLRy8v1ELkZqJw5Nl6dfXqC3qD9o0tRDopIH1wPbvlxkMBmtcNeSZin9DCyRJAzFGNyjCGpbD_JPitqqytv5IUeznGA45-CeQCiTCyPsAGxnl8AODNO0_hlCTsmqg7KMcRsc6R-RPeDxBdB-VW5RBuS3Dr337TaifNm_dlonfIL88NHDYxSmg93H8-zhPfpEJE9h_JvqPCH3x-FOEj-9x_Ax_VU9Djf9_KTShKjHxSyL4w_7-UGF51cHmWzgMD0Um0P8r3b_N3c8p-x33_6BCPiH-k-L4xPijuvh0_iqJ33D-39H3X3f0IUKxC0yP0oNGJV03fkhQCOkIxqhEZfIbJUX7Oa6ejhDTfp4_1Q5JYfMPUSgWfKqjtw-64xNgOvRLOoA0hrAceJIUYTqpoqDKyXB8wt4v6hwO5xS7_Be59rR6q5pkHJg-qCnYu9skBTJ_jWaG0AO3O7i8LhS8GfFbIE8MIQT-QRKA_uh4ooMFMDqZ6AZ_B2ay2hDDlcAdo4AxzkDolzwPNhVfWgDYYF13QL8B2bWOREsmogpqILjAaN02y1cesDpxc4mAItsEbDiswEkH7hDcXbBWKXbG8kDy3V4AYLExgHhNNqnE6WsyH-dgltWXRONVKGHbWvdRnex9W5Us3ZAUazbanLe-uyozfRLYEu8oJnNW2N3Z3jkhszFWU_4WnlfYEGxyTWGvX_BaTxQhqcAEHF1uhQt8cn2gqlq_TkCQ9QtV8EqxE8LOsIJAPEhnIM61RNS1yf7xMESwb6awkMalvfwZgQoNlbF63tUltgO4Fo7l0nWFSwLMeA4uydZBIRDwTVyuBaaWjVIMJwVmO_vYO4W09y4jzEFWeYkxVQco2FA8DYA54HGWo3rDWRMNAO6hb4-eSrHyrd5r6ia4-14PQWXwdRvc5ZJ3RVApvioljNBJpVm15mYXBLHhYtCqzVFOmjI9JWByEFwgtmCdSVW_l-_-1lhhY2UCNb-qWPYT_iDsl9pBd5Oa083AOK3L8HxxCBJcXXfS-lostwAbDxBap8eEcxN5vlhsHfdknLb9VL1lxpFsHeYATBfVl97d2tKRw5G-3SSKCzbxhGcO6RDG0jCQbuGNcTeOG9m6au3cqxS1q_jCiY-Xm2PwfsVvycEOzw7Z3faC0Erezkb8xkXpJtCy_AjMuAdTlUnnqjjm8aKIq00iWXWaLc1qtd6Ywj4pFGGcTJHuaslQGUKbdg9OA46X57mjo4nBhflRqv3cN7jAO4m5bgO50hzW5TPFCLypKes9SZIzL_BqlO-t4pwKd2bvyolhgULoFFUFsmCY1riSfjo6J91-CNz-pIm5o45tk4J2J3UfHY0df4GCOz2t7J1PLgbRAJKWPKPKVy_ar90VMszK5SlWLnvTviR418l7I85WDquD_dpNwNVOnbtdJ1m_Bok9dW8AS9IB-AqKLgXvuloiIyYlpYDqkc9JlJeGtLezRtnHuS5agZfdjNNmLqnWFmPX7JetajQOv8nsg8wrNS-GWpKvN8XstnYDz5cNYzf0gDOWt41c7MPGaP1Jw-L5agPrO8XKV8Ao1dVs7SMXXNhIPiBp21356mR6jbTtZDI6O9rypMXS4abrPRSWqZlL-qlKgeEFzETVmIXVUay8WgqqohBWss1-PTWVy8Pe2g6QtISRn9WnAJDXFbZ4Rd6fib0-SxoD0mZdyH2rHKW6KHFg-PVSqrd5X3rliS-9SjHyyl7n1Wxu2dIS8Jpf7MrG7BneUsIbcOO8PQVRItpiGEplqaC5hhenSXJzeXaX57tUPdXOLMmalGSikUi8Sy57PQsu8MDhnt9n1WSm2zNrI9o1NzvLh5kmZXY27D3a262S611v6Q-7eGC2W2vZLfO3YzTobgj4-YvYVn4oD4k0kXjjBAInvdwrL5LA1FhtmdjuTqHxECVntBYrRec6SyP6xBKUdhx7nHfLLhSU42O-JJv7xCFzJvDzpRwcqyZZaLjtFwfcnqAaFv1aD7Wu23lXszyA2X3Lh3l_BjuFmx53Hj-V17Vo1oYeHdTTat1sVlsFO0u1vJ2OvhPvtPM03lW-cQb6OtyktkuxMmdImQMws1ZdmUmTLcXKW7CqbIFTiQTsFCBBZFT17Ovp0U3NcFvZnZcdllyPNsBWT12ItupVs7XJbW2iEqzd8Mhd-gMCWaoiw8PGhrXz9eburLI6rqYr3gx5mV_bGTZqvhBzTZ2b-OJyWcLtveN9koXc8jEB_mFf88LcSYEyc5J1BtwxW9YyUcHGOMXX1L7Wsr_BtlRr5upGgqtjX-qZuc927tVM7tXJQOR0fh76aVUVwCdEvkb2qq6dMJicN4A5rEu7bUIL7JhjOjVgmWhztptdb9a1XVnz6SRp6o6_PSTF3YFe7Ld4Hlde6nrIMPPYU-AsmN_XJoJ-RvTQr8QeGUYhpMjPplptWWCyG9fvyaG-2HXR3R2_Ej0sCcpZ9_JbPsOSWif4WO463dvKIMVWULCny14qxGzn6cIki2HKhtI8VPLMdVn2ZLkGz3pB2MVdumE79RCc0FYsPbyN0kWcXkNZEzT7tjD2MNfAfZv5AmvaiJuVumvgh3m7z7R6wm2qQiYZ9GYPO9-Ix1pLzXvCaOo2wUZ9TB-5aB44UWDsrdrbaCKPcZCDtzecw8HRDVHjAaDY2dBujo_VU_cUfgYxjQgdoThGYTtIIHaJirrCGAWDLpdH24pO4Me9071q6c4vyU-ySi1_qQnD3MeYJhCToYd8jtVPUTmIqg-AFSoJXYwic_KNmvLfx8NBzNFfs-xfzD4F6vSH2YX49ftnSupI_ms5VvgOTvtl9PEy_fZGHyv6w5hUNCzjqgkh_cH-wwwPUwF8tn90OCrXMnre9Pk0NWe-UXOGxqNyfqOt1H9q5EEqC7RKR1U5ND106DeQ9oOqHVIMR5VLUninh-FnlFVDl9Vnyvl29EcxrdIthjTFsj_38uzgXv44_tmMszTCP4rraAAaKCNCVzfYNCiCeHD8ZSvPvtFgsB0WLivyF4sPkOP6w2dVQfyMkcA8p4vPMAc53zVVmTyThsrve_jzZ0UGmV6MaS7g8_KzxUMv8YuYcVq1eTQS-yHCX2Zh2IuP_BYVJvmdbssG5j75Ssj3ruWvstiWsK9hSGA0sBsCajFsPui_RO_TaDVd-S_wfTJfcNxiMuO4l_SdWcHJKmSWy-litpjFcyZm4hWcQZ_zmZBh4At6Zxl2ykzY6YSZrRjujZnPlvF0FS4nMIrjJUdxDCx8lL_l-a0YWpGX8Yr4fc6w09lL7gcwx-ONNMuWsKPHyWFXZuJL8z5eLgdtgimOyREm-AuFIJLD9687qn973TMY_NS0_Wu_9ote7KVt8vc_vwMfY_y_AAAA__8tTcd9">