From e6a67dfc075f4be72cb8cae559fbe904e894689b Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Fri, 3 Jun 2016 16:59:13 +0000 Subject: [PATCH] Obj-C: Fix assert-on-invalid (PR27822) Clang would assert when isObjCInstancetype() was called on a tok::annot_cxxscope token. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@271688 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Parse/Parser.h | 2 ++ test/SemaObjCXX/instancetype.mm | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/include/clang/Parse/Parser.h b/include/clang/Parse/Parser.h index f468879805..9cbad6b634 100644 --- a/include/clang/Parse/Parser.h +++ b/include/clang/Parse/Parser.h @@ -647,6 +647,8 @@ private: /// Should only be used in Objective-C language modes. bool isObjCInstancetype() { assert(getLangOpts().ObjC1); + if (Tok.isAnnotation()) + return false; if (!Ident_instancetype) Ident_instancetype = PP.getIdentifierInfo("instancetype"); return Tok.getIdentifierInfo() == Ident_instancetype; diff --git a/test/SemaObjCXX/instancetype.mm b/test/SemaObjCXX/instancetype.mm index 89ff2b4b03..f61d6bf4cf 100644 --- a/test/SemaObjCXX/instancetype.mm +++ b/test/SemaObjCXX/instancetype.mm @@ -214,3 +214,10 @@ void test_instancetype_inherited() { return 0; } @end + +// PR27822 +@class NSString; +namespace pr27822 { } +@interface AXPlatformNodeCocoa ++ (NSString*)nativeRoleFromAXRole:(pr27822::UndeclaredIdentifier)role; // expected-error {{expected a type}} +@end -- 2.40.0