Move constraint declarations to Constraint.hpp

This commit is contained in:
Sam Vervaeck 2025-02-28 22:43:10 +01:00
parent 32f961aad9
commit fc24bb9091
Signed by: samvv
SSH key fingerprint: SHA256:dIg0ywU1OP+ZYifrYxy8c5esO72cIKB+4/9wkZj1VaY
2 changed files with 55 additions and 46 deletions

View file

@ -11,55 +11,10 @@
#include "bolt/CST.hpp"
#include "bolt/DiagnosticEngine.hpp"
#include "bolt/Type.hpp"
#include "bolt/Constraint.hpp"
namespace bolt {
enum class ConstraintKind {
TypesEqual,
};
class Constraint {
ConstraintKind Kind;
protected:
Constraint(ConstraintKind Kind):
Kind(Kind) {}
public:
inline ConstraintKind getKind() const {
return Kind;
}
};
class CTypesEqual : public Constraint {
Type* A;
Type* B;
Node* Origin;
public:
CTypesEqual(Type* A, Type* B, Node* Origin):
Constraint(ConstraintKind::TypesEqual), A(A), B(B), Origin(Origin) {}
Type* getLeft() const {
return A;
}
Type* getRight() const {
return B;
}
Node* getOrigin() const {
return Origin;
}
};
class TypeEnv {
TypeEnv* Parent;

View file

@ -0,0 +1,54 @@
#pragma once
#include "bolt/Type.hpp"
namespace bolt {
enum class ConstraintKind {
TypesEqual,
};
class Constraint {
ConstraintKind Kind;
protected:
Constraint(ConstraintKind Kind):
Kind(Kind) {}
public:
inline ConstraintKind getKind() const {
return Kind;
}
};
class CTypesEqual : public Constraint {
Type* A;
Type* B;
Node* Origin;
public:
CTypesEqual(Type* A, Type* B, Node* Origin):
Constraint(ConstraintKind::TypesEqual), A(A), B(B), Origin(Origin) {}
Type* getLeft() const {
return A;
}
Type* getRight() const {
return B;
}
Node* getOrigin() const {
return Origin;
}
};
}