[cfe-commits] r143085 - in /cfe/trunk: include/clang/Parse/Parser.h include/clang/Sema/Sema.h lib/Sema/SemaDecl.cpp test/SemaObjC/incomplete-implementation.m

Argyrios Kyrtzidis kyrtzidis at apple.com
Wed Oct 26 17:55:47 PDT 2011


On Oct 26, 2011, at 5:31 PM, Fariborz Jahanian wrote:

> 
> On Oct 26, 2011, at 5:09 PM, Argyrios Kyrtzidis wrote:
> 
>> Author: akirtzidis
>> Date: Wed Oct 26 19:09:34 2011
>> New Revision: 143085
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=143085&view=rev
>> Log:
>> Fix crash on an @interface nested inside @implementation, rdar://10336158
>> 
>> Modified:
>>   cfe/trunk/include/clang/Parse/Parser.h
>>   cfe/trunk/include/clang/Sema/Sema.h
>>   cfe/trunk/lib/Sema/SemaDecl.cpp
>>   cfe/trunk/test/SemaObjC/incomplete-implementation.m
>> 
>> Modified: cfe/trunk/include/clang/Parse/Parser.h
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Parse/Parser.h?rev=143085&r1=143084&r2=143085&view=diff
>> ==============================================================================
>> --- cfe/trunk/include/clang/Parse/Parser.h (original)
>> +++ cfe/trunk/include/clang/Parse/Parser.h Wed Oct 26 19:09:34 2011
>> @@ -607,11 +607,11 @@
>>    explicit ObjCDeclContextSwitch(Parser &p) : P(p), 
>>               DC(p.getObjCDeclContext()) {
>>      if (DC)
>> -        P.Actions.ActOnObjCTemporaryExitContainerContext();
>> +        P.Actions.ActOnObjCTemporaryExitContainerContext(cast<DeclContext>(DC));
>>    }
>>    ~ObjCDeclContextSwitch() {
>>      if (DC)
>> -        P.Actions.ActOnObjCReenterContainerContext();
>> +        P.Actions.ActOnObjCReenterContainerContext(cast<DeclContext>(DC));
>>    }
>>  };
>> 
>> 
>> Modified: cfe/trunk/include/clang/Sema/Sema.h
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Sema.h?rev=143085&r1=143084&r2=143085&view=diff
>> ==============================================================================
>> --- cfe/trunk/include/clang/Sema/Sema.h (original)
>> +++ cfe/trunk/include/clang/Sema/Sema.h Wed Oct 26 19:09:34 2011
>> @@ -1245,8 +1245,8 @@
>>  /// scope for parsing/looking-up C constructs.
>>  ///
>>  /// Must be followed by a call to \see ActOnObjCReenterContainerContext
>> -  void ActOnObjCTemporaryExitContainerContext();
>> -  void ActOnObjCReenterContainerContext();
>> +  void ActOnObjCTemporaryExitContainerContext(DeclContext *DC);
>> +  void ActOnObjCReenterContainerContext(DeclContext *DC);
>> 
>>  /// ActOnTagDefinitionError - Invoked when there was an unrecoverable
>>  /// error parsing the definition of a tag.
>> 
>> Modified: cfe/trunk/lib/Sema/SemaDecl.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=143085&r1=143084&r2=143085&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Sema/SemaDecl.cpp (original)
>> +++ cfe/trunk/lib/Sema/SemaDecl.cpp Wed Oct 26 19:09:34 2011
>> @@ -8287,13 +8287,13 @@
>>  PopDeclContext();
>> }
>> 
>> -void Sema::ActOnObjCTemporaryExitContainerContext() {
>> +void Sema::ActOnObjCTemporaryExitContainerContext(DeclContext *DC) {
> 
> "DC" is unused here.

Used in r143088, thanks!

-Argyrios

> 
> - Fariborz
> 
>>  OriginalLexicalContext = CurContext;
>>  ActOnObjCContainerFinishDefinition();
>> }
>> 
>> -void Sema::ActOnObjCReenterContainerContext() {
>> -  ActOnObjCContainerStartDefinition(cast<Decl>(OriginalLexicalContext));
>> +void Sema::ActOnObjCReenterContainerContext(DeclContext *DC) {
>> +  ActOnObjCContainerStartDefinition(cast<Decl>(DC));
>>  OriginalLexicalContext = 0;
>> }
>> 
>> 
>> Modified: cfe/trunk/test/SemaObjC/incomplete-implementation.m
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/incomplete-implementation.m?rev=143085&r1=143084&r2=143085&view=diff
>> ==============================================================================
>> --- cfe/trunk/test/SemaObjC/incomplete-implementation.m (original)
>> +++ cfe/trunk/test/SemaObjC/incomplete-implementation.m Wed Oct 26 19:09:34 2011
>> @@ -24,4 +24,17 @@
>> - Meth {return 0;} // expected-warning {{category is implementing a method which will also be implemented by its primary class}}
>> @end
>> 
>> + at interface Q
>> + at end
>> +
>> +// rdar://10336158
>> + at implementation Q
>> +
>> +__attribute__((visibility("default")))
>> + at interface QN 
>> +{
>> +}
>> + at end
>> +
>> + at end
>> 
>> 
>> 
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 




More information about the cfe-commits mailing list