aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-12-15 20:36:27 +0000
committerDouglas Gregor <dgregor@apple.com>2011-12-15 20:36:27 +0000
commitd63348c3382965a9e1719c8eaa63e2891dd5e234 (patch)
tree708b9fdc2197b8bbcb8ed3074bddb32415b8b386
parent7723fec9b45b7258c0eddf4cbfd0d335348f5edc (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.cpp2
-rw-r--r--test/Modules/decldef.mm4
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() {