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

    <tr>
        <th>Summary</th>
        <td>
            switch statements expanded from macro are missing source locations
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang:frontend,
            clang:diagnostics
      </td>
    </tr>

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

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

<pre>
    See https://godbolt.org/z/rjzdsKqqh

```c++
#define S(a) switch(a){ default }


#define D default
#define C(x) case x

int foo(int a) {

 switch(a) {
         default
    }

    S(a);

    switch(a) {
 D
    }

    switch(a) {
        C(10)
    }

}
```


```console 
<source>:13:17: error: expected ':' after 'default'
   13 | default
      |                 ^
      |                 :
error: expected ':' after 'default'
<source>:19:11: error: expected ':' after 'default'
   19 |          D
      |           ^
      | :
<source>:23:14: error: expected ':' after 'case'
   23 |         C(10)
 |              ^
      |              colon
4 errors generated.
```
the second emitted error does not have a valid source location.

Seems like this only happens if the entire switch is expanded from a macro.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycVM2SozgMfhpxUU3KCAjhwCHpTC577CcwWATPGjtjO7098_RbJqR7wvZ27Q7lAlsq6ftBZRmCPlvmFqoDVMdMXuPofBs7yYq9zzqnfrTPzDjGeAlQ7IFOQKezU50zceP8Gej0E-jkv_1U4Y_v30cQ-7S24rZ6oENaYg9UKB60ZXwG2kmgBsNfOvbjcoL6gIoHeTURoT4ufX6tO97zD9EnoN1r6tbLwPh6K9I24uAc0C7tZjCoD7fcI-wSx_vzDpFOb0TS4c4bisN78MNmx4_KP4NNInKReq8Kl83dzndX3gx2NjjDmGLFU3BX3zMUX6HY50V61VDskb13ft68XriPrBConv9mjXKI7NP5rpzqG4m8QKifVobgHFs_UH39PF8kzv-fxVpRk1757ytqHtkd_4X0Ws6N_ooMzfaW_5lMGs83JlQ8QD78_n8Y-Km7vTPOgtiXNxYBz2zZy8hqsxqcODIG7p1VyJOOieZcgspxQOsijvKFUeKLNFrhTSsa18uond3c5u6ZeQpo9J-McdQBnTU_cJSXC9uAesAEwjZqz8u8ow7JFmkVKxy8m1DiJHvvNplqC9UUjcy4zeuy2eViWzbZ2AqumkGWnG8rUalOEndbkgPteKAmlyrTLQmqxDYvclGIstkMuRD9ttvSjrZSdAyl4ElqszHmZUq3VKZDuHKbl6WoKDOyYxPmO4-oN9KeodgP3tnIVgER0NMvCaXl2boQdR9Srjpmvk19v3TXc4BSGB1ieEeKOhpuF_EhysgT27g2YbYApWecdAjantd-h-zqTbu6dnUcr92mdxPQKQEuny8X775xH4FOs84AdFqkvrT0dwAAAP__StOnCw">