patch: fix fixit taking address of member and related crash

Kaelyn Takata rikka at
Mon Jun 23 13:31:39 PDT 2014

Nick, thanks for cc'ing me; I'd ignored the original email because I hadn't
realized it was a typo-correction patch.

Overall the patch looks good! My only little nit is that I'd prefer to keep
the two ObjC-specific flags in CorrectionCandidateCallback together, though
I understand why you placed IsAddressOfOperand where you did.

On Mon, Jun 23, 2014 at 10:21 AM, Nick Lewycky <nlewycky at> wrote:

> Ping! +cc Kaelyn for typo correction review?
> On 11 June 2014 07:46, Nick Lewycky <nlewycky at> wrote:
>> The attached patch fixes two bugs in one. We were correcting
>> address-of-member to use the non-qualified form when it was in scope (ie.,
>> &Foo::typo became &corrected when we were inside Foo::method). However,
>> this changes the expression from pointer to member to pointer to T (see
>> [expr.unary.op]/3). This is fixed by propagating isAddressOfMember through
>> the correction callback, though we now get an extra leading :: for no good
>> reason. That is a separate bug, at least.
>> The crash is because we failed to set a naming class when doing to name
>> lookup of the member and finding it in a different class. Given
>> &ValidButWrongOne::member we would start typo correction on "member" and
>> find &ValidAndRightOne::member, we've got to mark down that the naming
>> class is now ValidAndRightOne.
>> Patch attached, please review!
>> Nick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the cfe-commits mailing list