diff options
author | Dave Lee <davelee.com@gmail.com> | 2023-05-30 10:31:44 -0700 |
---|---|---|
committer | Dave Lee <davelee.com@gmail.com> | 2023-05-30 15:35:03 -0700 |
commit | c7eb1b07470b9babfcd258f014df3661e5f84b30 (patch) | |
tree | 3f9da0994cb8f929f25a2224a3e007ba65c363df /lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp | |
parent | 397f2e9ebee8d8e45547e90dd05228d7f965df67 (diff) | |
download | llvm-c7eb1b07470b9babfcd258f014df3661e5f84b30.zip llvm-c7eb1b07470b9babfcd258f014df3661e5f84b30.tar.gz llvm-c7eb1b07470b9babfcd258f014df3661e5f84b30.tar.bz2 |
[lldb] Consult summary provider before printing children of root references
When printing the root of a value, if it's a reference its children are unconditionally
printed - in contrast to pointers whose children are only printed if a sufficient
pointer depth is given.
However, the children are printed even when there's a summary provider that says not to.
If a summary provider exists, this change consults it to determine if children should be
printed.
For example, given a variable of type `std::string &`, this change has the following
effect:
Before:
```
(lldb) p string_ref
(std::string &) string_ref = "one two three four five six seven eight nine ten": {
__r_ = {
std::__1::__compressed_pair_elem<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep, 0, false> = {
__value_ = {
= {
__l = (__data_ = "one two three four five six seven eight nine ten", __size_ = 48, __cap_ = 64, __is_long_ = 1)
__s = (__data_ = "@\0p\U00000001\0`\0\00\0\0\0\0\0\0\0@", __padding_ = "\x80t<", __size_ = '\0', __is_long_ = '\x01')
__r = {
__words ={...}
}
}
}
}
}
}
```
After:
```
(lldb) p string_ref
(std::string &) string_ref = "one two three four five six seven eight nine ten"
```
rdar://73248786
Differential Revision: https://reviews.llvm.org/D151748
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp')
0 files changed, 0 insertions, 0 deletions