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

    <tr>
        <th>Summary</th>
        <td>
            clang-format: wrong format in switch with conditional compilation
        </td>
    </tr>

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

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

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

<pre>
    clang-format: `17.0.1` but seen in `16` too.

Source code for test. Comments:

- With case `0`, Comment after opening curly bracket. There is no conditional compilation. Code is properly formatted
- With case `1`, we have comment after curly bracket, and local variable, which has been formatted to the same line as comment. Wrong, no?
- With case `2`, there is no comment, but there is a conditional compilation, and it again works fine
- With case `3`, things are even funnier. Everything has been put in one line up to conditional block.

It seems that a combination of comment, local variable and conditional compilation, breaks the formatting.

Is this expected behavior?

```c
#include "abc"

void
func(int par) {
    switch (par) {
        case 0: { /* my comment */
            const char* abc;

            /* ... */
            printf("abc");
            break;
        }
 case 1: { /* my comment */ const char* abc;
#if CONDITION
 /* Code here */
#endif /* CONDITION */

            /* ... */
            printf("abc");
            break;
        }
 case 2: {
            const char* abc;
#if CONDITION
 /* Code here */
#endif /* CONDITION */

            /* ... */
 printf("abc");
            break;
        }
        case 3: { /* my comment */ const char* abc; get_abc_data(&abc);
#if CONDITION
            /* Code here */
#endif /* CONDITION */

 /* ... */
            printf("abc");
            break;
 }
        default: {
            break;
        }
 }
}
```

clang-format fle:
```
---
Language: Cpp
# BasedOnStyle:  LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignArrayOfStructures: None
AlignConsecutiveMacros:
 Enabled: true
  AcrossEmptyLines: true
  AcrossComments: true
AlignConsecutiveAssignments: None
AlignConsecutiveBitFields:
 Enabled: true
  AcrossEmptyLines: true
  AcrossComments: true
AlignConsecutiveDeclarations: None
AlignEscapedNewlines: Right
AlignOperands: Align
SortIncludes: true
InsertBraces: true # Control statements must have curly brackets
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortEnumsOnASingleLine: true
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: AllDefinitions
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
AttributeMacros:
  - __capability
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
  AfterCaseLabel: false
  AfterClass: false
 AfterControlStatement: Never
  AfterEnum: false
  AfterFunction: false
  AfterNamespace: false
  AfterObjCDeclaration: false
 AfterStruct: false
  AfterUnion: false
  AfterExternBlock: false
 BeforeCatch: false
  BeforeElse: false
  BeforeLambdaBody: false
 BeforeWhile: false
  IndentBraces: false
  SplitEmptyFunction: true
 SplitEmptyRecord: true
  SplitEmptyNamespace: true
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeConceptDeclarations: true
BreakBeforeBraces: Attach
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 120
CommentPragmas: "^ IWYU pragma:"
QualifierAlignment: Leave
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DeriveLineEnding: true
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
PackConstructorInitializers: BinPack
BasedOnStyle: ""
ConstructorInitializerAllOnOneLineOrOnePerLine: false
AllowAllConstructorInitializersOnNextLine: true
FixNamespaceComments: true
ForEachMacros:
  - foreach
  - Q_FOREACH
  - BOOST_FOREACH
IfMacros:
  - KJ_IF_MAYBE
IncludeBlocks: Preserve
IncludeCategories:
  - Regex: "^<(.*)>"
    Priority: 0
  - Regex: '^"(.*)"'
    Priority: 1
  - Regex: "(.*)"
    Priority: 2
IncludeIsMainRegex: "(Test)?$"
IncludeIsMainSourceRegex: ""
IndentAccessModifiers: false
IndentCaseLabels: true
IndentCaseBlocks: false
IndentGotoLabels: true
IndentPPDirectives: None
IndentExternBlock: AfterExternBlock
IndentRequires: true
IndentWidth: 4
IndentWrappedFunctionNames: false
InsertTrailingCommas: None
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
LambdaBodyIndentation: Signature
MacroBlockBegin: ""
MacroBlockEnd: ""
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PenaltyIndentedWhitespace: 0
PointerAlignment: Left
PPIndentWidth: -1
ReferenceAlignment: Pointer
ReflowComments: false
RemoveBracesLLVM: false
SeparateDefinitionBlocks: Always
ShortNamespaceLines: 1
SortJavaStaticImport: Before
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:
  AfterControlStatements: true
  AfterForeachMacros: true
  AfterFunctionDefinitionName: false
  AfterFunctionDeclarationName: false
  AfterIfMacros: true
 AfterOverloadedOperator: false
  BeforeNonEmptyParentheses: false
SpaceAroundPointerQualifiers: Default
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: Never
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInLineCommentPrefix:
  Minimum: 1
  Maximum: -1
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false
BitFieldColonSpacing: Both
Standard: Latest
StatementAttributeLikeMacros:
  - Q_EMIT
StatementMacros:
  - Q_UNUSED
  - QT_REQUIRE_VERSION
TabWidth: 8
UseCRLF: false
UseTab: Never
WhitespaceSensitiveMacros:
  - STRINGIZE
  - PP_STRINGIZE
 - BOOST_PP_STRINGIZE
  - NS_SWIFT_NAME
  - CF_SWIFT_NAME
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
---
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWutz4jgS_2ucLyooMBkyfMgH89pjlwADZFN7Xyhht23tCMkrySTcX38l-SU_yOxd7T2mdmcS9a9b_VKrW4ClJBEDeHa-TJ0v8wecqpiL5xf8MwgKD2ce3J59ilnUC7m4YOWMPOSMB8On_qA_dMYDdE4VkgAMEWYIY72oOO87g7kz8LK_DzwVPiCfB4BCLpACqfpoxi8XYEo6I88G99AbUTHysQQtceCMB447K9AIhwoE4gkwwiLkp4Le0Flg_zuoPjrGIAARiRhHPmcBUYQzTJHPLwmhWP-m9w0MJhE8Ac2emaYg6FRgmCvwDijGV22FrUhNAQ3DLECU-5iiKxYEnykY5pj4MYqxRGftrHJHpDhSMSCJL4AoYYCwLHboozfBWaTZGXdGy07t3Fw7VbPc8OtlHZ6ShO_5pNCbKIQjTBh65-K7RCFh0LnpqNyUsEgiLADBVZuVMkZA9NHiCuJmqJXNSap0knCWG5om2nhbozPl_vda4qxMcl0kUjFWRv_LmTCjM-KhbWjd5caaT4w9C8DfpfF8HgrCovrOmkokgo8EfB2oM8T4SrgoA5H_PR5k__n57-6IMJ-mASDHdfHZd1zXxl85ydMsTJnvuF8JUyjBwnEnyHmaZiSEEJLvRPkxctyvXVT9x0RjYE7k0xQ57tJxPXS5lQnquJ5erPEYPs6kQn6sxXpIqzia2ira2Fxqv9-_Ky4RhKnQcb9W9rqTUqSNNF5vUZyneb5gDBr-yKDP9HdHJESz7Wa-Oq62m1xsLsgce3MUbEscdwQsIGGJKpjrqP8Dx7i5Y_6lgP7vHfLXecFO-9G_lSUoAnXCZ_8UYIWNSmOj0uQHDmub-Rf47j-ZQS2nBRDilKq7KfQj35c_VT8Uhc82ym4VUEihutrr6F6vl_2wxixKcaSBaJYkpRvRFEsItuygbkYKQuv1ry8Z2fN9kPKFByQkILZhKMEY1ssLrUdJxDx9O28TYNP8ah55yBBsjBD4tg0PSqS-SgXoTgRteHHpGcyMMwl-qsgVXrAveNWtoAXTV02gmZRIoXCdp1FycUnUbU1YJrRNt5ofi9rc0jPtWQm8r9uUqCUBGvx31ZuDT7Ewt2qXfgvp4wSCDbzTYqc9iWJlQbYJCMyM2nZ4DlyoVXaNNlRYMQlC6aBWFKQTZsaZEpwiqbACozu6pFLlPZvdpUlr_6PAhBIW3bOX8nePUk9EqSFv2QY-lPZbN3CHBb6AAiG3oeWcT9kOMRdqwdKL3DLvQFhE4TPkVDdJbagJaBM7wxLW-Az0z4lepsw3sWyhPUqb4DW-nAP8p6Cr8FAGpYXfwBVESzjnSRsaYipLpd_xTU511TInfQ4hYabZ24NKBTveEmhmZJ2jjvMorUTIFscUQi7gJaVKZwsclNCN732djnBJKFatA_IbFLKVEuScqlZRQT10Ovk4wWdCSRHRKWE77H8v07AewJxa5V6DrM_Km8BJQlhkbWS8UGZIw5aCTLFsmplTsuNWBrYRypxfp3W35CLXuqkbfAGZYL8Z9py8Pf8-s1zbqWBW1bv5X9ndnRcfCgQzh6wJyJJghpUft3gz2kKvdJOy4zLlwa1b7FtMaJt3xQJgVrWrEQ8JJcqce9uZVi2vAHvwuWhdBRW95m87dcrcnxKGxc2Ua8VFUe2r-6nFMOPMh0Q1T0C38NJATynsxy3AisUgiMLMB12pccMXBmlh1kSayBeaUM5aIo8gWhY1lNM3nckiLla6MmBK_gFCFlLv6HGH674-Ju9-xldsbnCPMa4qfzWlZ6VnTRQITBtKzzhNL2xNLsRYP3QHxbq53HYCRxdseHQn-WWBVm-_vaLELOvCUEyq31JMTW9lrsjidK8BX8uNLgn2VZk1TU27XZAl8xsJlDk_jyVWEZYai-8gkmQ4NCkS6MCWLWFl-BwEuZprYsGCrMq1qDtOmGqYZKk8J1K3S8vylcuilc2SiVS9_WzUvRKahbqNXfOI-JhmBSZj-UhAEK0Spl6q-BwU-Cov6rkxljJ69bMUy_jyjGk00WaAcD-LkUfplm2Z8eVWbBnsQHRev1m_c0eRe_3OknyUOdPdcS25WGA_7rgVtTvL0qAXvp2W2_3Cm_2tWpput4djfXkVdsj65efTanl68X6bLoqu0vSaWW-lNdoJkCCuUCPPsIKICwJ1aXuI4KM6Vc5o5rhf-2ammzijRelxPVHtBOFC3-sjDw06RTxpETpOpQj9y1O3iOEdLWrMnZxuzbKVfMGENUQcQSpjwtJxH0tBNY7sYbfOV-L0Wa4fgGadyDBVl9ps9QtqFZcW809c8fvMu92cCPD1rNIYUDJ647ZvdQAWdA9_pES0x5GuipWv6p4LguJyNpnfskFPM_YQght66nvh4AuSqG8pV5kAqxJXZL3b6pJw0TxSvwAk1bjnqWMMB4WF2oaVWyt01adkRpQN1oFEDOspOcOZU2UETCEirBn9irxgQZv4USl05FpBK5nLCtFQoPKJbv-KpldwxX1OixtfF1ALpBVohMi1yFU3sAGpIDB400fXnaLBB62SSZCd-dxANRu5EpRJbGpWSdsBw1Tdsru_aqAq3WxAJmxJhFQzbA2YxmGTNj4vq5o8GgzadCNpDVLq_2tdgo3aJsB2WABTMUgirWplo7JexAgZdO3VMQVl4Bp08aFLxCzGAvuFYQPzpwar5rUtWym5fWfF_TKuA7N4Q_AWE1U1tQWmowtYQ5i3r7tdI1l6eU7uIQQBzIcaYy6shFD-bt9qVm7s4cKveZtrHrLq5AMk2j9QjaDV0cymyhynZ-PyfJTPN8Pq0cTUA31m_KwWVF1nhXmVhEX3-_Iq0WemcZhh2WyIKkjezmz4fUiRBb_A7b01hFgHpjoKd3pyC6svhayN7tg1P386fY2E5qgq72C3SeGN-gzcYm--mJl5NmtPymajA5HfA1WQdSQ_n46tKN0HWy2OvWs2KV9BUI4DCAqn3plPN5yZmlye-tZdlUVU8JQFeeKXc4KBzvMn5qZz95hFYDrRJRdrzpMycI3QrjINumZvm_4DDfPxrOthb2jDVsxjEc3bgqqBL4iz6sPD2htHazsDVZgw3Sh3TWUlrDxNP7JgZUpbObVBSD6spHwhjFyyZ5Wy_XvBH8Var2Hljzc7_JHibAY3j6N3T9SnuOIB2gRXM-U3w5SrvGc_KMwCnBWANVa6uSzWM_eWb2Jr8r3rXezbafGyOjaYOnGvm9fDYm6tHE_7xbfX1X5x-nWxP5Qf7BzxuSz1X7OlVwmz_XrZsO5VwhGfG6lSXTAHYJJ0fUSAeuhw3K82P63-vqiWdrtTc7WYXTpIqIc2h9PhbbU8njbei7U8W7aW7RpZH5vvx3VWn97uHc-Ol5gWsPxcp_y85yF4HgWT0QQ_wPNwPBkPXHfw6D7Ez8HXyTh8gtHj5AzuePA4-DLGj8PhEAbwNHYhfCDP7sAdDSbuxB0OHwduP3gajoZPo_Nw8vT4BT8-Oo8DuGBC-5ReL30uogciZQrP46evX9wHaoYC870W1619hUVPafMH8azZeuc0ks7jgBKpZCVIEUWh9cWXd8FZlH9hABFWfET_br4a0f1lg4dU0OdYqcQkhbt03GVEVJye-z6_OO5S75j_00sE_x185bhLY4d03KUx5Z8BAAD__weGQU8">