<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/58214>58214</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang-format attempts to add the lines of code after macro definition to the macro
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jacob-abraham
</td>
</tr>
</table>
<pre>
I have a macro definition, followed by an include statement. Below is what it should look like.
```c
#define CUSTOM(name) \
case i64_##name: return "custom_" #name;
#include "file.inc"
```
If I now run clang-format on it, the formatted code is below.
```
#define CUSTOM(name) \
case i64_##name: return "custom_" #name; #include "file.inc"
```
This breaks the meaning of the code.
This is my .clang-format file
```
BreakBeforeBraces: Attach
AlignAfterOpenBracket: AlwaysBreak
SpaceBeforeParens: Never
IndentWidth: 4
ColumnLimit: 80
IndentCaseLabels: true
UseTab: Never
PointerAlignment: Left
IndentPPDirectives: BeforeHash
AllowShortCaseLabelsOnASingleLine: true
AllowShortIfStatementsOnASingleLine: AllIfsAndElse
BinPackArguments: false
AllowAllParametersOfDeclarationOnNextLine: false
BinPackParameters: false
AllowAllArgumentsOnNextLine: false
```
If I removed `AllowShortCaseLabelsOnASingleLine: true`, then it properly does not add the include to the macro. If I do it with any other kind of statement after the macro, it does not add it to the macro definition. If I add any kind of statement after the macro, it works as expected.
This is a stripped-down example that is independent of my code. I have a number of patterns like this in my code and this is the only one that breaks, from what I can tell it is having the case statement inside of a macro with the include statement afterward with no statement after the include statement that causes the bug.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNVkuP2zgM_jX2RRjDcR4zOfiQZFo0wGwTIFPscUFbdKxGlgxJTpp_v5Sc5zwWRU8bGJnIJD-SHx-aQvNjvmQ17JEBa6A0mnGshBJOaBVlC1ZpKfUBOSuODBQTqpQdR2YdOGxQuYTNkRSYsOxQg2PCMVvrTnImtd4xKXaYROlzlM5O35O0f8rTORsGh8gWPzavq7-i7ElBg1E2ZX_-icaLHt0fSrDIxGT0D7miJ6APZ8yg64xiUZaVnXW6IXHGLvL5JbpzxiSuhMSEzvTzTTK3GS4rtmSKKDGdYqUEtX2otGmIG038OU-qq5H17xwxW2qCJ_4KT-THZP2_uWJ_QtNr7VM2CDsb-GgQlFBbpqtw9KQk7_TpaY4suWPVu_sP0ubexRxJGecGSrQ-oZlzUNa9wkyKrZpVDs2qReV1duiCkjzA0Qb7XnPTkn0PtQaDKkB9xz2aU-UVp4n4W3BXe8mof7vQsmvUi2hEQH1Kb5UXRPgLUOUDljPdKZUfFl-heIO_1kJRmCFgP3te_IKVuwVcr5-FwdKJfZ9pH-43sJdsqck2tTY3rldqtiHqJb5Qb93HcVVfVpvzzL83ILVlZWeKf5H2rhhzodZE6Mxsu2DplSu4KAV4-iI6qZUoN7uqnpHKa8AvoJX6jr_c2cmN3Qn2avYJ7sXvp0ifj7DBRu9pPEn2-6QRTj_fftRZa3SLRh4Z12hpJzgGnIf2Po-L033z-82bsOCXa296EK6mhXtkmuSG7YTifjQue5eB79irsXdLZneO6HyLf7PZT668kvfxu-gHbWhawTL81VKPIf9wQoFwjGhb5A9cHxQpQ9NKyjXcD6RCjUqT5rvVO6WBDsPOLveQ6pqCvJOs9RvSKBvuEQII1mcLCp2f3vUrRCuiWquTp363hDvM6Ka_nZa04RRzKKVPh8zIo186YeP43XdlQCgryAcFcb4YQ0lui_eGrgMY3isp_SGV7-1CoCV0FvsMim6bxJgPJpPxYDAeTUYxz4d8OpxC7ISTmN9tPk9O0zrrq3xuLEndaH3UPUPB99vq33VF3BmZ1861foai7Cs9W8qhK5JSN3SQcn_-80D9_JPqTkdhbUcLJvs6fsoGo7jOCxwMsBqkZfk4ncDjYzoucDhBACgKHBVpLMPU5NF4TveCQv8fA0H4O2L8HIs8S7NskKaP6SgdZcMEq4qynwJMcVphCdEoxQaETHwciTbb2OQhJGLMklAK6-xVCNbSjkQM7ggfOkfTm_-EUhcPUBiooYlDAHlI4F_-NeGt">