> 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

Reply via email to