tree 60ff8ca17dcc87eabb23ae21d1dc1ec90d4eb063
parent cb7f4ff03cc20b04360d75f78e2255214a617d5f
author Zequan Wu <zequanwu@google.com> 1748462664 -0700
committer GitHub <noreply@github.com> 1748462664 -0400
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJoN2xICRC1aQ7uu5UhlAAAyQ8QAArNovc7jpEkPT/51SRr/o7C
 C/JE3xhLan16ybzlJiyQgPuS8lseY1Swol4dslzVVR5FvQPx/VOy0TozNLMk7IDY
 vnDM4Z5AQX1frwDKS6uNNU8WFLU0152TId3NWU7akvaEafd9lCeQkhuVZWErpuxZ
 4ZkhtSr+FBOnWjyD1f4hBpQLS8t9RFSUnCfJfdF6AkY4jXMx4WR/G53SOCEHQUEw
 yx+Ry/QrZAjnbJfcCb6dgflerLgc1/+v2b8YLGRcyC8cxkQK7m6Rkbl31m/mZIAc
 OOfD2WEYQTAqEOAFEKKvlStdD1bOwditXMK0DeEVRmlCkpu5iwWf2rMkjUjGdceH
 oIHCRdbpFOvgqT+Vng6xou76KcLfQUFQHyqZ+hwgk2zhnVBjFMFMI/t98AQVBoFD
 CiMjKiNrxoVTptUtz/8ppt6FQjcyNgwDHysGwpEXwMi1kB6On/+XhLECLCwNks8f
 3hyxEMEBkS1WvenUnipx4gXDhWIjTt7kNMizSNyJQPCpj0lT0jGnTMzqFYy68z2d
 6yiQcC3N6rFQkTsAKzCaUAXypCEQ950QYkMdDZOVmo6Gb8vUe/Nyf3YFo6v+nNdO
 GpGZuL1jScZ6tBVZFKhP5uQJXsDGoXqh/u/ygVSJ4g8vmOPDueymbKumOD5sjk0T
 NitG7CLs5/GJjLLy/16W
 =flEr
 -----END PGP SIGNATURE-----
 

[lldb][Formatters] Add --pointer-match-depth option to `type summary add` command. (#138209)

Currently, the type `T`'s summary formatter will be matched for `T`,
`T*`, `T**` and so on. This is unexpected in many data formatters. Such
unhandled cases could cause the data formatter to crash. An example
would be the lldb's built-in data formatter for `std::optional`:
```
$ cat main.cpp
#include <optional>

int main() {
  std::optional<int> o_null;
  auto po_null = &o_null;
  auto ppo_null = &po_null;
  auto pppo_null = &ppo_null;
  return 0;
}
$ clang++ -g main.cpp && lldb -o "b 8" -o "r" -o "v pppo_null"
[lldb crash]
```

This change adds an options `--pointer-match-depth` to `type summary
add` command to allow users to specify how many layer of pointers can be
dereferenced at most when matching a summary formatter of type `T`, as
Jim suggested
[here](https://github.com/llvm/llvm-project/pull/124048/#issuecomment-2611164133).
By default, this option has value 1 which means summary formatter for
`T` could also be used for `T*` but not `T**` nor beyond. This option is
no-op when `--skip-pointers` is set as well.

I didn't add such option for `type synthetic add`, `type format add`,
`type filter add`, because it useful for those command. Instead, they
all have the pointer match depth of 1. When printing a type `T*`, lldb
never print the children of `T` even if there is a synthetic formatter
registered for `T`.