|
| CanBeImplicitlyCastConstraint (const IR::Type *left, const IR::Type *right, const IR::Node *origin) |
|
| CanBeImplicitlyCastConstraint (const IR::Type *left, const IR::Type *right, const TypeConstraint *derivedFrom) |
|
BinaryConstraint * | create (const IR::Type *left, const IR::Type *right) const override |
|
void | dbprint (std::ostream &out) const override |
|
| DECLARE_TYPEINFO (CanBeImplicitlyCastConstraint, BinaryConstraint) |
|
bool | reportError (const TypeVariableSubstitution *subst) const override |
|
template<typename... Args> |
bool | reportError (const TypeVariableSubstitution *subst, const char *format, Args &&...args) const |
|
| DECLARE_TYPEINFO (BinaryConstraint, TypeConstraint) |
|
| DECLARE_TYPEINFO (TypeConstraint) |
|
template<typename... Args> |
bool | reportError (const TypeVariableSubstitution *subst, const char *format, Args &&...args) const |
|
void | setError (std::string_view format, std::initializer_list< const IR::Node * > nodes) |
|
void | print () const |
|
template<typename T > |
T & | as () |
| Tries to convert the class to type T. A BUG occurs if the cast fails.
|
|
template<typename T > |
const T & | as () const |
| Tries to convert the class to type T. A BUG occurs if the cast fails.
|
|
template<typename T > |
T * | checkedTo () |
| Performs a checked cast. A BUG occurs if the cast fails.
|
|
template<typename T > |
const T * | checkedTo () const |
| Performs a checked cast. A BUG occurs if the cast fails.
|
|
template<typename T > |
bool | is () const noexcept |
|
virtual bool | isA (TypeId typeId) const noexcept=0 |
|
template<typename T > |
const T * | to () const noexcept |
| Same as to , but returns const pointer to T.
|
|
template<typename T > |
T * | to () noexcept |
|
virtual TypeId | typeId () const noexcept=0 |
|
|
const IR::Type * | left |
|
const IR::Type * | right |
|
| BinaryConstraint (const IR::Type *left, const IR::Type *right, const IR::Node *origin) |
|
| BinaryConstraint (const IR::Type *left, const IR::Type *right, const TypeConstraint *derivedFrom) |
|
void | validate () const |
|
| TypeConstraint (const IR::Node *origin) |
|
| TypeConstraint (const TypeConstraint *derivedFrom) |
|
std::string | explain (size_t index, Explain *explainer) const |
|
std::string | localError (Explain *explainer) const |
|
virtual const void * | toImpl (TypeId typeId) const noexcept=0 |
|
const TypeConstraint * | derivedFrom = nullptr |
| Constraint which produced this one. May be nullptr.
|
|
const IR::Node * | origin = nullptr |
| Place in source code which originated the contraint. May be nullptr.
|
|
The right type can be implicitly cast to the left type.