<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60760>60760</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
matchesAnyAncestorOf yields "Tried to match orphan node" for a ParmVarDecl
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
vickyw1112
</td>
</tr>
</table>
<pre>
The minimal example is:
```
#include <utility>
using namespace std;
template <typename Callable>
class Foo {
public:
Foo(Callable call) : callee(call) {}
Foo& operator=(const Foo& other) = delete;
Foo(Foo const&) = delete;
Foo(Foo&& other) : callee(std::move(other.callee)){};
private:
Callable callee;
};
template <typename Callable>
Foo<Callable> createScopeExitGuard(Callable callable) {
return Foo<Callable>(callable);
}
int main() {
int x = 17;
auto lam = [x] { ; };
createScopeExitGuard([x] { ; });
return 0;
}
```
and the matcher is
```
parmVarDecl(unless(isExpansionInSystemHeader()),
hasAncestor(functionDecl()));
```
it gives me
```
Tried to match orphan node:
ParmVarDecl 0x62bfff8 <test1.cc:24:24, <invalid sloc>> col:24 used 'const (lambda at test1.cc:24:24) &'
Parent map should be complete!
UNREACHABLE executed at external/llvm-project/clang/lib/ASTMatchers/ASTMatchFinder.cpp:1210!
Aborted (core dumped)
```
If I substitute the lambda with "lam" variable for createScopeExitGuard(), the yielding will disappear.
Does anyone know how to fix this, thanks in advance.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVVuPozgT_TXOS-mLwBBCP-SBTjrfjLQ37czue2FXgneMjWyTy79f2dDpZKZ7dyWEsOviU6dOYfReHQ3Rhq2e2Wq3wDF01m1OSny7nvM854vWyuvma0fQK6N61EAX7AdNoDwrGpbtWNawKpufackLZYQeJQErtmNQWoUrK14m6-iVOYLBnvyAgsAHyYrnOTK9A_WDxpCiw3Wg6Atb1BpbTbc8QqP3sLcW2HoOh2FstRI3XBDNjNevsSBQa8afgBVN-iZivL5trp_ZevcQWYEdyGGwjhW76GqNDzdT6MhN2XYgSVOgWyGvJ0d4KYjx6t9dk9ND4juYiaeGFU1vT3GdvJav5qf4TAU8kgmDUyeM591IeaCD3pDcB_-3HkTMxfZuG4QjDPRF2IFeLir8f0Qnv-9A8p0JnyA5CqMz8EO6uTtzwAPQuxKVCdCjMozXj2khWi6J9Hz9PS-AY7CgsU92tnq-sNUuBgMrnuGeC_ioqveC7mHO0XN12Tv4HwcHjYQQRw2D6MjFEXvPbUDX_4luR0IzXo9Gk_eM18q_XAY0Xlnz2Xy5-kD9J0IZpVTPAuHbGVOHvjGCfFQ2rw-jEUFZM2d8db6r5LsBn2gPcFQn8tDTu15fnSIJwU7lgHVDhwaMlW9a_O2tEsguFW8Ph0OdJEc-5EsRR5mX04tvo0GZE2olwWsrokCi5KxOHjB6ksD4eppSxmuNfSsRMMB7-Z4gzdv6BoWSjgbwnR21hJZA2PirC8R4Pnn98cvvL832U_P80wvQhcQYSMb8dAnkDGrG91qf-v8Nzv5FIjC-FxrNMW6rlvF98-Xrz1Nz_d1qr4yMszwMrGhynme385rWupCqqoV1BHLsB5KxNR_35fMBPoMfWx9UGAMlRc1MnFXogHGusWecwwmdSlN5sO5DjSfZpCRXRVrGn_dZaQ1SeRwGQrecjt1Z8oDmag3BN2PP0Nlz7P5BXSB0yk9Z0HzzoAygPKERtFzITSGfiidc0Cav1lXJ67Lii26Tl_yQl7nIMilkLWgtWiHLCsuyzlYrUS3Uhme8yHi-ynhRcr6UmViVQhKJSiIdOCsz6lHpZezI0rrjQnk_0qbK1lW20NiS9une49zQGZKRcR6vQbdJXWzHo2dlppUP_i1LUEHTZppR35jr6yD9epgY8pHhfxA_54lvhHv1L0anN10IQ7pV-Z7x_VGFbmyXwvazqn4UV8IclZRq-jsAAP__aKxUJQ">