#include "types.h" #include namespace types { int operator_precedence(BinOp& op) { switch (op) { case BinOp::Assignment: return 1000; case BinOp::Add: return 10; default: return 1000; } } std::string format_operator(BinOp& op) { switch (op) { case BinOp::Assignment: return "="; case BinOp::Add: return "+"; default: return "??"; } } std::string FundamentalType::formatted() { switch (this->m_ty) { case FundamentalTypeKind::Int: return "Int"; default: return "Unknown"; } } llvm::Value* FundamentalType::add(codegen::Builder& builder, llvm::Value* lhs, llvm::Value* rhs) { switch (this->m_ty) { case FundamentalTypeKind::Int: return builder.builder->CreateAdd(lhs, rhs); default: throw std::runtime_error("Invalid type for add"); } } }