aprantl added inline comments.

================
Comment at: lldb/include/lldb/Symbol/CompilerType.h:58
+    template <class TypeSystemType> TypeSystemType *dyn_cast_or_null() {
+      return llvm::dyn_cast_or_null<TypeSystemType>(m_typesystem_sp.get());
+    }
----------------
labath wrote:
> Maybe do something like this instead:
> ```
> template <class TypeSystemType> std::shared_ptr<TypeSystemType> 
> dyn_cast_or_null() {
>   if (llvm::isa<TypeSystemType>(m_typesystem_sp.get()))
>     return std::shared_ptr<TypeSystemType>(m_typesystem_sp, 
> llvm::cast<TypeSystemType>(m_typesystem_sp.get()));
>   return nullptr;
> }
> ```
> 
> That said, `llvm::dyn_cast` supports custom casts for smart pointers (it 
> already has them for std::unique_ptr), so it should be possible to completely 
> avoid this wrapper class by implementing this logic inside llvm.
> Although, then we'd have to answer awkward questions like "why are you using 
> a shared_ptr in the first place".
I think that's a good idea. Based on the assumption that we are going to rework 
the ownership model in LLDB to move away from shared pointers towards contexts 
at some point in the future, I'm not going to extend casting support in Support 
now.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D136650/new/

https://reviews.llvm.org/D136650

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to