<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61479>61479</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang][ExtractAPI] Declaration fragments for Obj-C lightweight generics on `id` includes extra pointer indirection
</td>
</tr>
<tr>
<th>Labels</th>
<td>
good first issue,
clang:tooling
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
daniel-grumberg
</td>
</tr>
</table>
<pre>
A common pattern in Objective-C framework code is to have one object delegate to another.
The delegate object conforms to a protocol and is attached to the delegating object via a property.
The declaration fragments for this pattern in ExtractAPI are wrong. for a property that returns `id <AProtocol>` the declaration fragments are `id <AProtocol> *`, which is incorrect as it implies “pointer to pointer to object†where id is “pointer to objectâ€. We would expect the declaration fragments to look exactly like the sources in this instance.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0U8Fu4zgM_Rr5QiRw5DqpDz5kkgbY08xhgT3LEm1zKouGRDft3y_kZDbFor3YhvneIx_1ZFKiISC2qv6h6nNhFhk5ts4EQr8Z4jJ1GIeiY_fRHsHyNHGA2YhgDEABfna_0Qq94eYEfTQTXjm-gmWHQAmEYTRvCBwQeEWCQ4-DEcw1E1hGjFtVnlV5_HvER_WOthx6jtOqZGCOLGzZgwkuyxsRY0d0uSoPNoXhD_-NzI03Y5SPLdw6fe5nvYlGiEMef5gwSIKeI8hI6bPRl3eJxsrx119gIsI1chi2K_KhDzIagYiyxJBA7UtyoKrT8dd9blW9qH15H_Wrxln5SxoofVT7UukTXEeyY3ZPwXKM2aVJQAI0zZ4wgXrR6rlUzWlmCoIxb-fT520zf0BnuI4YEWhd6FfU_-G38A_ClRfvAN_n3P17O8LgmV8B340V_wGeXnGFJ16ixWzhtmcKSUyweE9C4drKNVVjCmx3-0NTHkpdNsXYdqbpdbV3Tx0eus7ioW96fK5r49xeV2VXUKtLXZXV7rDb60o3211_KM3BaXzGZldjr55KnAz5rfdv05bjUFBKC7b73dOhKbzp0Kf1Lmg9MDvoKSaBFaO0VvqktLbehEFVR2H2FIb8vz4Xsc2Sm24ZknoqPSVJjyZC4tc7duPWZ1X_eCRK1Wc4f5vEn93vzQk8DaNcMT9hwICRbAIOt7jkVFGwfnGYALPufydOwVEOCXEolujbUWROqjoqfVH6MpCMS7e1PCl9ydPeX5s58nrs-rJ6T0pf1hX9GwAA__-irGrL">