7 #include <hilti/ast/declarations/local-variable.h>
8 #include <hilti/ast/expression.h>
9 #include <hilti/ast/type.h>
11 namespace hilti::expression {
22 auto local()
const {
return child<declaration::LocalVariable>(0); }
23 auto expressions()
const {
return children<Expression>(1, {}); }
26 if (
auto* last = child<Expression>(-1) )
32 void setExpressions(
ASTContext* ctx, Expressions exprs) {
37 void removeLocal(ASTContext* ctx) {
setChild(ctx, 0,
nullptr); }
39 static auto create(ASTContext* ctx, Expressions exprs, Meta
meta = {}) {
40 Nodes nodes = {
nullptr};
41 nodes.insert(nodes.end(), exprs.begin(), exprs.end());
42 return ctx->make<Grouping>(ctx, std::move(nodes), std::move(
meta));
45 static auto create(ASTContext* ctx, declaration::LocalVariable* local, Expressions exprs, Meta
meta = {}) {
46 Nodes nodes = {local};
47 nodes.insert(nodes.end(), exprs.begin(), exprs.end());
48 return ctx->make<Grouping>(ctx, std::move(nodes), std::move(
meta));
53 : Expression(ctx, NodeTags, std::move(
children), std::move(
meta)) {}
55 HILTI_NODE_1(expression::Grouping, Expression,
final);
Definition: ast-context.h:128
Definition: expression.h:15
void setChild(ASTContext *ctx, size_t idx, Node *n)
Definition: node.h:631
const auto & children() const
Definition: node.h:382
const auto & meta() const
Definition: node.h:324
void removeChildren(int begin, std::optional< int > end)
Definition: node.h:604
void addChildren(ASTContext *ctx, const Nodes &children)
Definition: node.h:574
UnqualifiedType * type(bool follow=true) const
Definition: type.h:372
Definition: grouping.h:20
QualifiedType * type() const final
Definition: grouping.h:25