diff options
| author | Kaelyn Takata <rikka@google.com> | 2014-11-20 22:06:26 +0000 |
|---|---|---|
| committer | Kaelyn Takata <rikka@google.com> | 2014-11-20 22:06:26 +0000 |
| commit | 0a31302fa11726ca749548a198eb3e98fbc59549 (patch) | |
| tree | 33de6a9c2218828bf79d810967b03091df9bd7c6 | |
| parent | c0b4d5a1f622f33ba99f2da492898130bf649d8a (diff) | |
| download | bcm5719-llvm-0a31302fa11726ca749548a198eb3e98fbc59549.tar.gz bcm5719-llvm-0a31302fa11726ca749548a198eb3e98fbc59549.zip | |
Correctly set the SourceRange a TypoCorrection will replace.
Also clean up TypoCorrection::setCorrectionRange while we're at it.
llvm-svn: 222460
| -rw-r--r-- | clang/include/clang/Sema/TypoCorrection.h | 7 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaLookup.cpp | 8 |
2 files changed, 8 insertions, 7 deletions
diff --git a/clang/include/clang/Sema/TypoCorrection.h b/clang/include/clang/Sema/TypoCorrection.h index 12f7f06d5c9..922d0ffa114 100644 --- a/clang/include/clang/Sema/TypoCorrection.h +++ b/clang/include/clang/Sema/TypoCorrection.h @@ -199,10 +199,9 @@ public: void setCorrectionRange(CXXScopeSpec *SS, const DeclarationNameInfo &TypoName) { - CorrectionRange.setBegin(ForceSpecifierReplacement && SS && !SS->isEmpty() - ? SS->getBeginLoc() - : TypoName.getLoc()); - CorrectionRange.setEnd(TypoName.getLoc()); + CorrectionRange = TypoName.getSourceRange(); + if (ForceSpecifierReplacement && SS && !SS->isEmpty()) + CorrectionRange.setBegin(SS->getBeginLoc()); } SourceRange getCorrectionRange() const { diff --git a/clang/lib/Sema/SemaLookup.cpp b/clang/lib/Sema/SemaLookup.cpp index 44e3ce4f6b9..8b0ea324e5f 100644 --- a/clang/lib/Sema/SemaLookup.cpp +++ b/clang/lib/Sema/SemaLookup.cpp @@ -3414,6 +3414,7 @@ void TypoCorrectionConsumer::addName(StringRef Name, NamedDecl *ND, TypoCorrection TC(&SemaRef.Context.Idents.get(Name), ND, NNS, ED); if (isKeyword) TC.makeKeyword(); + TC.setCorrectionRange(nullptr, Result.getLookupNameInfo()); addCorrection(TC); } @@ -3521,8 +3522,6 @@ bool TypoCorrectionConsumer::resolveCorrection(TypoCorrection &Candidate) { IdentifierInfo *Name = Candidate.getCorrectionAsIdentifierInfo(); DeclContext *TempMemberContext = MemberContext; CXXScopeSpec *TempSS = SS.get(); - if (Candidate.getCorrectionRange().isInvalid()) - Candidate.setCorrectionRange(TempSS, Result.getLookupNameInfo()); retry_lookup: LookupPotentialTypoResult(SemaRef, Result, Name, S, TempSS, TempMemberContext, EnteringContext, @@ -3563,6 +3562,7 @@ retry_lookup: QualifiedResults.push_back(Candidate); break; } + Candidate.setCorrectionRange(TempSS, Result.getLookupNameInfo()); return true; } return false; @@ -3628,8 +3628,10 @@ void TypoCorrectionConsumer::performQualifiedLookups() { TRD.getPair()) == Sema::AR_accessible) TC.addCorrectionDecl(*TRD); } - if (TC.isResolved()) + if (TC.isResolved()) { + TC.setCorrectionRange(SS.get(), Result.getLookupNameInfo()); addCorrection(TC); + } break; } case LookupResult::NotFound: |

