diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-12-15 20:36:27 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-12-15 20:36:27 +0000 |
commit | d63348c3382965a9e1719c8eaa63e2891dd5e234 (patch) | |
tree | 708b9fdc2197b8bbcb8ed3074bddb32415b8b386 | |
parent | 7723fec9b45b7258c0eddf4cbfd0d335348f5edc (diff) |
When name lookup finds a module-private Objective-C class declaration,
check whether any previous declarations of the class were visible.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146680 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/SemaLookup.cpp | 2 | ||||
-rw-r--r-- | test/Modules/decldef.mm | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/lib/Sema/SemaLookup.cpp b/lib/Sema/SemaLookup.cpp index a6ad8f8fcf..a1713ee685 100644 --- a/lib/Sema/SemaLookup.cpp +++ b/lib/Sema/SemaLookup.cpp @@ -1063,6 +1063,8 @@ static NamedDecl *getPreviousDeclaration(NamedDecl *D) { return FD->getPreviousDeclaration(); if (RedeclarableTemplateDecl *RTD = dyn_cast<RedeclarableTemplateDecl>(D)) return RTD->getPreviousDeclaration(); + if (ObjCInterfaceDecl *ID = dyn_cast<ObjCInterfaceDecl>(D)) + return ID->getPreviousDeclaration(); return 0; } diff --git a/test/Modules/decldef.mm b/test/Modules/decldef.mm index bbdcd9cb8f..3d24a0ef53 100644 --- a/test/Modules/decldef.mm +++ b/test/Modules/decldef.mm @@ -7,9 +7,7 @@ B *b1; // expected-error{{unknown type name 'B'}} __import_module__ decldef.Decl; -// FIXME: No link between @interface (which we can't see) and @class -// (which we can). -// A *a2; +A *a2; B *b; void testB() { |