8 #include <hilti/ast/declarations/parameter.h> 9 #include <hilti/ast/expression.h> 10 #include <hilti/ast/statement.h> 23 Catch(
const hilti::Declaration& param, Statement body,
Meta m =
Meta())
24 :
NodeBase(nodes(param, std::move(body)), std::move(m)) {
26 logger().internalError(
"'catch' hilti::Declaration must be parameter");
30 std::optional<hilti::declaration::Parameter> parameter()
const {
31 auto d =
childs()[0].tryAs<hilti::Declaration>();
38 const auto& body()
const {
return child<hilti::Statement>(1); }
46 bool operator==(
const Catch& other)
const {
return parameter() == other.parameter() && body() == other.body(); }
54 Try(hilti::Statement body, std::vector<try_::Catch> catches,
Meta m =
Meta())
55 :
NodeBase(nodes(std::move(body), std::move(catches)), std::move(m)) {}
57 const auto& body()
const {
return child<hilti::Statement>(0); }
58 auto catches()
const {
return childs<try_::Catch>(1, -1); }
60 bool operator==(
const Try& other)
const {
return body() == other.body() && catches() == other.catches(); }
72 auto isEqual(
const hilti::Statement& other)
const {
return node::isEqual(
this, other); }
auto & childs() const
Definition: node.h:445
auto properties() const
Definition: try.h:44
const Node none
Definition: node.cc:12
void addChild(Node n)
Definition: node.h:434
auto & _bodyNode()
Definition: try.h:63
auto properties() const
Definition: try.h:75
Definition: statement.h:14
Definition: parameter.h:45
std::map< std::string, node::detail::PropertyValue > Properties
Definition: node.h:83
auto isEqual(const hilti::Statement &other) const
Definition: try.h:72
void _addCatch(try_::Catch catch_)
Definition: try.h:69
auto & _bodyNode()
Definition: try.h:41
auto & _lastCatchNode()
Definition: try.h:66