labath added a comment. In D114450#3149281 <https://reviews.llvm.org/D114450#3149281>, @wallace wrote:
>> That said, I'm more worried about the strange interactions between libc++ >> and libstdc++ formatters I reported. > > yes, I'm trying to install libc++ on my machine now Cool, thanks. ================ Comment at: lldb/examples/synthetic/gnu_libstdcpp.py:24 self.value = self.payload.GetChildMemberWithName('_M_payload') - self.count = self.payload.GetChildMemberWithName('_M_engaged').GetValueAsUnsigned(0) + self.has_value = self.payload.GetChildMemberWithName('_M_engaged').GetValueAsUnsigned(0) == 1 except: ---------------- wallace wrote: > labath wrote: > > I'd use `!= 0`, as matches what the actual implementation would do in this > > case. > If that's true, then I'd need to update the libcxx formatter. My > understanding is that setting something to true is always compiled as `set to > 1`, or am I wrong? You are correct. However, _checking_ whether something is true is normally implemented as `!= 0`. This doesn't make a difference for the normal case, but in the "corrupted" case it might be a bit confusing that the program will report the optional object as "engaged", but we will say it's empty. It's not a big deal though. I also wouldn't say you need to change the libc++ formatter too (though I won't stop you from doing it). If you really care about keeping the two in sync, I'd recommend making a unified implementation for the two (that might also probably fix the ordering problem). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D114450/new/ https://reviews.llvm.org/D114450 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits