<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/67529>67529</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang-tidy: modernize-use-using fails when type is implicitly forward declared
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ThomasHuetsch
</td>
</tr>
</table>
<pre>
clang-tidy check modernize-use-using (LLVM 17.0.1 and before) fails to convert typedef to a type alias when the type is implicitly forward declared. The new type alias (BPtr) is an alias for the class itself and not a pointer to the class.
Before
```
class A;
typedef A* APtr; // OK
typedef class A* APtr2; // OK
typedef class B* BPtr; // * missing
```
After
```
class A;
using APtr = A *; // OK
using APtr2 = class A *; // OK
using BPtr = class B; // * missing
```
Should be
```
class A;
using APtr = A *; // OK
using APtr2 = class A *; // OK
using BPtr = class B *; // * missing
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVEGPmzwQ_TXmMgqCcSBw4ABaRZ_0bdVKXfXu4AHcGhzZZqP011eGpMlWqba9VUqMPHrv-T3MjHBO9RNRxbKGZU-RmP1gbPUymFG4_2byrh2ig5HnqtVi6jdeyTO0A7XfYDSS7KS-02Z24a-mHhgWz89fPkC6i5M4BTFJOFBnLDEsoRNKO_AGWjO9kvXgz0eS1IWSWDYgtBIOTgNN4Adaa8qBGo9atcrrM3TGnoSVIKnVwpKM4WUgmOh0L8CwaD55Gw5VDsR0KXfGLrKtFs6B8o50t3icjAcBR6MmTzbY-YmKgSVPLKnXtVmzrJU8ufyW7apZM96s-2u2mmENdTDDG2C4Z7iHj_-_xVy5FyQ-gD4iNIHQvJUOpVG5cBkPba5r3XmyfxRjvdbgChh_gjoc8MDeDYYL7iLzG_Q9p7lKXzP9bZbPg5l1-Mz-zTy_UN7LFMmKy5KXIqIqzcusSDhHjIZKim0hc0xTzMt2V3ISBWGOEkXW5bstRarCBHlS4i4psNhiLClNc550XVpgllHGtgmNQulY69cxNraPlHMzVfkuwzLS4kDaLWMA8dbrDDGMBVsF0uYw945tE62cdzcZr7ymu_nAeP1wOKz9vzb3-40dzVZXg_dHx3i9vr1e-WE-xK0ZGe7D8ZfH5mjNV2o9w_0SyTHcL6l-BAAA___tYHBa">