================ @@ -3015,11 +3017,12 @@ llvm::Expected<lldb::ValueObjectSP> ValueObject::CastDerivedToBaseType( lldb::TargetSP target = GetTargetSP(); // The `value` can be a pointer, but GetChildAtIndex works for pointers too. - lldb::ValueObjectSP inner_value; + lldb::ValueObjectSP inner_value = GetSP(); for (const uint32_t i : base_type_indices) // Force static value, otherwise we can end up with the "real" type. - inner_value = GetChildAtIndex(i, /*can_create_synthetic*/ false); ---------------- cmtice wrote:
The difference is that now in each loop iteration the rhs is 'inner_loop->GetChildAtIndex...', which will be different each iteration through the loop; before it was just 'GetChildAtIndex', which did not change on each iteration. re false->true: The original lldb-eval code on which that was based used 'false', but it was also making the call through the SB API interface (SBValues, SBTypes, etc). I found that the cast test cases passed with lldb-eval when this value was false, but failed in my translated, migrated version. Setting this to true allows those failing test cases to pass. I don't have any easy way to add those test cases to this PR because they all use 'frame variable' (using my DIL implementation) for doing the casts...But I do have them, and I am running (and passing) them. https://github.com/llvm/llvm-project/pull/87197 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits