ZequanWu wrote: > > > > > Is any of it testable? > > > > > > > > > > > > Good question. Though this is mostly meant to be "NFC" (with very large > > > > quotes), I can imagine us doing something like forcing the parsing of a > > > > specific type (`type lookup <something>` ?), and then checking that the > > > > module ast (`image dump ast`) does _not_ contain specific types -- as > > > > that's basically what we're trying to achieve. > > > > > > > > > Yea that could work. But if it's going to be very painful or fragile to > > > test then don't let that hold back the PR > > > > > > In terms of testing, since this only delays definition DIE searching not > > type completion, we need to construct a test so that lldb finds the > > declaration DIE first without trigger a type completion on it and somehow > > test the incomplete type. The first part is tricky. I'm not sure how to > > achieve it. > > You should be able to make a test case with two files. One file contains the > class definition and the other uses only a forward declaration. You could > test by running the binary stopping only in the one with the forward > declaration. So file 1 would be something like `foo.cpp` containing > > ``` > struct Foo { > int value; > Foo(int v): value(v) {} > }; > > Foo *CreateFoo() { > return new Foo(1); > } > ``` > > Then having `main.cpp` contain: > > ``` > struct Foo; // Forward declare Foo > // Prototypes that don't need Foo definition > Foo *CreateFoo(); > > int main() { > Foo *foo = CreateFoo(); > return 0; // Breakpoint 1 here > } > ``` > > Then run to "Breakpoint 1 here" and then run `frame variable foo`. Foo won't > need to be completed for this. But if you then run `frame variable *foo`, it > should cause the type to be completed and show the instance variable > correctly.
The tests your described testing this change doesn't break things by delaying definition DIE searching, which I think is already covered by existing tests (created for other purposes, but also covers this case). I was thinking about testing the definition DIE searching is actually delayed. Maybe there isn't a way to do it. https://github.com/llvm/llvm-project/pull/90663 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits