2 #ifndef HOBBES_LANG_TYUNQUALIFY_HPP_INCLUDED 3 #define HOBBES_LANG_TYUNQUALIFY_HPP_INCLUDED 12 typedef std::set<std::string>
SymSet;
16 typedef std::pair<VarIDs, int>
FunDep;
52 void add(
const std::string& name,
const UnqualifierPtr& uq);
53 UnqualifierPtr findUnqualifier(
const std::string& name);
54 const Unqualifiers& unqualifiers()
const;
std::shared_ptr< PolyType > PolyTypePtr
Definition: type.H:23
virtual PolyTypePtr lookup(const std::string &vn) const =0
Definition: tyunqualify.H:20
std::map< std::string, UnqualifierPtr > Unqualifiers
Definition: tyunqualify.H:50
Definition: tyunqualify.H:48
Unqualifiers uqs
Definition: tyunqualify.H:65
std::set< std::string > SymSet
Definition: tyunqualify.H:12
virtual SymSet bindings() const =0
bool hasConstraint(const ConstraintPtr &c, const Constraints &cs)
Definition: typepreds.C:100
std::vector< FunDep > FunDeps
Definition: tyunqualify.H:17
Constraints removeConstraint(const ConstraintPtr &c, const Constraints &cs)
Definition: typepreds.C:114
ExprPtr unqualifyTypes(const TEnvPtr &tenv, const ExprPtr &e, Definitions *ds)
Definition: tyunqualify.C:8
virtual void explain(const TEnvPtr &, const ConstraintPtr &, const ExprPtr &, Definitions *, annmsgs *)=0
std::shared_ptr< Unqualifier > UnqualifierPtr
Definition: type.H:83
std::vector< ConstraintPtr > Constraints
Definition: type.H:35
std::shared_ptr< Expr > ExprPtr
Definition: expr.H:58
std::shared_ptr< TEnv > TEnvPtr
Definition: type.H:80
std::pair< VarIDs, int > FunDep
Definition: tyunqualify.H:16
std::vector< Definition > Definitions
Definition: expr.H:62
std::shared_ptr< UnqualifierSet > UnqualifierSetPtr
Definition: type.H:86
std::vector< int > VarIDs
Definition: tyunqualify.H:15
std::shared_ptr< Constraint > ConstraintPtr
Definition: type.H:33
virtual FunDeps dependencies(const ConstraintPtr &) const =0
virtual bool refine(const TEnvPtr &tenv, const ConstraintPtr &cst, MonoTypeUnifier *u, Definitions *ds)=0
virtual bool satisfied(const TEnvPtr &tenv, const ConstraintPtr &cst, Definitions *ds) const =0
std::shared_ptr< QualType > QualTypePtr
Definition: type.H:28
virtual bool satisfiable(const TEnvPtr &tenv, const ConstraintPtr &cst, Definitions *ds) const =0
std::vector< annmsg > annmsgs
Definition: lannotation.H:58
virtual ExprPtr unqualify(const TEnvPtr &tenv, const ConstraintPtr &cst, const ExprPtr &e, Definitions *ds) const =0