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

    <tr>
        <th>Summary</th>
        <td>
            [USR] USR of template instantiation involving lambda( type)s unique together
        </td>
    </tr>

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

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

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

<pre>
    Given

```cpp
template <class Lambda>
auto call(Lambda &&L) {
  return L();
}

void lambdaCallerTest() {
  auto L1 = [] { return 1; };
  auto L2 = [] { return 2; };

  auto Take1 = call(L1);
  call(L1);

  auto Take2 = call(L2);
  auto Take2b = call(L2);
  call(L2);
}
```
```
|-FunctionTemplateDecl <line:1:1, line:4:1> line:2:6 call
| |-FunctionDecl <line:2:1, line:4:1> line:2:6 call 'auto (Lambda &&)'
| |-FunctionDecl <line:2:1, line:4:1> line:2:6 used call 'int ((lambda at line:6:13) &)'
| `-FunctionDecl <line:2:1, line:4:1> line:2:6 used call 'int ((lambda at line:7:13) &)'
```

generating the USR for the callees of the call expressions `call(L1)` and `call(L2)`, while two distinct `FunctionDecl*`s, generates the same USR:

```
c:main.cpp@F@call<#&$@F@lambdaCallerTest#@Sa>#S0_#
```

Unfortunately, I found no user-facing tool that can generate deep USRs (`clang-extdef-mapping` only warns for **explicit** symbols). The issue appeared during the development of [`D124448`](http://reviews.llvm.org/D124448).
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy9VU2P2zgM_TX2RUhgyx-ZHHyYJs2iwJw60_NCluhErSx5JTnT_Pul5DiTSTOLPRQF7DiiqMfHR5pujTg1f8kj6CTbJtnj-bfOposPw2Tx0A-KeSBJseGKOUeeWN8KlhSfJwc2ekM4UyqhD9MWSWiN11NC1yRZfZrcCLHgR6sJmh9wJynOG8lqe83gaKQgKuJsEBTsCzg_HbkGi1GfcmS1JUn1Kam2YXeOkSM6CcDFzQH6wQF6e-DdsRf2A6ZQc575dQbkvvkXCPoOgr6HePNq_8vtrvlNwrl895erzWI3au6l0S_nsm6Bq1BaJTUkxWMeb7oh53U52T7Pa9TpsZ5IzJDkGvYGjv5vOOyZVZTgtotCnnT1G6ONDsQlpNSexOZ6mFqOMD971-F0EdvuDos6-zMsVh-yuKlt_N2DBsu81HviD0C-PX8lnbHxf4gF4IjpLksCPwcLzmEOLmT0rovrjDAtrs10MofUXg9SAfGvhgjpMBz3wfFakIQGhi44n0lh7BDYsT4Sw7zuDp5pyXG7Z1Ivwxwqsx3ekUaxSWgRlSjP5l9HRYHW5zifaPGc_R0MHyv2TaNAftTIT50C2y-o2IiJaxNqZBcd41FOYxTyx8Jwpi8pEQEwhGxcrB9qpZjeL-CnF9AtejYMeDZIabQ6kVdmUehQkKAOfUT5leTSTyviTn1rFEq2XpIXVEo6NwJBDGAWm0WMdq6rgCMoM_SAfYP1DOOszrY5LcsykMDZhmwO3g9BZLrDy8JRwqtbKnXsl8bu0TT7Y7hUNIVYF2uWeukVNAgYKoQjMnRQ6Jj5IyC180x7yUKdcXU06hhYTVXAqMSfBkBMR0Yt_0H-3uwBOdt0tKoJnNyF1F76w9guuelxEZidH4vBmu_AUZdd1AAl2VVVldH00LCuzcu2FjTnJZQlVGtWr3lLy7plVPAqVawF5UIKCaWxHBivs0Z70AJNocb4ULKdNtFSbVPZ0IzSrMrrPC9qWi9FWRUVXfOuW3W8LQX2FGBDqouCqW0i13bcu9CG-B68yZvid1LuNUQpAz6OtoOxDb43bgAr_SmNmTUxrX8BdC4pXg">