[cfe-commits] r138803 - in /cfe/trunk: lib/Parse/ParseDecl.cpp test/SemaObjC/nested-typedef-decl.m

Fariborz Jahanian fjahanian at apple.com
Tue Aug 30 10:10:53 PDT 2011


Author: fjahanian
Date: Tue Aug 30 12:10:52 2011
New Revision: 138803

URL: http://llvm.org/viewvc/llvm-project?rev=138803&view=rev
Log:
objc - fixes a regression in declaring c decls nested in
objective-c containers due to recent changes to objc decl 
contexts. // rdar://10041908

Added:
    cfe/trunk/test/SemaObjC/nested-typedef-decl.m
Modified:
    cfe/trunk/lib/Parse/ParseDecl.cpp

Modified: cfe/trunk/lib/Parse/ParseDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseDecl.cpp?rev=138803&r1=138802&r2=138803&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParseDecl.cpp (original)
+++ cfe/trunk/lib/Parse/ParseDecl.cpp Tue Aug 30 12:10:52 2011
@@ -759,6 +759,9 @@
                                                 SourceLocation &DeclEnd,
                                           ParsedAttributesWithRange &attrs) {
   ParenBraceBracketBalancer BalancerRAIIObj(*this);
+  // Must temporarily exit the objective-c container scope for
+  // parsing c none objective-c decls.
+  ObjCDeclContextSwitch ObjCDC(*this);
   
   Decl *SingleDecl = 0;
   Decl *OwnedType = 0;

Added: cfe/trunk/test/SemaObjC/nested-typedef-decl.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/nested-typedef-decl.m?rev=138803&view=auto
==============================================================================
--- cfe/trunk/test/SemaObjC/nested-typedef-decl.m (added)
+++ cfe/trunk/test/SemaObjC/nested-typedef-decl.m Tue Aug 30 12:10:52 2011
@@ -0,0 +1,21 @@
+// RUN: %clang_cc1 -x objective-c -fsyntax-only -verify %s
+// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify %s
+// rdar://10041908
+
+ at interface Bar {
+  struct _A *_hardlinkList;
+}
+ at end
+ at implementation Bar
+typedef struct _A {
+  int dev;
+  int inode;
+} A;
+
+- (void) idx:(int)idx ino:(int)ino dev:(int)dev
+{
+  _hardlinkList[idx].inode = ino;
+  _hardlinkList[idx].dev = dev;
+}
+ at end
+





More information about the cfe-commits mailing list