7 #include <hilti/ast/ctor.h> 8 #include <hilti/ast/ctors/null.h> 9 #include <hilti/ast/expressions/ctor.h> 10 #include <hilti/ast/types/optional.h> 24 std::optional<Expression> value()
const {
return childs()[0].tryAs<Expression>(); }
26 Type dereferencedType()
const {
27 if (
auto x =
childs()[0].tryAs<Expression>() )
30 return type::effectiveType(child<Type>(0));
33 bool operator==(
const Optional& other)
const {
return value() == other.value(); }
40 if (
auto e = value() )
41 return e->isConstant();
47 bool isLhs()
const {
return false; }
52 auto isEqual(
const Ctor& other)
const {
return node::isEqual(
this, other); }
Type type() const
Definition: optional.h:36
bool isLhs() const
Definition: optional.h:47
auto & childs() const
Definition: node.h:445
Optional(Expression e, Meta m=Meta())
Definition: optional.h:19
Definition: optional.h:13
auto isTemporary() const
Definition: optional.h:49
auto isEqual(const Ctor &other) const
Definition: optional.h:52
bool isConstant() const
Definition: optional.h:39
std::map< std::string, node::detail::PropertyValue > Properties
Definition: node.h:83
Optional(Type t, Meta m=Meta())
Definition: optional.h:22
Definition: optional.h:16
auto properties() const
Definition: optional.h:55
auto & meta() const
Definition: node.h:449