]> granicus.if.org Git - clang/commit
When performing typo correction, look through the set of known
authorDouglas Gregor <dgregor@apple.com>
Thu, 14 Oct 2010 22:11:03 +0000 (22:11 +0000)
committerDouglas Gregor <dgregor@apple.com>
Thu, 14 Oct 2010 22:11:03 +0000 (22:11 +0000)
commit95f4292cc526c629fead321c7fcfd4fe0f3bc66e
tree84000e1693a326cba88064d11dc887372c693b2e
parent708f3b8e350a5c0605889a4f32b26686864495ca
When performing typo correction, look through the set of known
identifiers to determine good typo-correction candidates. Once we've
identified those candidates, we perform name lookup on each of them
and the consider the results.

This optimization makes typo correction > 2x faster on a benchmark
example using a single typo (NSstring) in a tiny file that includes
Cocoa.h from a precompiled header, since we are deserializing far less
information now during typo correction.

There is a semantic change here, which is interesting. The presence of
a similarly-named entity that is not visible can now affect typo
correction. This is both good (you won't get weird corrections if the
thing you wanted isn't in scope) and bad (you won't get good
corrections if there is a similarly-named-but-completely-unrelated
thing). Time will tell whether it was a good choice or not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116528 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Basic/IdentifierTable.h
include/clang/Basic/OnDiskHashTable.h
include/clang/Serialization/ASTReader.h
lib/Basic/IdentifierTable.cpp
lib/Sema/SemaExprObjC.cpp
lib/Sema/SemaLookup.cpp
lib/Serialization/ASTReader.cpp
test/PCH/Inputs/typo.h [new file with mode: 0644]
test/PCH/typo.m [new file with mode: 0644]
test/SemaObjC/synth-provisional-ivars.m