[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