10 #include <hilti/ast/declarations/parameter.h>
11 #include <hilti/ast/expression.h>
12 #include <hilti/ast/statement.h>
13 #include <hilti/base/logger.h>
15 namespace hilti::statement {
22 auto parameter()
const {
return child<declaration::Parameter>(0); }
23 auto body()
const {
return child<hilti::Statement>(1); }
30 return ctx->
make<
Catch>(ctx, {
nullptr, body}, std::move(
meta));
35 if (
child(0) && !
child(0)->isA<declaration::Parameter>() )
36 logger().internalError(
"'catch' first child must be parameter");
39 std::string
_dump()
const final;
44 using Catches = NodeVector<Catch>;
51 auto body()
const {
return child<hilti::Statement>(0); }
52 auto catches()
const {
return children<try_::Catch>(1, {}); }
57 return ctx->
make<
Try>(ctx, node::flatten(body, catches), std::move(
meta));
Definition: ast-context.h:121
T * make(Args &&... args)
Definition: ast-context.h:366
Definition: declaration.h:48
void addChild(ASTContext *ctx, Node *n)
Definition: node.h:522
const auto & children() const
Definition: node.h:364
const auto & meta() const
Definition: node.h:306
Node(ASTContext *ctx, node::Tags node_tags, Nodes children, Meta meta)
Definition: node.h:922
T * child(unsigned int i) const
Definition: node.h:374
Definition: forward.h:758
Definition: statement.h:15
std::string _dump() const final
Definition: try.cc:7