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

    <tr>
        <th>Summary</th>
        <td>
            Clang mixes up class name with member variable name when parsing explicit dtors
        </td>
    </tr>

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

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

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

<pre>
    A very simple case:

```c++
struct a { 
    int a; 
 ~a()=default;
};
```

Clang rejects it by complaining that `a` is not a type name:

```c++
<source>:3:6: error: identifier 'a' after '~' in destructor name does not name a type
    3 |     ~a()=default;
      | ^
      |      a
<source>:2:9: note: non-type declaration found by destructor name lookup
    2 |     int a; 
      |         ^
1 error generated.
```

It seems that there shouldn't be any ambiguity here as that `a` in `~a()` definitely refers to `struct a` here. GCC and MSVC both accept the code.

Please see [https://godbolt.org/z/KjhE6rjTh](https://godbolt.org/z/KjhE6rjTh)

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMk1GL5DYMxz-N5kXs4NibzOQhD9nZnVJKodDSdyVWEm8dO9jO3k0f7rMXJ3NXdo-WC4ZIWLZ-kvynGM3omBson6B8PtCaJh-aT-TGzhflofP61rT4xuGG0cyLZewpMqgWxLYqsa8e5FNeoo0prH1CQjg9IYgWEdG4hARq978QyDPIGtSz5oFWm0Dlg3B6vhtfL91zXCy5EQO_cp8imoTdDXs_L5aMM27ENFFCqARBJdBEdD5nT7eF0dH8v6ygLtGvoWdQL6BaBaqtQLXIIfiQDaPZJTMYDgjyRCBPSEPavS_ZMw417yX7sOVD7XmH2Lyd5N4HhXC6ZOM_m7BtblFQvrzzt4--h5ag2jqzOp94_7uHrXrNvaVAyXiHg1-dzp37SGu9_2td7pnkt0zvJvaeIdsbW7H3CUd2HCixPn4_vJ8TRuY57lNKEwfGOPnVagfylLBjJHdDmjszribdcIug-GGqLpvfelYJ1DwYZxLbGwYeOERMPsd8fX05Jl91xJ8uFySn8dff_7xg59OE1Pe8bDDYe83HnfQ3yxQ50yKUT1NKS8xPR15BXkevO2_T0YcR5PVvkNdfXqeXKrz-MUH5DPL84-GyBtEedKN0rWo6cFOcVCmVEKo8TM2Zqa5Iqupc9STOwyBUV1eyV3UtezlUB9NIIR8LKauikkKVR0mkikJVgsWgi6KCR8EzGXu09m3OBAcT48pNIYuiLA-WOrZxk7uUfVYWSJmVH5p84KFbxwiPwpqY4r9XJJMsN7sQZ_OZI64L9pZi3B_RJ5MmnHnuOOAbBUOd5fvOxA4XCjErlT8v1vQmoU4-xMMabPOhcSZNa3fs_QzymrPffw9L8Fn-IK9bNRHk9V7QWyP_CQAA__9wUG8E">