8 #include <hilti/ast/declarations/parameter.h> 9 #include <hilti/ast/expression.h> 10 #include <hilti/ast/statement.h> 11 #include <hilti/base/logger.h> 25 :
NodeBase(nodes(param, std::move(body)), std::move(m)) {
27 logger().internalError(
"'catch' hilti::Declaration must be parameter");
32 auto parameterRef()
const {
35 const auto& body()
const {
return child<hilti::Statement>(1); }
43 bool operator==(
const Catch& other)
const {
return parameter() == other.parameter() && body() == other.body(); }
51 Try(hilti::Statement body, std::vector<try_::Catch> catches,
Meta m =
Meta())
52 :
NodeBase(nodes(std::move(body), std::move(catches)), std::move(m)) {}
54 const auto& body()
const {
return child<hilti::Statement>(0); }
55 auto catches()
const {
return children<try_::Catch>(1, -1); }
57 bool operator==(
const Try& other)
const {
return body() == other.body() && catches() == other.catches(); }
69 auto isEqual(
const hilti::Statement& other)
const {
return node::isEqual(
this, other); }
Definition: declaration.h:53
auto properties() const
Definition: try.h:41
const Node none
Definition: node.cc:14
const auto & children() const
Definition: node.h:470
void addChild(Node n)
Definition: node.h:459
auto & _bodyNode()
Definition: try.h:60
auto properties() const
Definition: try.h:72
Definition: statement.h:14
Definition: parameter.h:47
std::map< std::string, node::detail::PropertyValue > Properties
Definition: node.h:99
auto isEqual(const hilti::Statement &other) const
Definition: try.h:69
Definition: node-ref.h:44
void _addCatch(try_::Catch catch_)
Definition: try.h:66
auto & _bodyNode()
Definition: try.h:38
auto & _lastCatchNode()
Definition: try.h:63