9 #include <hilti/ast/declaration.h>
10 #include <hilti/ast/declarations/expression.h>
11 #include <hilti/ast/expression.h>
12 #include <hilti/ast/type.h>
14 namespace hilti::declaration {
34 auto type()
const {
return child<QualifiedType>(0); }
35 auto init()
const {
return child<hilti::Expression>(1); }
37 auto typeArguments()
const {
return children<hilti::Expression>(2, {}); }
42 void setTypeArguments(
ASTContext* ctx, Expressions args) {
47 std::string_view
displayName() const final {
return "local variable"; }
51 return ctx->
make<LocalVariable>(ctx, node::flatten(type->
recreateAsLhs(ctx), init, std::move(args)),
52 std::move(
id), std::move(
meta));
55 static auto create(ASTContext* ctx, ID
id, QualifiedType* type,
hilti::Expression* init, Meta
meta = {}) {
56 return create(ctx, std::move(
id), type->recreateAsLhs(ctx), {}, init, std::move(
meta));
59 static auto create(ASTContext* ctx, ID
id, QualifiedType* type, Meta
meta = {}) {
60 return create(ctx, std::move(
id), type->recreateAsLhs(ctx), {},
nullptr, std::move(
meta));
67 static auto create(ASTContext* ctx, ID
id,
const Meta&
meta = {}) {
72 LocalVariable(ASTContext* ctx, Nodes
children, ID
id, Meta
meta)
73 : Declaration(ctx, NodeTags, std::move(
children), std::move(
id), declaration::Linkage::Private,
76 HILTI_NODE_1(declaration::LocalVariable, Declaration,
final);
Definition: ast-context.h:121
T * make(Args &&... args)
Definition: ast-context.h:366
Definition: declaration.h:48
const auto & id() const
Definition: declaration.h:53
Definition: expression.h:15
void setChild(ASTContext *ctx, size_t idx, Node *n)
Definition: node.h:602
const auto & children() const
Definition: node.h:364
const auto & meta() const
Definition: node.h:306
void removeChildren(int begin, std::optional< int > end)
Definition: node.h:575
void addChildren(ASTContext *ctx, const Nodes &children)
Definition: node.h:545
auto recreateAsLhs(ASTContext *ctx) const
Definition: type.h:496
static QualifiedType * createAuto(ASTContext *ctx, const Meta &m=Meta())
Definition: type.cc:121
Definition: local-variable.h:32
std::string_view displayName() const final
Definition: local-variable.h:47
void init()
Definition: init.cc:21