7 #include <hilti/ast/declaration.h> 8 #include <hilti/ast/expression.h> 9 #include <hilti/ast/id.h> 10 #include <hilti/ast/node.h> 11 #include <hilti/ast/node_ref.h> 12 #include <hilti/ast/types/unknown.h> 13 #include <hilti/base/logger.h> 16 namespace expression {
22 assert(_node && _node->isA<Declaration>());
25 const auto& id()
const {
return child<ID>(0); }
26 auto declaration()
const {
28 return _node->as<Declaration>();
31 bool isValid()
const {
return static_cast<bool>(_node); }
33 bool operator==(
const ResolvedID& other)
const {
34 return id() == other.id() && declaration() == other.declaration();
38 bool isLhs()
const {
return ! declaration().isConstant(); }
46 auto isEqual(
const Expression& other)
const {
return node::isEqual(
this, other); }
62 const auto& id()
const {
return child<ID>(0); }
64 bool operator==(
const UnresolvedID& other)
const {
return id() == other.id(); }
67 bool isLhs()
const {
return true; }
69 Type
type()
const {
return type::unknown; }
71 auto isEqual(
const Expression& other)
const {
return node::isEqual(
this, other); }
std::string renderedRid() const
Definition: node_ref.h:68
Definition: expression.h:16
auto properties() const
Definition: id.h:49
auto isEqual(const Expression &other) const
Definition: id.h:46
bool isTemporary() const
Definition: id.h:40
auto properties() const
Definition: id.h:74
std::map< std::string, node::detail::PropertyValue > Properties
Definition: node.h:83
bool isLhs() const
Definition: id.h:38
Definition: node_ref.h:44
bool isConstant() const
Definition: id.cc:31
Type type() const
Definition: id.cc:10