8 #include <hilti/ast/declarations/local-variable.h>
9 #include <hilti/ast/expression.h>
10 #include <hilti/ast/statement.h>
11 #include <hilti/base/logger.h>
13 namespace hilti::statement {
18 auto init()
const {
return child<hilti::declaration::LocalVariable>(0); }
19 auto condition()
const {
return child<::hilti::Expression>(1); }
20 auto true_()
const {
return child<hilti::Statement>(2); }
21 auto false_()
const {
return child<Statement>(3); }
27 return ctx->
make<
If>(ctx, {init, cond, true_, false_}, std::move(
meta));
31 return ctx->
make<
If>(ctx, {
nullptr, cond, true_, false_}, std::move(
meta));
36 if (
child(0) && !
child(0)->isA<declaration::LocalVariable>() )
37 logger().internalError(
"initialization for 'if' must be a local declaration");
Definition: ast-context.h:121
T * make(Args &&... args)
Definition: ast-context.h:366
Definition: declaration.h:48
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
T * child(unsigned int i) const
Definition: node.h:374
Definition: forward.h:758
Definition: statement.h:15