[PATCH] D37322: [Sema] Correct typos in LHS, RHS before building a binop expression.
Volodymyr Sapsai via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 13 11:38:23 PDT 2017
vsapsai added a comment.
Correcting typo in Sema::ActOnMemberAccessExpr is an interesting idea and it almost works. After such change there is a single failure in clang/test/SemaCXX/typo-correction-cxx11.cpp
void run(A *annotations) {
map new_annotations;
auto &annotation = *annotations;
auto new_it = new_annotations.find(5);
auto &new_anotation = new_it.second; // expected-note {{'new_anotation' declared here}}
new_annotation->Swap(&annotation); // expected-error {{use of undeclared identifier 'new_annotation'; did you mean 'new_anotation'?}}
}
because we don't mention `did you mean 'new_anotation'?` anymore. I haven't investigated in depth what's causing it but my guess is that general typo correction doesn't suggest replacement due to ambiguity between new_anotation and new_annotations, and prevents member-specific typo correction from handling it.
I think having CXXDependentScopeMemberExpr for an ObjC property should be fine as we are dealing with invalid code and all typos are already type-dependent and instantiation-dependent though it doesn't apply to ObjC.
I agree that my fix isn't specific to the code triggering the assertion. But broader fix can be useful as it covers more cases. After checking SemaExpr.cpp and its multiple CorrectDelayedTyposInExpr, CorrectTypo, CorrectTypoDelayed I have an impression that typo correction absent in Sema::BuildBinOp is an omission worth fixing.
https://reviews.llvm.org/D37322
More information about the cfe-commits
mailing list