stuffs
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
namespace Solstice {
|
||||
|
||||
class TypeChecker {
|
||||
std::unordered_map<std::string, Type> variables;
|
||||
std::unordered_map<std::string, PossibleType> variables;
|
||||
std::unordered_map<std::string, Type> types;
|
||||
|
||||
std::unordered_map<TypePair, Type> addOverloads;
|
||||
@@ -21,7 +21,7 @@ namespace Solstice {
|
||||
std::unordered_map<TypePair, Type> greaterThanOverloads;
|
||||
std::unordered_map<TypePair, Type> lesserThanOverloads;
|
||||
|
||||
Node& input;
|
||||
Node* input;
|
||||
|
||||
bool inFunction = false;
|
||||
|
||||
@@ -37,15 +37,38 @@ namespace Solstice {
|
||||
|
||||
void checkCodeBlockType(Node& node);
|
||||
|
||||
void checkAddType(Node& node);
|
||||
void checkSubtractType(Node& node);
|
||||
void checkMultiplyType(Node& node);
|
||||
void checkDivideType(Node& node);
|
||||
|
||||
void checkEqualType(Node& node);
|
||||
void checkNotEqualType(Node& node);
|
||||
void checkGreaterThanType(Node& node);
|
||||
void checkLesserThanType(Node& node);
|
||||
|
||||
void checkNodeType(Node& node);
|
||||
|
||||
public:
|
||||
|
||||
TypeChecker() = delete;
|
||||
TypeChecker(Node& node) : input(node) {
|
||||
TypeChecker(Node& node) : input(&node) {
|
||||
initOverloads();
|
||||
}
|
||||
|
||||
void setNode(Node& node) {
|
||||
input = &node;
|
||||
}
|
||||
|
||||
// Only for use as a public function.
|
||||
void setVariable(const std::string& name, const Type& type) {
|
||||
variables[name] = {{type}};
|
||||
}
|
||||
|
||||
void setVariableUnknown(const std::string& name) {
|
||||
variables[name].unknownType = true;
|
||||
}
|
||||
|
||||
void checkTypes();
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user