7 #include <hilti/ast/declaration.h>
8 #include <hilti/ast/declarations/type.h>
9 #include <hilti/ast/function.h>
10 #include <hilti/ast/node-range.h>
11 #include <hilti/ast/operator-registry.h>
12 #include <hilti/ast/operator.h>
13 #include <hilti/ast/types/type.h>
15 namespace hilti::declaration {
20 auto function()
const {
return child<::hilti::Function>(0); }
37 if ( _linked_declaration_index ) {
38 auto* decl = ctx->
lookup(_linked_declaration_index);
65 if ( _linked_prototype_index ) {
66 auto* decl = ctx->
lookup(_linked_prototype_index);
79 void setOperator(
const Operator* op) { _operator = op; }
83 _linked_declaration_index = index;
86 void setLinkedPrototypeIndex(ast::DeclarationIndex index) {
88 _linked_prototype_index = index;
97 std::string_view
displayName() const final {
return "function"; }
103 declaration::Linkage
linkage = Linkage::Private,
112 HILTI_NODE_1(declaration::Function, Declaration,
final);
115 const Operator* _operator =
nullptr;
117 ast::DeclarationIndex _linked_declaration_index;
118 ast::DeclarationIndex _linked_prototype_index;
Definition: ast-context.h:128
Declaration * lookup(ast::DeclarationIndex index)
Definition: ast-context.cc:497
Definition: declaration.h:53
const auto & id() const
Definition: declaration.h:58
auto linkage() const
Definition: declaration.h:61
Definition: function.h:19
T * as() const
Definition: node.h:733
const auto & children() const
Definition: node.h:382
const auto & meta() const
Definition: node.h:324
Definition: operator.h:268
Definition: ast-context.h:58
Definition: function.h:18
auto linkedDeclarationIndex() const
Definition: function.h:51
auto linkedPrototypeIndex() const
Definition: function.h:77
std::string_view displayName() const final
Definition: function.h:97
auto operator_() const
Definition: function.h:23
ID functionID(ASTContext *ctx) const
Definition: function.cc:20
declaration::Type * linkedDeclaration(ASTContext *ctx) const
Definition: function.h:36
declaration::Function * linkedPrototype(ASTContext *ctx) const
Definition: function.h:64
node::Properties properties() const final
Definition: function.cc:12