本文整理汇总了C++中ObjCMethodDecl::attrs方法的典型用法代码示例。如果您正苦于以下问题:C++ ObjCMethodDecl::attrs方法的具体用法?C++ ObjCMethodDecl::attrs怎么用?C++ ObjCMethodDecl::attrs使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ObjCMethodDecl
的用法示例。
在下文中一共展示了ObjCMethodDecl::attrs方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: builder
TEST(InitializerCheck, find_nonnull_ivars) {
ASTBuilder builder("@interface Test : NSObject\n"
"@property (nonatomic, nonnull) NSString *hello;\n"
"@property (nonatomic, nullable) NSNumber *good;\n"
"@end\n"
"@interface Test()\n"
"@property (nonatomic, nonnull) NSString *extension;\n"
"@property (nonatomic, nullable) NSNumber *extension2;\n"
"@end\n"
"@interface Test (Cat)\n"
"@property (nonatomic, nonnull) NSString *category;\n"
"@property (nonatomic, nullable) NSNumber *category2;\n"
"@end\n"
"@implementation Test {\n"
" NSString * _Nonnull _impl1;\n"
" NSString * _Nullable _impl2;\n"
"}\n"
"- (nonnull instancetype)init1 __attribute__((annotate(\"hoge\"))) {\n"
" return self;\n"
"}\n"
"@end\n");
std::shared_ptr<VariableNullabilityMapping> map(new VariableNullabilityMapping);
std::shared_ptr<VariableNullabilityEnvironment> env(new VariableNullabilityEnvironment(builder.getASTContext(), map));
ExpressionNullabilityCalculator calculator(builder.getASTContext(), env);
VariableNullabilityPropagation prop(calculator, env);
ObjCMethodDecl *method = builder.getMethodDecl("init1");
for (auto attr : method->attrs()) {
auto kind = attr->getKind();
if (kind == clang::attr::Annotate) {
auto annot = llvm::dyn_cast<AnnotateAttr>(attr);
std::string name = annot->getAnnotation();
ASSERT_EQ(name, "hoge");
}
}
ObjCImplementationDecl *impl = builder.getImplementationDecl("Test");
InitializerChecker checker(builder.getASTContext(), impl);
auto ivars = checker.getNonnullIvars();
std::set<std::string> actualIvarNames;
for (auto ivar : ivars) {
actualIvarNames.insert(ivar->getIvarDecl()->getNameAsString());
}
std::set<std::string> expectedIvarNames;
expectedIvarNames.insert("_hello");
expectedIvarNames.insert("_extension");
expectedIvarNames.insert("_impl1");
ASSERT_EQ(expectedIvarNames, actualIvarNames);
}