@@ -734,12 +734,10 @@ namespace lldb_private {
734734namespace formatters {
735735namespace swift {
736736
737- namespace {
738737// / The size of Swift Tasks. Fragments are tail allocated.
739738static constexpr size_t AsyncTaskSize = sizeof (::swift::AsyncTask);
740739// / The offset of ChildFragment, which is the first fragment of an AsyncTask.
741740static constexpr offset_t ChildFragmentOffset = AsyncTaskSize;
742- } // namespace
743741
744742class EnumSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
745743public:
@@ -831,8 +829,9 @@ class TaskSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
831829 };
832830
833831 llvm::Expected<uint32_t > CalculateNumChildren () override {
834- // Show only the first four children address/id/enqueuePriority/children.
835- return 4 ;
832+ // Show only the first five children
833+ // address/id/enqueuePriority/parent/children.
834+ return 5 ;
836835 }
837836
838837 lldb::ValueObjectSP GetChildAtIndex (uint32_t idx) override {
@@ -882,21 +881,24 @@ class TaskSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
882881 }
883882 case 3 : {
884883 if (!m_parent_task_sp) {
885- // TypeMangling for "Swift.UnsafeRawPointer"
884+ auto process_sp = m_backend.GetProcessSP ();
885+ if (!process_sp)
886+ return {};
887+
888+ // TypeMangling for "Swift.Optional<Swift.UnsafeRawPointer>"
886889 CompilerType raw_pointer_type =
887- m_ts->GetTypeFromMangledTypename (ConstString (" $sSVD " ));
890+ m_ts->GetTypeFromMangledTypename (ConstString (" $sSVSgD " ));
888891
889892 addr_t parent_addr = 0 ;
890893 if (m_task_info.isChildTask ) {
891- if (auto process_sp = m_backend.GetProcessSP ()) {
892- Status status;
893- // Read ChildFragment::Parent, the first field of the ChildFragment.
894- parent_addr = process_sp->ReadPointerFromMemory (
895- m_task_ptr + ChildFragmentOffset, status);
896- if (status.Fail () || parent_addr == LLDB_INVALID_ADDRESS)
897- parent_addr = 0 ;
898- }
894+ // Read ChildFragment::Parent, the first field of the ChildFragment.
895+ Status status;
896+ parent_addr = process_sp->ReadPointerFromMemory (
897+ m_task_ptr + ChildFragmentOffset, status);
898+ if (status.Fail () || parent_addr == LLDB_INVALID_ADDRESS)
899+ parent_addr = 0 ;
899900 }
901+
900902 addr_t value = parent_addr;
901903 DataExtractor data{reinterpret_cast <const void *>(&value),
902904 sizeof (value), endian::InlHostByteOrder (),
0 commit comments