Ping? ~Aaron
On Fri, Jan 27, 2012 at 6:18 AM, Aaron Ballman <[email protected]> wrote: > On Tue, Jan 24, 2012 at 6:54 PM, Douglas Gregor <[email protected]> wrote: >> >> On Jan 21, 2012, at 11:42 PM, Aaron Ballman wrote: >> >>> I've attached a patch to fix bug 6800 (and test cases) so that a >>> proper fixit is output when dereferencing using -> instead of . We >>> were missing the fixit when looking up overloaded operator -> and >>> emitting a diagnostic. >> >> This goes in the right direction, but there's a bit more we need. We only >> emit a Fix-It when the compiler can recover as if you had typed when we're >> suggesting. In this case, we'll still end up returning an error expression, >> which suppresses a lot of important type checking. In this particular case, >> we'd need to communicate up to the caller that the user meant to type a "." >> but typed an "->" instead. > > I've been trying various ways to implement this, but what I'm finding > is that by attempting to recover, the error gets re-generated > elsewhere (SemaMemberExpr.cpp's LookupMemberExpr to be exact). So we > end up emitting the diagnostic twice in that scenario. > >> Moreover, you should customize the error message in this case. Perhaps >> something like "type %0 is not a pointer and does not have an overloaded >> 'operator->'; did you mean to use '.'?". > > Good call! > > I've attached a second attempt, but because I am leaving out the > diagnostic for operator-> (so as not to get duplicate diagnostics), I > don't think I've quite got it right. If you have suggestions, I'd > love to hear them. > > Thanks! > > ~Aaron
member_ref_fixit 2.patch
Description: Binary data
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
