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> 24 :
NodeBase(nodes(param, std::move(body)), std::move(m)) {
26 logger().internalError(
"'catch' hilti::Declaration must be parameter");
31 auto parameterRef()
const {
34 const auto& body()
const {
return child<hilti::Statement>(1); }
42 bool operator==(
const Catch& other)
const {
return parameter() == other.parameter() && body() == other.body(); }
50 Try(hilti::Statement body, std::vector<try_::Catch> catches,
Meta m =
Meta())
51 :
NodeBase(nodes(std::move(body), std::move(catches)), std::move(m)) {}
53 const auto& body()
const {
return child<hilti::Statement>(0); }
54 auto catches()
const {
return children<try_::Catch>(1, -1); }
56 bool operator==(
const Try& other)
const {
return body() == other.body() && catches() == other.catches(); }
68 auto isEqual(
const hilti::Statement& other)
const {
return node::isEqual(
this, other); }
Definition: declaration.h:53
auto properties() const
Definition: try.h:40
const Node none
Definition: node.cc:14
const auto & children() const
Definition: node.h:471
void addChild(Node n)
Definition: node.h:460
auto & _bodyNode()
Definition: try.h:59
auto properties() const
Definition: try.h:71
Definition: statement.h:14
Definition: parameter.h:46
std::map< std::string, node::detail::PropertyValue > Properties
Definition: node.h:97
auto isEqual(const hilti::Statement &other) const
Definition: try.h:68
Definition: node-ref.h:45
void _addCatch(try_::Catch catch_)
Definition: try.h:65
auto & _bodyNode()
Definition: try.h:37
auto & _lastCatchNode()
Definition: try.h:62