diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 9cc7c6bf6b73..abc508916fff 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -2908,11 +2908,6 @@ Sema::DeclPtrTy Sema::ActOnStartOfFunctionDef(Scope *FnBodyScope, DeclPtrTy D) { /// TODO: statement expressions, for (int x[n]; ;), case. -/// TODO: check the body of an objc method. - -// TODO: Consider wording like: "branching bypasses declaration of -// variable-length" - /// JumpScopeChecker - This object is used by Sema to diagnose invalid jumps /// into VLA and other protected scopes. For example, this rejects: diff --git a/clang/test/SemaObjC/scope-check.m b/clang/test/SemaObjC/scope-check.m index fb9bd4570dda..6659562bab03 100644 --- a/clang/test/SemaObjC/scope-check.m +++ b/clang/test/SemaObjC/scope-check.m @@ -44,8 +44,6 @@ L3: ; } @catch (C *c) { // expected-note {{jump bypasses initialization of @catch block}} L8: ; } - - } void test2(int a) { @@ -62,3 +60,18 @@ void test3() { blargh: ; } @catch (...) {} } + +@interface Greeter ++ (void) hello; +@end + +@implementation Greeter ++ (void) hello { + + @try { + goto blargh; // expected-error {{illegal goto into protected scope}} + } @catch (...) { // expected-note {{jump bypasses initialization of @catch block}} + blargh: ; + } +} +@end