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