23 lines
1.0 KiB
C++
23 lines
1.0 KiB
C++
class LoadedByParamClass {};
|
|
struct ParamClass {
|
|
LoadedByParamClass some_func();
|
|
};
|
|
struct SomeClass {
|
|
// LLDB stops in the constructor and then requests
|
|
// possible expression completions. This will iterate over the
|
|
// declarations in the translation unit.
|
|
// The unnamed ParamClass parameter causes that LLDB will add
|
|
// an incomplete ParamClass decl to the translation unit which
|
|
// the code completion will find. Upon inspecting the ParamClass
|
|
// decl to see if it can be used to provide any useful completions,
|
|
// Clang will complete it and load all its members.
|
|
// This causes that its member function some_func is loaded which in turn
|
|
// loads the LoadedByParamClass decl. When LoadedByParamClass
|
|
// is created it will be added to the translation unit which
|
|
// will invalidate all iterators that currently iterate over
|
|
// the translation unit. The iterator we use for code completion
|
|
// is now invalidated and LLDB crashes.
|
|
SomeClass(ParamClass) {}
|
|
};
|
|
int main() { ParamClass e; SomeClass y(e); }
|