45using Ptrns = std::deque<std::unique_ptr<Ptrn>>;
61 , infers_(
std::move(infers))
65 const Ptrn*
ptrn(
size_t i)
const {
return ptrns_[i].get(); }
73 std::vector<Infer*> infers_;
IdPtrn(Dbg dbg, bool rebind, const Def *type)
void bind(Scopes &, const Def *, bool rebind=false) const override
const Def * type(World &, Def2Fields &) const override
virtual void bind(Scopes &, const Def *, bool rebind=false) const =0
Ptrn(Dbg dbg, bool rebind, const Def *type)
bool is_anonymous() const
virtual const Def * type(World &, Def2Fields &) const =0
const Ptrns & ptrns() const
const Def * type(World &, Def2Fields &) const override
TuplePtrn(Dbg dbg, bool rebind, Ptrns &&ptrns, const Def *type, std::vector< Infer * > &&infers, Def *decl)
const Ptrn * ptrn(size_t i) const
void bind(Scopes &, const Def *, bool rebind=false) const override
The World represents the whole program and manages creation of Thorin nodes (Defs).
std::deque< std::unique_ptr< Ptrn > > Ptrns
DefMap< Vector< Sym > > Def2Fields
GIDMap< const Def *, To > DefMap