You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.7 KiB
60 lines
1.7 KiB
/*
|
|
* Copyright (c) 2017 - present Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
#include <unordered_map>
|
|
|
|
#import <Foundation/NSObject.h>
|
|
|
|
#pragma GCC diagnostic ignored "-Wundeclared-selector"
|
|
|
|
struct SomeStruct {
|
|
NSString* someLabel;
|
|
};
|
|
|
|
@interface SomeButton : NSObject
|
|
|
|
+ (instancetype)newWithStruct:(SomeStruct)aStruct
|
|
map:(const std::unordered_map<int, NSString*>&)aMap
|
|
object:(id)anObject
|
|
number:(int)n;
|
|
|
|
@end
|
|
|
|
SomeButton* buttonComponent(void);
|
|
SomeButton* buttonComponent(void) {
|
|
// flagging passing empty struct and map
|
|
return [SomeButton newWithStruct:{} map:{} object:nil number:0];
|
|
};
|
|
|
|
SomeButton* anotherButtonComponent(void);
|
|
SomeButton* anotherButtonComponent(void) {
|
|
return [SomeButton newWithStruct:{.someLabel = @"hi"}
|
|
map:{
|
|
{ 1, @"some title" }
|
|
}
|
|
object:@"a string object"
|
|
number:5];
|
|
};
|
|
|
|
struct CKComponentAction {
|
|
CKComponentAction(SEL selector);
|
|
CKComponentAction(id target, SEL selector);
|
|
};
|
|
|
|
@interface FBSomeComponent : NSObject
|
|
+ (instancetype)newWithAction:(CKComponentAction)action;
|
|
@end
|
|
|
|
void foo(NSObject* someObject) {
|
|
[FBSomeComponent newWithAction:@selector(thisBad:)];
|
|
|
|
[FBSomeComponent newWithAction:{ @selector(thisIsAlsoBad:) }];
|
|
|
|
[FBSomeComponent newWithAction:{ someObject, @selector(thisIsGood:) }];
|
|
};
|