[Lldb-commits] [lldb] [lldb] Add enum lookup to DIL (PR #192065)
Michael Buch via lldb-commits
lldb-commits at lists.llvm.org
Fri Apr 17 02:32:24 PDT 2026
================
@@ -380,6 +380,31 @@ lldb::ValueObjectSP LookupIdentifier(llvm::StringRef name_ref,
return nullptr;
}
+lldb::ValueObjectSP LookupEnumValue(llvm::StringRef name_ref,
+ std::shared_ptr<StackFrame> stack_frame) {
+ if (name_ref.contains("::")) {
+ llvm::StringRef enum_typename, enumerator_name;
+ // FIXME: Change this to a structured binding for lambda capturing
+ // once we have C++20.
+ std::tie(enum_typename, enumerator_name) = name_ref.rsplit("::");
+ auto enum_type = ResolveTypeByName(enum_typename.str(), stack_frame);
+ lldb::ValueObjectSP result;
+ enum_type.ForEachEnumerator([&](const CompilerType &integer_type,
+ ConstString name,
+ const llvm::APSInt &value) -> bool {
+ if (name == enumerator_name) {
+ Scalar scalar(value);
+ result = ValueObject::CreateValueObjectFromScalar(stack_frame, scalar,
+ enum_type, "result");
+ return false; // Stop iterating
----------------
Michael137 wrote:
Side-note, we should make `ForEachEnumerator` use the `IterationAction` enum. Lets do it as a follow-up
https://github.com/llvm/llvm-project/pull/192065
More information about the lldb-commits
mailing list