From d63348c3382965a9e1719c8eaa63e2891dd5e234 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Thu, 15 Dec 2011 20:36:27 +0000 Subject: [PATCH] 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 --- lib/Sema/SemaLookup.cpp | 2 ++ 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(D)) return RTD->getPreviousDeclaration(); + if (ObjCInterfaceDecl *ID = dyn_cast(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() { -- 2.40.0