diff options
author | Kaelyn Uhrain <rikka@google.com> | 2012-01-11 21:17:51 +0000 |
---|---|---|
committer | Kaelyn Uhrain <rikka@google.com> | 2012-01-11 21:17:51 +0000 |
commit | dc98cd0cdd2eee8290b624ef69c6d91ce626d85e (patch) | |
tree | 2679907562fcb161f3c22447425c1214b9719739 /lib/Sema/SemaLookup.cpp | |
parent | 3efd348d3586b22bb0153f17181128a1b3c41140 (diff) |
Fix the caching in CorrectTypo so that other non-keyword identifiers
are still added if the cached correction fails validation.
Also fix a copy-and-paste error in a comment from my previous commit.
Finally, add an example of the benefit the typo correction callback adds
to TryNamespaceTypoCorrection--which happens to also tickle the above
caching problem, as the only way a non-namespace Decl would be added to
the possible corrections is if it was cached as the correction for a
previous instance of the same typo where the typo was corrected to a
non-namespace via a different code path.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147968 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaLookup.cpp')
-rw-r--r-- | lib/Sema/SemaLookup.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/Sema/SemaLookup.cpp b/lib/Sema/SemaLookup.cpp index 5bf0ca535c..c69022d935 100644 --- a/lib/Sema/SemaLookup.cpp +++ b/lib/Sema/SemaLookup.cpp @@ -3650,7 +3650,8 @@ TypoCorrection Sema::CorrectTypo(const DeclarationNameInfo &TypoName, IsUnqualifiedLookup = true; UnqualifiedTyposCorrectedMap::iterator Cached = UnqualifiedTyposCorrected.find(Typo); - if (Cached == UnqualifiedTyposCorrected.end()) { + if (Cached == UnqualifiedTyposCorrected.end() || + (Cached->second && CCC && !CCC->ValidateCandidate(Cached->second))) { // Provide a stop gap for files that are just seriously broken. Trying // to correct all typos can turn into a HUGE performance penalty, causing // some files to take minutes to get rejected by the parser. |