22 lines
483 B
C++
22 lines
483 B
C++
|
#pragma once
|
||
|
#include <exception>
|
||
|
#include "type.hpp"
|
||
|
|
||
|
struct type_error : std::exception {
|
||
|
std::string description;
|
||
|
|
||
|
type_error(std::string d)
|
||
|
: description(std::move(d)) {}
|
||
|
|
||
|
const char* what() const noexcept override;
|
||
|
};
|
||
|
|
||
|
struct unification_error : public type_error {
|
||
|
type_ptr left;
|
||
|
type_ptr right;
|
||
|
|
||
|
unification_error(type_ptr l, type_ptr r)
|
||
|
: left(std::move(l)), right(std::move(r)),
|
||
|
type_error("failed to unify types") {}
|
||
|
};
|