roza/lib/TypeResolver.cpp

34 lines
643 B
C++
Raw Normal View History

2023-08-30 18:06:26 +00:00
#include "TypeResolver.hpp"
namespace roza
{
/*explicit*/ TypeResolver::TypeResolver(StatusLog& log)
: m_log { log }
{
}
/*virtual*/ TypeResolver::~TypeResolver()
{
}
std::shared_ptr<Type> TypeResolver::find(std::shared_ptr<Node> root)
{
switch (root->type())
{
case NODE_PROG:
case NODE_INSTR: {
return find(root->child(root->size() - 1));
} break;
case NODE_INT: {
return std::make_shared<Type>(BaseType::TY_INT);
} break;
default:
m_log.fatal(root->loc(), "cannot find type of node '" + root->string() + "'");
}
return nullptr;
}
}