本文整理汇总了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);
}