diff options
author | Kaelyn Uhrain <rikka@google.com> | 2011-09-07 20:25:59 +0000 |
---|---|---|
committer | Kaelyn Uhrain <rikka@google.com> | 2011-09-07 20:25:59 +0000 |
commit | 5a43b461fc5c8278ccbcfd0f9328ffadbf74ab75 (patch) | |
tree | a9ea3e0ddf225697e2d908752b57950b00eaf712 /clang | |
parent | 1c7406767e5ea4e634c26144689d80218643e8b0 (diff) | |
download | bcm5719-llvm-5a43b461fc5c8278ccbcfd0f9328ffadbf74ab75.tar.gz bcm5719-llvm-5a43b461fc5c8278ccbcfd0f9328ffadbf74ab75.zip |
Fix Sema::CorrectTypo to ignore found but unresolved symbols
llvm-svn: 139252
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Sema/SemaLookup.cpp | 4 | ||||
-rw-r--r-- | clang/test/SemaCXX/using-decl-templates.cpp | 17 |
2 files changed, 19 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaLookup.cpp b/clang/lib/Sema/SemaLookup.cpp index c5dc1446959..f11737b9f7a 100644 --- a/clang/lib/Sema/SemaLookup.cpp +++ b/clang/lib/Sema/SemaLookup.cpp @@ -3691,6 +3691,7 @@ TypoCorrection Sema::CorrectTypo(const DeclarationNameInfo &TypoName, switch (TmpRes.getResultKind()) { case LookupResult::NotFound: case LookupResult::NotFoundInCurrentInstantiation: + case LookupResult::FoundUnresolvedValue: QualifiedResults.insert(Name); // We didn't find this name in our scope, or didn't like what we found; // ignore it. @@ -3717,7 +3718,6 @@ TypoCorrection Sema::CorrectTypo(const DeclarationNameInfo &TypoName, } case LookupResult::Found: - case LookupResult::FoundUnresolvedValue: I->second.setCorrectionDecl(TmpRes.getAsSingle<NamedDecl>()); ++I; break; @@ -3754,7 +3754,6 @@ TypoCorrection Sema::CorrectTypo(const DeclarationNameInfo &TypoName, switch (TmpRes.getResultKind()) { case LookupResult::Found: - case LookupResult::FoundUnresolvedValue: Consumer.addName((*QRI)->getName(), TmpRes.getAsSingle<NamedDecl>(), QualifiedED, NI->NameSpecifier); break; @@ -3771,6 +3770,7 @@ TypoCorrection Sema::CorrectTypo(const DeclarationNameInfo &TypoName, case LookupResult::NotFound: case LookupResult::NotFoundInCurrentInstantiation: case LookupResult::Ambiguous: + case LookupResult::FoundUnresolvedValue: break; } } diff --git a/clang/test/SemaCXX/using-decl-templates.cpp b/clang/test/SemaCXX/using-decl-templates.cpp index 7b4da9d50d0..2f8abca02d6 100644 --- a/clang/test/SemaCXX/using-decl-templates.cpp +++ b/clang/test/SemaCXX/using-decl-templates.cpp @@ -63,3 +63,20 @@ template <class T> struct Bar : public Foo<T>, Baz { }; template int Bar<int>::foo(); } + +// PR10883 +namespace PR10883 { + template <typename T> + class Base { + public: + typedef long Container; + }; + + template <typename T> + class Derived : public Base<T> { + public: + using Base<T>::Container; + + void foo(const Container& current); // expected-error {{unknown type name 'Container'}} + }; +} |