<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">