8 #include <hilti/ast/declaration.h> 9 #include <hilti/ast/types/reference.h> 10 #include <hilti/ast/types/struct.h> 12 #include <spicy/ast/types/unit-items/unit-hook.h> 15 namespace declaration {
21 :
NodeBase(hilti::nodes(std::move(
id), std::move(unit), hook), std::move(m)) {
23 hilti::logger().internalError(
"non-unit hook passed into declaration::UnitHook");
26 std::optional<type::Unit> unitType()
const {
27 Type t = type::effectiveType(
childs()[1].as<Type>());
30 t = x->dereferencedType();
42 const auto& unitHook()
const {
return child<type::unit::item::UnitHook>(2); }
44 bool operator==(
const UnitHook& other)
const {
45 return unitType() == other.unitType() && unitHook() == other.unitHook();
51 const auto&
id()
const {
return child<ID>(0); }
53 Linkage
linkage()
const {
return Linkage::Private; }
57 auto isEqual(
const Declaration& other)
const {
return node::isEqual(
this, other); }
NodeBase(Meta meta)
Definition: node.h:325
auto & childs() const
Definition: node.h:445
std::string displayName() const
Definition: unit-hook.h:55
bool isConstant() const
Definition: unit-hook.h:49
Definition: reference.h:86
Linkage linkage() const
Definition: unit-hook.h:53
auto properties() const
Definition: unit-hook.h:60
const NodeRef & originalNode() const
Definition: node.h:453
const auto & id() const
Definition: unit-hook.h:51
auto isEqual(const Declaration &other) const
Definition: unit-hook.h:57
Definition: unit-hook.h:14
Definition: declaration.h:15
Definition: unit-hook.h:18