#ifndef GOOSE_BUILTINS_TYPES_TEMPLATE_TVAR_H
#define GOOSE_BUILTINS_TYPES_TEMPLATE_TVAR_H
namespace goose::builtins
{
class TVar
{
public:
TVar( const StringId& name ) :
m_name( name )
{}
const auto& name() const { return m_name; }
private:
StringId m_name;
};
extern bool IsTExpr( const optional< Value >& te );
extern bool IsTExpr( const Value& te );
extern bool IsTVar( const Value& tv );
}
namespace goose::ir
{
template<>
struct Bridge< builtins::TVar >
{
static optional< Term > Domain() { return sema::DomainCompileTime(); }
static const Term& Type();
static Value ToValue( builtins::TVar&& tv );
static optional< builtins::TVar > FromValue( const Value& v );
};
}
#endif