[Lldb-commits] [PATCH] D138558: [lldb][DataFormatter] Add std::ranges::ref_view formatter
Michael Buch via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Fri Dec 2 03:34:49 PST 2022
Michael137 added a comment.
In D138558#3963732 <https://reviews.llvm.org/D138558#3963732>, @labath wrote:
> You may want to check that this kind of automatic dereferencing does not send lldb into a tailspin if the printed data structure is recursive. I know we had problems like that with smart pointer pretty printers.
>
> I'd try some code like:
>
> #include <ranges>
> #include <vector>
>
> struct A {
> std::ranges::ref_view<std::vector<A>> a;
> };
>
> int main() {
> std::vector<A> v;
> v.push_back(A{v});
> v[0].a = v;
> // print v ?
> }
@labath good point
E.g., the following would cause such unbounded recursion (didn't find a good way of triggering it using the actual ref_view since it's not default constructible, but it's probably doable):
#include <vector>
namespace std {
inline namespace __1 {
namespace ranges {
template<typename T>
struct ref_view {
T* __range_;
};
}
}
}
struct Foo {
std::ranges::ref_view<std::vector<Foo>> a;
};
int main() {
Foo f;
std::vector<Foo> v;
v.push_back(f);
std::ranges::ref_view<std::vector<Foo>> r{.__range_ = &v};
f.a = r;
return 0;
}
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D138558/new/
https://reviews.llvm.org/D138558
More information about the lldb-commits
mailing list