From: Fariborz Jahanian Date: Wed, 6 Aug 2014 20:56:21 +0000 (+0000) Subject: Objective-C ARC. Adding declarations for Objective-C's X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fd83e33425ed374ed4606f873af4b42d14756a15;p=clang Objective-C ARC. Adding declarations for Objective-C's new APIs for literals. nfc. wip. rdar://17554063 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214993 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/NSAPI.h b/include/clang/AST/NSAPI.h index 0b21b03348..c64338549f 100644 --- a/include/clang/AST/NSAPI.h +++ b/include/clang/AST/NSAPI.h @@ -76,9 +76,10 @@ public: NSArr_initWithArray, NSArr_initWithObjects, NSArr_objectAtIndex, - NSMutableArr_replaceObjectAtIndex + NSMutableArr_replaceObjectAtIndex, + NSArr_initWithObjectsCount }; - static const unsigned NumNSArrayMethods = 9; + static const unsigned NumNSArrayMethods = 10; /// \brief The Objective-C NSArray selectors. Selector getNSArraySelector(NSArrayMethodKind MK) const; @@ -98,9 +99,10 @@ public: NSDict_initWithObjectsAndKeys, NSDict_initWithObjectsForKeys, NSDict_objectForKey, - NSMutableDict_setObjectForKey + NSMutableDict_setObjectForKey, + NSDict_initWithObjectsForKeysCount }; - static const unsigned NumNSDictionaryMethods = 11; + static const unsigned NumNSDictionaryMethods = 12; /// \brief The Objective-C NSDictionary selectors. Selector getNSDictionarySelector(NSDictionaryMethodKind MK) const; diff --git a/include/clang/Sema/Sema.h b/include/clang/Sema/Sema.h index 59a5e5dd4f..3880cb5773 100644 --- a/include/clang/Sema/Sema.h +++ b/include/clang/Sema/Sema.h @@ -672,12 +672,21 @@ public: /// \brief The declaration of the arrayWithObjects:count: method. ObjCMethodDecl *ArrayWithObjectsMethod; + + /// \brief The declaration of the initWithObjects:count: method. + ObjCMethodDecl *InitArrayWithObjectsMethod; /// \brief The declaration of the Objective-C NSDictionary class. ObjCInterfaceDecl *NSDictionaryDecl; /// \brief The declaration of the dictionaryWithObjects:forKeys:count: method. ObjCMethodDecl *DictionaryWithObjectsMethod; + + /// \brief The declaration of the initWithObjects:forKeys:count: method. + ObjCMethodDecl *InitDictionaryWithObjectsMethod; + + /// \brief The declaration for + (id) alloc method. + ObjCMethodDecl *AllocObjectsMethod; /// \brief id type. QualType QIDNSCopying; diff --git a/lib/AST/NSAPI.cpp b/lib/AST/NSAPI.cpp index 986b3b5398..c6afc8e381 100644 --- a/lib/AST/NSAPI.cpp +++ b/lib/AST/NSAPI.cpp @@ -119,6 +119,14 @@ Selector NSAPI::getNSArraySelector(NSArrayMethodKind MK) const { Sel = Ctx.Selectors.getSelector(2, KeyIdents); break; } + case NSArr_initWithObjectsCount: { + IdentifierInfo *KeyIdents[] = { + &Ctx.Idents.get("initWithObjects"), + &Ctx.Idents.get("count") + }; + Sel = Ctx.Selectors.getSelector(2, KeyIdents); + break; + } } return (NSArraySelectors[MK] = Sel); } @@ -204,6 +212,15 @@ Selector NSAPI::getNSDictionarySelector( Sel = Ctx.Selectors.getSelector(2, KeyIdents); break; } + case NSDict_initWithObjectsForKeysCount: { + IdentifierInfo *KeyIdents[] = { + &Ctx.Idents.get("initWithObjects"), + &Ctx.Idents.get("forKeys"), + &Ctx.Idents.get("count") + }; + Sel = Ctx.Selectors.getSelector(3, KeyIdents); + break; + } } return (NSDictionarySelectors[MK] = Sel); } diff --git a/lib/Sema/Sema.cpp b/lib/Sema/Sema.cpp index 46c5cba84d..7fb5eba1c2 100644 --- a/lib/Sema/Sema.cpp +++ b/lib/Sema/Sema.cpp @@ -95,7 +95,10 @@ Sema::Sema(Preprocessor &pp, ASTContext &ctxt, ASTConsumer &consumer, NSNumberDecl(nullptr), NSStringDecl(nullptr), StringWithUTF8StringMethod(nullptr), NSArrayDecl(nullptr), ArrayWithObjectsMethod(nullptr), + InitArrayWithObjectsMethod(nullptr), NSDictionaryDecl(nullptr), DictionaryWithObjectsMethod(nullptr), + InitDictionaryWithObjectsMethod(nullptr), + AllocObjectsMethod(nullptr), GlobalNewDeleteDeclared(false), TUKind(TUKind), NumSFINAEErrors(0),