Michael137 wrote: > I didn't see much explanation as to why this is needed in the bug report.
The motivating example is something like: ``` struct Info { enum Mask : uintptr_t { Enum }; } ``` `expr Info::Mask::Enum`. > Is there a reason we need to complete nested types within a type? Seems like > we can put that off until later. Right now if you parse a member function, > any types it needs will be parsed lazily and only if needed, which is ok. If > we start completing all types within types without ever needing to actually > use then, it will make debugging slower and cause our memory usage to grow. LLDB will first resolve the `Info` structure (and all its member fields, but not nested types). When clang looks for `Mask`, it wants to find it in a direct lookup into the `Info` DeclContext. But that lookup will fail because we never created the decls for the nested type. There is no fallback to the external source in such a case unfortunately so LLDB never has the chance to correct this. There was no obvious point to which we could defer completing the nested type when completing the outer, but I might've missed something obvious. A potential option would be to limit the completion performed in this patch to enums, though a general solution would be nice. https://github.com/llvm/llvm-project/pull/66879 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits