<div dir="ltr">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.<div>

<br></div><div>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. </div>

<div><br></div><div>Patch attached, please review!</div><div><br></div><div>Nick</div><div><br></div></div>