This enables class recognition to work with PCH. I believe this means we can remove Sema::ObjCInterfaceDecls and it's usage within Sema::LookupName(). Will investigate.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69891
91177308-0d34-0410-b5e6-
96231b3b80d8
case DeclarationName::ObjCZeroArgSelector:
case DeclarationName::ObjCOneArgSelector:
case DeclarationName::ObjCMultiArgSelector:
- assert(false && "Unable to de-serialize Objective-C selectors");
+ return DeclarationName(GetSelector(Record, Idx));
break;
case DeclarationName::CXXConstructorName:
ProcessDeclAttributeList(IDecl, AttrList);
ObjCInterfaceDecls[ClassName] = IDecl;
- // FIXME: PushOnScopeChains
- CurContext->addDecl(Context, IDecl);
+ PushOnScopeChains(IDecl, TUScope);
// Remember that this needs to be removed when the scope is popped.
TUScope->AddDecl(DeclPtrTy::make(IDecl));
}
// Test this without pch.
-// FIXME: clang-cc -include %S/objc_methods.h -fsyntax-only -verify %s &&
+// RUN: clang-cc -include %S/objc_methods.h -fsyntax-only -verify %s &&
// Test with pch.
-// FIXME: clang-cc -x=objective-c -emit-pch -o %t %S/objc_methods.h &&
-// FIXME: clang-cc -include-pch %t -fsyntax-only -verify %s
+// RUN: clang-cc -x=objective-c -emit-pch -o %t %S/objc_methods.h &&
+// RUN: clang-cc -include-pch %t -fsyntax-only -verify %s
void func() {
- TestPCH *xx = [TestPCH alloc];
+ TestPCH *xx;
+#if 0
+ xx = [TestPCH alloc];
[xx instMethod];
+#endif
}
@class OBJECT ; // expected-error {{redefinition of 'OBJECT' as different kind of symbol}}
-typedef int Gorf; // expected-note 2 {{previous definition is here}}
+typedef int Gorf; // expected-note {{previous definition is here}}
-@interface Gorf @end // expected-error {{redefinition of 'Gorf' as different kind of symbol}}
+@interface Gorf @end // expected-error {{redefinition of 'Gorf' as different kind of symbol}} expected-note {{previous definition is here}}
void Gorf() // expected-error {{redefinition of 'Gorf' as different kind of symbol}}
{