#include "typechecker.hpp" namespace Solstice { void TypeChecker::initOverloads() { addOverloads = { {{BaseType::Int, BaseType::Int}, BaseType::Int}, {{BaseType::Double, BaseType::Double}, BaseType::Double}, {{BaseType::Int, BaseType::Double}, BaseType::Double}, {{BaseType::Double, BaseType::Int}, BaseType::Double}, {{BaseType::String, BaseType::String}, BaseType::String}, {{BaseType::String, BaseType::Char}, BaseType::String}, {{BaseType::Char, BaseType::String}, BaseType::String}, {{BaseType::Char, BaseType::Char}, BaseType::Char} }; subtractOverloads = { {{BaseType::Int, BaseType::Int}, BaseType::Int}, {{BaseType::Double, BaseType::Double}, BaseType::Double}, {{BaseType::Int, BaseType::Double}, BaseType::Double}, {{BaseType::Double, BaseType::Int}, BaseType::Double}, {{BaseType::Char, BaseType::Char}, BaseType::Char} }; multiplyOverloads = { {{BaseType::Int, BaseType::Int}, BaseType::Int}, {{BaseType::Double, BaseType::Double}, BaseType::Double}, {{BaseType::Int, BaseType::Double}, BaseType::Double}, {{BaseType::Double, BaseType::Int}, BaseType::Double}, {{BaseType::Char, BaseType::Char}, BaseType::Char} }; divideOverloads = { {{BaseType::Int, BaseType::Int}, BaseType::Double}, {{BaseType::Double, BaseType::Double}, BaseType::Double}, {{BaseType::Int, BaseType::Double}, BaseType::Double}, {{BaseType::Double, BaseType::Int}, BaseType::Double}, {{BaseType::Char, BaseType::Char}, BaseType::Char} }; equalOverloads = { {{BaseType::Int, BaseType::Int}, BaseType::Bool}, {{BaseType::Double, BaseType::Double}, BaseType::Bool}, {{BaseType::Int, BaseType::Double}, BaseType::Bool}, {{BaseType::Double, BaseType::Int}, BaseType::Bool}, {{BaseType::String, BaseType::String}, BaseType::Bool}, {{BaseType::Char, BaseType::Char}, BaseType::Bool}, {{BaseType::Bool, BaseType::Bool}, BaseType::Bool}, }; notEqualOverloads = { {{BaseType::Int, BaseType::Int}, BaseType::Bool}, {{BaseType::Double, BaseType::Double}, BaseType::Bool}, {{BaseType::Int, BaseType::Double}, BaseType::Bool}, {{BaseType::Double, BaseType::Int}, BaseType::Bool}, {{BaseType::String, BaseType::String}, BaseType::Bool}, {{BaseType::Char, BaseType::Char}, BaseType::Bool}, {{BaseType::Bool, BaseType::Bool}, BaseType::Bool}, }; greaterThanOverloads = { {{BaseType::Int, BaseType::Int}, BaseType::Bool}, {{BaseType::Double, BaseType::Double}, BaseType::Bool}, {{BaseType::Int, BaseType::Double}, BaseType::Bool}, {{BaseType::Double, BaseType::Int}, BaseType::Bool}, {{BaseType::Char, BaseType::Char}, BaseType::Bool}, }; lesserThanOverloads = { {{BaseType::Int, BaseType::Int}, BaseType::Bool}, {{BaseType::Double, BaseType::Double}, BaseType::Bool}, {{BaseType::Int, BaseType::Double}, BaseType::Bool}, {{BaseType::Double, BaseType::Int}, BaseType::Bool}, {{BaseType::Char, BaseType::Char}, BaseType::Bool}, }; } }