7 #include <hilti/ast/expression.h> 10 namespace expression {
16 :
NodeBase({std::move(target), std::move(src)}, std::move(m)) {}
18 const auto& target()
const {
return child<Expression>(0); }
19 const auto& source()
const {
return child<Expression>(1); }
21 bool operator==(
const Assign& other)
const {
return target() == other.target() && source() == other.source(); }
24 bool isLhs()
const {
return target().isLhs(); }
28 auto type()
const {
return type::effectiveType(target().
type()); }
32 auto isEqual(
const Expression& other)
const {
return node::isEqual(
this, other); }
45 auto x = Expression(e)._clone().as<
Assign>();
58 auto x = Expression(e)._clone().as<
Assign>();
std::vector< T > childs(int begin, int end) const
Definition: node.h:373
bool isTemporary() const
Definition: assign.h:26
static Expression setSource(const Assign &e, const Expression &s)
Definition: assign.h:57
Definition: expression.h:16
auto isConstant() const
Definition: assign.h:30
std::map< std::string, node::detail::PropertyValue > Properties
Definition: node.h:83
auto type() const
Definition: assign.h:28
static Expression setTarget(const Assign &e, const Expression &t)
Definition: assign.h:44
bool isLhs() const
Definition: assign.h:24
auto properties() const
Definition: assign.h:35
auto isEqual(const Expression &other) const
Definition: assign.h:32