diff --git a/lldb/source/Plugins/SymbolFile/NativePDB/UdtRecordCompleter.cpp b/lldb/source/Plugins/SymbolFile/NativePDB/UdtRecordCompleter.cpp index 46cf9b8524ede..bfaba7f91b711 100644 --- a/lldb/source/Plugins/SymbolFile/NativePDB/UdtRecordCompleter.cpp +++ b/lldb/source/Plugins/SymbolFile/NativePDB/UdtRecordCompleter.cpp @@ -168,7 +168,13 @@ Error UdtRecordCompleter::visitKnownMember( // Static constant members may be a const[expr] declaration. // Query the symbol's value as the variable initializer if valid. if (member_ct.IsConst() && member_ct.IsCompleteType()) { - std::string qual_name = decl->getQualifiedNameAsString(); + std::string qual_name; + if (m_record.record.kind == Member::Struct) + qual_name = (m_cvr.cr.Name + "::" + static_data_member.Name).str(); + else if (m_record.record.kind == Member::Union) + qual_name = (m_cvr.ur.Name + "::" + static_data_member.Name).str(); + else + qual_name = decl->getQualifiedNameAsString(); auto results = m_index.globals().findRecordsByName(qual_name, m_index.symrecords()); diff --git a/lldb/test/Shell/SymbolFile/NativePDB/ast-types.cpp b/lldb/test/Shell/SymbolFile/NativePDB/ast-types.cpp index ac0d87e95dbf9..4b267c398e766 100644 --- a/lldb/test/Shell/SymbolFile/NativePDB/ast-types.cpp +++ b/lldb/test/Shell/SymbolFile/NativePDB/ast-types.cpp @@ -56,6 +56,7 @@ namespace { int AnonymousMember; // And a nested class within an anonymous namespace struct D { + static constexpr int StaticMember = 1; int AnonymousDMember; }; }; @@ -177,6 +178,8 @@ int SI::*mp9 = nullptr; // CHECK: | `-CXXRecordDecl {{.*}} struct Anonymous> definition // CHECK: | |-FieldDecl {{.*}} AnonymousMember 'int' // CHECK: | `-CXXRecordDecl {{.*}} struct D definition +// CHECK: | |-VarDecl {{.*}} StaticMember 'const int' static cinit +// CHECK: | | `-IntegerLiteral {{.*}} 'int' 1 // CHECK: | `-FieldDecl {{.*}} AnonymousDMember 'int' int main(int argc, char **argv) { @@ -184,5 +187,5 @@ int main(int argc, char **argv) { AnonABCVoid.AnonymousMember = 2; AnonABCVoidD.AnonymousDMember = 3; - return 0; + return AnonABCVoidD.StaticMember; }