2 #ifndef HOBBES_LANG_TYPEPREDS_HASFIELD_HPP_INCLUDED 3 #define HOBBES_LANG_TYPEPREDS_HASFIELD_HPP_INCLUDED 47 virtual std::string name()
const = 0;
54 static std::string constraintName();
std::shared_ptr< PolyType > PolyTypePtr
Definition: type.H:23
Definition: tyunqualify.H:20
static ConstraintPtr constraint(Direction, const MonoTypePtr &, const MonoTypePtr &, const MonoTypePtr &, const ExprPtr &)
Definition: hasfield.C:21
HFEliminators eliminators
Definition: hasfield.H:70
Definition: hasfield.H:16
void upd(const ConstraintPtr &, const HasField &)
Definition: hasfield.C:40
Definition: hasfield.H:51
bool satisfied(const UnqualifierPtr &, const TEnvPtr &, const ConstraintPtr &, std::vector< std::pair< std::string, std::shared_ptr< Expr > > > *)
bool satisfiable(const UnqualifierPtr &, const TEnvPtr &, const ConstraintPtr &, std::vector< std::pair< std::string, std::shared_ptr< Expr > > > *)
std::set< std::string > SymSet
Definition: tyunqualify.H:12
Definition: hasfield.H:33
std::vector< FunDep > FunDeps
Definition: tyunqualify.H:17
ExprPtr recordExpr
Definition: hasfield.H:20
MonoType::ptr MonoTypePtr
Definition: type.H:71
Direction
Definition: hasfield.H:16
MonoTypePtr fieldName
Definition: hasfield.H:21
Definition: hasfield.H:16
std::shared_ptr< Expr > ExprPtr
Definition: expr.H:58
bool dec(const ConstraintPtr &, AppendsTo *)
Definition: appendsto.C:15
std::shared_ptr< TEnv > TEnvPtr
Definition: type.H:80
std::vector< Definition > Definitions
Definition: expr.H:62
Definition: hasfield.H:15
std::shared_ptr< Constraint > ConstraintPtr
Definition: type.H:33
bool refine(const TEnvPtr &tenv, const ConstraintPtr &c, MonoTypeUnifier *s, Definitions *)
Definition: typeinf.C:485
MonoTypePtr fieldType
Definition: hasfield.H:22
std::vector< HFEliminator * > HFEliminators
Definition: hasfield.H:69
static Constraint * newConstraint(Direction, const MonoTypePtr &, const MonoTypePtr &, const MonoTypePtr &, const ExprPtr &)
Definition: hasfield.C:19
T lookup(const std::map< K, T > &tenv, const K &n)
Definition: cc.C:518
Direction direction
Definition: hasfield.H:18
std::vector< annmsg > annmsgs
Definition: lannotation.H:58
MonoTypePtr recordType
Definition: hasfield.H:19