Files
newsolstice/src/typechecker/typechecker.cpp

73 lines
3.4 KiB
C++
Raw Normal View History

2026-08-01 22:12:05 +10:00
#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},
};
}
}