当前位置: 首页>>代码示例>>C++>>正文


C++ ObjCMethodDecl::attrs方法代码示例

本文整理汇总了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);
}
开发者ID:soutaro,项目名称:nullarihyon,代码行数:56,代码来源:InitializerCheckTest.cpp


注:本文中的ObjCMethodDecl::attrs方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。