Properly pop out of Objective-C method declarations when they are (ill-formedly)
found within contexts other than the translation unit. llvm-svn: 110417
This commit is contained in:
parent
c2107d2eaa
commit
dc9796e23a
|
@ -343,8 +343,10 @@ DeclContext *Sema::getContainingDC(DeclContext *DC) {
|
|||
return DC;
|
||||
}
|
||||
|
||||
// ObjCMethodDecls are parsed (for some reason) outside the context
|
||||
// of the class.
|
||||
if (isa<ObjCMethodDecl>(DC))
|
||||
return Context.getTranslationUnitDecl();
|
||||
return DC->getLexicalParent()->getLexicalParent();
|
||||
|
||||
return DC->getLexicalParent();
|
||||
}
|
||||
|
|
|
@ -23,5 +23,10 @@ namespace C {
|
|||
@implementation A(C) //expected-error{{Objective-C declarations may only appear in global scope}}
|
||||
@end
|
||||
|
||||
@interface B @end //expected-error{{Objective-C declarations may only appear in global scope}}
|
||||
@implementation B //expected-error{{Objective-C declarations may only appear in global scope}}
|
||||
+ (void) foo {}
|
||||
@end
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue