> On Sep 29, 2016, at 10:58 AM, Enrico Granata via lldb-commits > <lldb-commits@lists.llvm.org> wrote: > > >> On Sep 29, 2016, at 10:50 AM, Zachary Turner <ztur...@google.com >> <mailto:ztur...@google.com>> wrote: >> >> >> >> On Thu, Sep 29, 2016 at 10:43 AM Enrico Granata <egran...@apple.com >> <mailto:egran...@apple.com>> wrote: >>> On Sep 28, 2016, at 5:58 PM, Zachary Turner <ztur...@google.com >>> <mailto:ztur...@google.com>> wrote: >>> >>> >>> >>> On Wed, Sep 28, 2016 at 4:02 PM Enrico Granata via lldb-commits >>> <lldb-commits@lists.llvm.org <mailto:lldb-commits@lists.llvm.org>> wrote: >>> >>> - >>> + >>> + static ConstString g___i_("__i_"); >>> + >>> // this must be a ValueObject* because it is a child of the ValueObject >>> we are >>> // producing children for >>> // it if were a ValueObjectSP, we would end up with a loop (iterator -> >>> @@ -281,6 +287,57 @@ bool lldb_private::formatters::LibCxxMap >>> SyntheticChildrenTraversal::None), >>> nullptr) >>> .get(); >>> + >>> + if (!m_pair_ptr) { >>> + m_pair_ptr = valobj_sp->GetValueForExpressionPath(".__i_.__ptr_", >>> nullptr, nullptr, nullptr, >>> + >>> ValueObject::GetValueForExpressionPathOptions() >>> + >>> .DontCheckDotVsArrowSyntax() >>> + >>> .SetSyntheticChildrenTraversal( >>> + >>> ValueObject::GetValueForExpressionPathOptions:: >>> + >>> SyntheticChildrenTraversal::None), >>> + nullptr) >>> + .get(); >>> + if (m_pair_ptr) { >>> + auto __i_(valobj_sp->GetChildMemberWithName(g___i_, true)); >>> Is there any reason we need to use such weird variable names? This looks >>> like undefined behavior to me. Variables with more than one adjacent >>> underscore are reserved. >> >> I am naming the variable the same as the corresponding variable in the type >> I am formatting. Future me is usually thankful when I do that.. it helps >> keep track of what ValueObject matches what child element; in this case, our >> iterators have an __i_ child >> >> Ahh, makes sense. Unfortunately at least in this case it leads to illegal >> variable names. Is there anything else it could be named that would be >> similar enough to help remembering but a valid c++ identifier? > > Sure, we just add a "vo" prefix, like vo__i_
And apparently that would also not suffice, double underscores are forbidden *anywhere* in an identifier.. Sigh Let me think about this a little bit.. I'll come up with some rule > > I thought the rule about __ being magic only applied to global identifiers, > and I have never seen any compiler complain about those identifiers in > practice. But reserved is reserved, so thanks for pointing that out. > > Thanks, > - Enrico > 📩 egranata@.com ☎️ 27683 > > _______________________________________________ > lldb-commits mailing list > lldb-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits Thanks, - Enrico 📩 egranata@.com ☎️ 27683
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits