[Lldb-commits] [lldb] [LLDB] Add field member operators to DIL (PR #138093)
Pavel Labath via lldb-commits
lldb-commits at lists.llvm.org
Thu May 22 01:33:22 PDT 2025
================
@@ -88,6 +89,42 @@ class IdentifierNode : public ASTNode {
std::string m_name;
};
+class MemberOfNode : public ASTNode {
+public:
+ MemberOfNode(uint32_t location, ASTNodeUP base, bool is_arrow,
+ std::string name, lldb::DynamicValueType use_dynamic,
+ bool fragile_ivar, bool use_synth_child,
+ bool check_ptr_vs_member)
+ : ASTNode(location, NodeKind::eMemberOfNode), m_base(std::move(base)),
+ m_is_arrow(is_arrow), m_field_name(std::move(name)),
+ m_use_dynamic(use_dynamic), m_fragile_ivar(fragile_ivar),
+ m_use_synth_child(use_synth_child),
+ m_check_ptr_vs_member(check_ptr_vs_member) {}
+
+ llvm::Expected<lldb::ValueObjectSP> Accept(Visitor *v) const override;
+
+ ASTNode *GetBase() const { return m_base.get(); }
+ bool GetIsArrow() const { return m_is_arrow; }
+ llvm::StringRef GetFieldName() const { return llvm::StringRef(m_field_name); }
+ bool GetCheckPtrVsMember() const { return m_check_ptr_vs_member; }
+ bool GetFragileIvar() const { return m_fragile_ivar; }
+ bool GetSynthChild() const { return m_use_synth_child; }
+ lldb::DynamicValueType GetUseDynamic() const { return m_use_dynamic; }
----------------
labath wrote:
I think we discussed this (briefly) at one of the previous PRs, and I think the conclusion was that things like these should be a property of the interpreter rather than of a specific node.
I can sort of imagine a world some parts of an expression are evaluated using dynamic types and some aren't, but I don't think it's your intention to create that world. (And if it is, then these properties (at least some of them), should be other nodes as well, as e.g. `[]` also needs to know whether it should be looking at synthetic children).
https://github.com/llvm/llvm-project/pull/138093
More information about the lldb-commits
mailing list