9 std::shared_ptr<TipType> substitution;
17 : target(t), substitution(s) {}
33 std::shared_ptr<TipType> s);
Produces a type with designated variable substitutions.
Definition: Substituter.h:7
static std::shared_ptr< TipType > substitute(TipType *t, TipVar *v, std::shared_ptr< TipType > s)
Substitute for instances of variable in a target type.
Definition: Substituter.cpp:7
Substituter(TipVar *t, std::shared_ptr< TipType > s)
Definition: Substituter.h:16
virtual void endVisit(TipAlpha *element) override
Definition: Substituter.cpp:89
std::shared_ptr< TipType > getResult()
Definition: Substituter.cpp:14
std::vector< std::shared_ptr< TipType > > visitedTypes
Definition: Substituter.h:12
A proper type representing an absent record field.
Definition: TipAbsentField.h:12
Class for free type variables.
Definition: TipAlpha.h:10
A proper type representing a function.
Definition: TipFunction.h:14
A proper type representing an int.
Definition: TipInt.h:12
Class representing a recursive type.
Definition: TipMu.h:12
A proper type representing a record.
Definition: TipRecord.h:14
A proper type representing a reference.
Definition: TipRef.h:10
Base class for TIP type visitors.
Definition: TipTypeVisitor.h:24
Abstract base class of all types.
Definition: TipType.h:19
Class representing a type variable.
Definition: TipVar.h:13