]> granicus.if.org Git - clang/commitdiff
Sema::ActOnStartClassInterface(): Use PushOnScopeChains().
authorSteve Naroff <snaroff@apple.com>
Thu, 23 Apr 2009 15:15:40 +0000 (15:15 +0000)
committerSteve Naroff <snaroff@apple.com>
Thu, 23 Apr 2009 15:15:40 +0000 (15:15 +0000)
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

lib/Frontend/PCHReader.cpp
lib/Sema/SemaDeclObjC.cpp
test/PCH/objc_methods.m
test/SemaObjC/check-dup-objc-decls-1.m

index 0e2d06eaf38b94a7cabffdaf43c06d5fc22f825b..0502a876a3a98d851eac56ee1425ab3b00987481 100644 (file)
@@ -2742,7 +2742,7 @@ PCHReader::ReadDeclarationName(const RecordData &Record, unsigned &Idx) {
   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:
index c65b1402be32b4d3a9723b2c9db514c4857f2f06..7b23b04859e22d325237f65aa0dd64d3a002f63c 100644 (file)
@@ -99,8 +99,7 @@ ActOnStartClassInterface(SourceLocation AtInterfaceLoc,
       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));
   }
index 77901c38d406c6e2df9949ab71eeb8b9c2471708..818c6145ede1dc25712838e8e8d55f558eb9e52a 100644 (file)
@@ -1,11 +1,14 @@
 // 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
 }
index dc9c8f442616754768d8d382fc8130ac36becb83..1dfaf0905083c1a0e4a590cc4b67fe8541e523fa 100644 (file)
@@ -18,9 +18,9 @@ typedef int OBJECT; // expected-note {{previous definition is here}}
 @class OBJECT ;        // expected-error {{redefinition of 'OBJECT' as different kind of symbol}}
 
 
-typedef int Gorf;  // expected-note {{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}}
 {