Objective-C ARC. Adding declarations for Objective-C's

new APIs for literals. nfc. wip. rdar://17554063

llvm-svn: 214993
This commit is contained in:
Fariborz Jahanian 2014-08-06 20:56:21 +00:00
parent cd47959eb6
commit 501e71c86b
4 changed files with 35 additions and 4 deletions

View File

@ -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;

View File

@ -673,12 +673,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<NSCopying> type.
QualType QIDNSCopying;

View File

@ -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);
}

View File

@ -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),