Spicy
Public Member Functions | List of all members
hilti::generic::CastedCoercion Class Referencefinal

#include <generic.h>

Inheritance diagram for hilti::generic::CastedCoercion:
hilti::Operator

Public Member Functions

operator_::Signature signature (Builder *builder) const final
 
QualifiedTyperesult (Builder *builder, const Expressions &operands, const Meta &meta) const final
 
Result< expression::ResolvedOperator * > instantiate (Builder *builder, Expressions operands, Meta meta) const final
 
std::string name () const final
 
- Public Member Functions inherited from hilti::Operator
 Operator (Meta meta=Meta(), bool builtin=true)
 
virtual ~Operator ()
 
 Operator (const Operator &other)=delete
 
 Operator (Operator &&other)=delete
 
Operatoroperator= (const Operator &other)=delete
 
Operatoroperator= (Operator &&other)=delete
 
auto isInitialized () const
 
auto hasOperands () const
 
const auto & signature () const
 
auto kind () const
 
auto isBuiltIn () const
 
auto operands () const
 
auto op0 () const
 
auto op1 () const
 
auto op2 () const
 
const auto & meta () const
 
const auto & doc () const
 
auto typename_ () const
 
virtual std::optional< operator_::Operands > filter (Builder *builder, const Expressions &operands) const
 
virtual void validate (expression::ResolvedOperator *n) const
 
virtual std::string print () const
 
virtual std::string dump () const
 

Additional Inherited Members

- Public Types inherited from hilti::Operator
template<typename T >
using Result = ::hilti::Result< T >
 
- Protected Member Functions inherited from hilti::Operator
bool init (Builder *builder, Node *scope_root=nullptr)
 
virtual std::string _typename () const
 
- Static Protected Member Functions inherited from hilti::Operator
static operator_::OperandoperandForType (Builder *builder, parameter::Kind kind, UnqualifiedType *t, std::string doc="")
 
static operator_::OperandoperandForExpression (Builder *builder, parameter::Kind kind, const Expressions &e, size_t i)
 

Detailed Description

Operator created internally by the resolver for a cast expression requesting a type coercion. This is mainly just a wrapper around a CoercedExpression so that we don't loose the information that it was cast.

Member Function Documentation

◆ instantiate()

Result< expression::ResolvedOperator * > hilti::generic::CastedCoercion::instantiate ( Builder builder,
Expressions  operands,
Meta  meta 
) const
finalvirtual

Instantiates the operator as an AST node, given specific operand expressions.

Implements hilti::Operator.

◆ name()

std::string hilti::generic::CastedCoercion::name ( ) const
inlinefinalvirtual

Returns a readable name describing the operator. Must be provided by derived classes.

Implements hilti::Operator.

◆ result()

QualifiedType * hilti::generic::CastedCoercion::result ( Builder builder,
const Expressions &  operands,
const Meta meta 
) const
finalvirtual

Returns the operator's result type, given specific operand expressions. Must be implemented by operators if the signature does not define a static result type.

Reimplemented from hilti::Operator.

◆ signature()

operator_::Signature hilti::generic::CastedCoercion::signature ( Builder builder) const
finalvirtual

Returns the operator's signature. Must be overridden by derived classes.

Implements hilti::Operator.


The documentation for this class was generated from the following files: