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


C++ Program::env方法代码示例

本文整理汇总了C++中Program::env方法的典型用法代码示例。如果您正苦于以下问题:C++ Program::env方法的具体用法?C++ Program::env怎么用?C++ Program::env使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Program的用法示例。


在下文中一共展示了Program::env方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: typeChecker

std::unique_ptr<Unit>
TypeChecker::TypeCheckerTest::runCore(std::unique_ptr<Factory> factory,
                                      const std::string& code,
                                      const std::string& fullFileName,
                                      const std::vector<Diagnostic::Code>& expectedReports,
                                      const std::pair<std::string, Type::Kind>& expectedBindings)
{
    std::vector<std::string> searchPaths = readSearchPaths();

    TokenMap tokens;
    LexemeMap lexs;
    Snapshot snapshot;
    DiagnosticReports reports;
    Manager manager;
    manager.config(factory.get(), &tokens, &lexs, snapshot);
    for (const auto& path : searchPaths)
        manager.addSearchPath(path);

    std::unique_ptr<Unit> unit = manager.process(code, fullFileName);
    UAISO_EXPECT_TRUE(unit->ast());
    Program* prog = snapshot.find(fullFileName);
    UAISO_EXPECT_TRUE(prog);

    TypeChecker typeChecker(factory.get());
    typeChecker.setLexemes(&lexs);
    typeChecker.setTokens(&tokens);
    typeChecker.collectDiagnostics(&reports);
    typeChecker.check(Program_Cast(unit->ast()));

    UAISO_EXPECT_INT_EQ(expectedReports.size(), reports.size());
    for (const auto& s : expectedReports) {
        UAISO_EXPECT_TRUE(std::find_if(reports.begin(), reports.end(),
                                       [s](const DiagnosticReport& report) {
            return report.diagnostic().code() == s;
        }) != reports.end());
    }

    const std::string& symName = expectedBindings.first;
    if (!symName.empty()) {
        for (auto valSym : prog->env().listValueDecls()) {
            if (valSym->name()->str() == symName) {
                auto ty = valSym->valueType();
                UAISO_EXPECT_INT_EQ(static_cast<int>(expectedBindings.second),
                                    static_cast<int>(ty->kind()));
            }
        }
    }

    return std::move(unit);
}
开发者ID:gonboy,项目名称:uaiso,代码行数:50,代码来源:TypeCheckerTest.cpp


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