#ifndef GOOSE_SEMA_H
#define GOOSE_SEMA_H
#include "util/util.h"
#include "eir/eir.h"
#include "cir/cir.h"
#include "diagnostics/diagnostics.h"
namespace goose::sema
{
using namespace util;
using namespace eir;
using namespace diagnostics;
class Context;
extern optional< Value > LowerTypeForRuntime( const Context& c, const Value& type );
extern optional< Value > LowerConstantForRuntime( const Context& c, const Value& val );
extern optional< Value > LowerTypeForVerification( const Context& c, const Value& type );
extern optional< Value > LowerConstantForVerification( const Context& c, const Value& val );
}
#include "hole.h"
#include "context.h"
#include "ctmm.h"
#include "env.h"
#include "tc-score.h"
#include "tc-context.h"
#include "typecheck.h"
#include "tc-ruleset.h"
#include "tc-basicrules.h"
#include "uni-basicrules.h"
#include "uni-holes.h"
#include "uni-quote.h"
#include "substitute.h"
#include "postprocess.h"
#include "tctrie.h"
#include "inv-ruleset.h"
#include "invocation.h"
#include "tpl-ruleset.h"
#include "template.h"
#include "overloadset.h"
#include "codebuilder.h"
#include "tctrie.inl"
#include "tctrie-typecheck.inl"
#endif