Spicy
export.h
1 // Copyright (c) 2020-now by the Zeek Project. See LICENSE for details.
2 
3 #pragma once
4 
5 #include <utility>
6 
7 #include <hilti/ast/declaration.h>
8 #include <hilti/ast/expression.h>
9 
10 namespace hilti::declaration {
11 
13 class Export : public Declaration {
14 public:
17  if ( ! _resolved_declaration_index )
18  return nullptr;
19 
20  return context->lookup(_resolved_declaration_index);
21  }
22 
24  auto resolvedDeclarationIndex() const { return _resolved_declaration_index; }
25 
32  assert(index);
33  _resolved_declaration_index = index;
34  }
35 
36  std::string_view displayName() const final { return "export"; }
37 
38  static auto create(ASTContext* ctx, ID id, Meta meta = {}) {
39  return ctx->make<Export>(ctx, {}, std::move(id), std::move(meta));
40  }
41 
42 protected:
43  Export(ASTContext* ctx, Nodes children, ID id, Meta meta)
44  : Declaration(ctx, NodeTags, std::move(children), std::move(id), Linkage::Private, std::move(meta)) {}
45 
46  HILTI_NODE_1(declaration::Export, Declaration, final);
47 
48 private:
49  ast::DeclarationIndex _resolved_declaration_index;
50 };
51 
52 } // namespace hilti::declaration
Definition: ast-context.h:128
T * make(Args &&... args)
Definition: ast-context.h:382
Declaration * lookup(ast::DeclarationIndex index)
Definition: ast-context.cc:497
Definition: declaration.h:53
const auto & id() const
Definition: declaration.h:58
Definition: id.h:15
Definition: meta.h:30
const auto & children() const
Definition: node.h:382
const auto & meta() const
Definition: node.h:324
Definition: ast-context.h:58
Definition: export.h:13
std::string_view displayName() const final
Definition: export.h:36
void setResolvedDeclarationIndex(ASTContext *, ast::DeclarationIndex index)
Definition: export.h:31
auto resolvedDeclarationIndex() const
Definition: export.h:24
Declaration * resolvedDeclaration(ASTContext *context) const
Definition: export.h:16