add treyarch const locals
This commit is contained in:
@ -415,6 +415,9 @@ stmt_expr::stmt_expr(const location& loc, ast::expr expr) : node(kind::stmt_expr
|
||||
stmt_call::stmt_call(ast::expr expr) : node(kind::stmt_call), expr(std::move(expr)) {}
|
||||
stmt_call::stmt_call(const location& loc, ast::expr expr) : node(kind::stmt_call, loc), expr(std::move(expr)) {}
|
||||
|
||||
stmt_const::stmt_const(expr_identifier::ptr lvalue, expr rvalue) : node(kind::stmt_const), lvalue(std::move(lvalue)), rvalue(std::move(rvalue)) {}
|
||||
stmt_const::stmt_const(const location& loc, expr_identifier::ptr lvalue, expr rvalue) : node(kind::stmt_const, loc), lvalue(std::move(lvalue)), rvalue(std::move(rvalue)) {}
|
||||
|
||||
stmt_assign::stmt_assign(ast::expr expr) : node(kind::stmt_assign), expr(std::move(expr)) {}
|
||||
stmt_assign::stmt_assign(const location& loc, ast::expr expr) : node(kind::stmt_assign, loc), expr(std::move(expr)) {}
|
||||
|
||||
@ -492,9 +495,6 @@ stmt_prof_end::stmt_prof_end(const location& loc, expr_arguments::ptr args) : no
|
||||
decl_thread::decl_thread(expr_identifier::ptr name, expr_parameters::ptr params, stmt_list::ptr stmt, export_flags flags) : node(kind::decl_thread), name(std::move(name)), params(std::move(params)), stmt(std::move(stmt)), flags(flags) {}
|
||||
decl_thread::decl_thread(const location& loc, expr_identifier::ptr name, expr_parameters::ptr params, stmt_list::ptr stmt, export_flags flags) : node(kind::decl_thread, loc), name(std::move(name)), params(std::move(params)), stmt(std::move(stmt)), flags(flags) {}
|
||||
|
||||
decl_constant::decl_constant(expr_identifier::ptr name, expr value) : node(kind::decl_constant), name(std::move(name)), value(std::move(value)) {}
|
||||
decl_constant::decl_constant(const location& loc, expr_identifier::ptr name, expr value) : node(kind::decl_constant, loc), name(std::move(name)), value(std::move(value)) {}
|
||||
|
||||
decl_usingtree::decl_usingtree(expr_string::ptr name) : node(kind::decl_usingtree), name(std::move(name)) {}
|
||||
decl_usingtree::decl_usingtree(const location& loc, expr_string::ptr name) : node(kind::decl_usingtree, loc), name(std::move(name)) {}
|
||||
|
||||
@ -1086,6 +1086,11 @@ auto stmt_call::print() const -> std::string
|
||||
return expr.print() + ";";
|
||||
};
|
||||
|
||||
auto stmt_const::print() const -> std::string
|
||||
{
|
||||
return "const "s + lvalue->print() + " = " + rvalue.print() + ";";
|
||||
};
|
||||
|
||||
auto stmt_assign::print() const -> std::string
|
||||
{
|
||||
return expr.print() + ";";
|
||||
@ -1382,11 +1387,6 @@ auto decl_thread::print() const -> std::string
|
||||
return data;
|
||||
}
|
||||
|
||||
auto decl_constant::print() const -> std::string
|
||||
{
|
||||
return name->print() + " = "s + value.print() + ";\n";
|
||||
}
|
||||
|
||||
auto decl_usingtree::print() const -> std::string
|
||||
{
|
||||
return "#using_animtree"s + "(" + name->print() + ");\n";
|
||||
@ -1846,6 +1846,7 @@ stmt::~stmt()
|
||||
case kind::stmt_dev: as_dev.~unique_ptr(); return;
|
||||
case kind::stmt_expr: as_expr.~unique_ptr(); return;
|
||||
case kind::stmt_call: as_call.~unique_ptr(); return;
|
||||
case kind::stmt_const: as_const.~unique_ptr(); return;
|
||||
case kind::stmt_assign: as_assign.~unique_ptr(); return;
|
||||
case kind::stmt_endon: as_endon.~unique_ptr(); return;
|
||||
case kind::stmt_notify: as_notify.~unique_ptr(); return;
|
||||
@ -1929,7 +1930,6 @@ decl::~decl()
|
||||
case kind::decl_dev_begin: as_dev_begin.~unique_ptr(); return;
|
||||
case kind::decl_dev_end: as_dev_end.~unique_ptr(); return;
|
||||
case kind::decl_thread: as_thread.~unique_ptr(); return;
|
||||
case kind::decl_constant: as_constant.~unique_ptr(); return;
|
||||
case kind::decl_usingtree: as_usingtree.~unique_ptr(); return;
|
||||
default: return;
|
||||
}
|
||||
|
@ -98,6 +98,7 @@ enum class kind
|
||||
stmt_dev,
|
||||
stmt_expr,
|
||||
stmt_call,
|
||||
stmt_const,
|
||||
stmt_assign,
|
||||
stmt_endon,
|
||||
stmt_notify,
|
||||
@ -122,7 +123,6 @@ enum class kind
|
||||
stmt_prof_begin,
|
||||
stmt_prof_end,
|
||||
decl_thread,
|
||||
decl_constant,
|
||||
decl_usingtree,
|
||||
decl_dev_begin,
|
||||
decl_dev_end,
|
||||
@ -232,6 +232,7 @@ struct stmt_list;
|
||||
struct stmt_dev;
|
||||
struct stmt_expr;
|
||||
struct stmt_call;
|
||||
struct stmt_const;
|
||||
struct stmt_assign;
|
||||
struct stmt_endon;
|
||||
struct stmt_notify;
|
||||
@ -256,7 +257,6 @@ struct stmt_breakpoint;
|
||||
struct stmt_prof_begin;
|
||||
struct stmt_prof_end;
|
||||
struct decl_thread;
|
||||
struct decl_constant;
|
||||
struct decl_usingtree;
|
||||
struct decl_dev_begin;
|
||||
struct decl_dev_end;
|
||||
@ -405,6 +405,7 @@ union stmt
|
||||
std::unique_ptr<stmt_dev> as_dev;
|
||||
std::unique_ptr<stmt_expr> as_expr;
|
||||
std::unique_ptr<stmt_call> as_call;
|
||||
std::unique_ptr<stmt_const> as_const;
|
||||
std::unique_ptr<stmt_assign> as_assign;
|
||||
std::unique_ptr<stmt_endon> as_endon;
|
||||
std::unique_ptr<stmt_notify> as_notify;
|
||||
@ -459,7 +460,6 @@ union decl
|
||||
std::unique_ptr<decl_dev_begin> as_dev_begin;
|
||||
std::unique_ptr<decl_dev_end> as_dev_end;
|
||||
std::unique_ptr<decl_usingtree> as_usingtree;
|
||||
std::unique_ptr<decl_constant> as_constant;
|
||||
std::unique_ptr<decl_thread> as_thread;
|
||||
|
||||
decl();
|
||||
@ -1457,6 +1457,18 @@ struct stmt_call : public node
|
||||
auto print() const -> std::string override;
|
||||
};
|
||||
|
||||
struct stmt_const : public node
|
||||
{
|
||||
using ptr = std::unique_ptr<stmt_const>;
|
||||
|
||||
expr_identifier::ptr lvalue;
|
||||
expr rvalue;
|
||||
|
||||
stmt_const(expr_identifier::ptr lvalue, expr rvalue);
|
||||
stmt_const(const location& loc, expr_identifier::ptr lvalue, expr rvalue);
|
||||
auto print() const -> std::string override;
|
||||
};
|
||||
|
||||
struct stmt_assign : public node
|
||||
{
|
||||
using ptr = std::unique_ptr<stmt_assign>;
|
||||
@ -1763,18 +1775,6 @@ struct decl_thread : public node
|
||||
auto print() const -> std::string override;
|
||||
};
|
||||
|
||||
struct decl_constant : public node
|
||||
{
|
||||
using ptr = std::unique_ptr<decl_constant>;
|
||||
|
||||
expr_identifier::ptr name;
|
||||
expr value;
|
||||
|
||||
decl_constant(expr_identifier::ptr name, expr value);
|
||||
decl_constant(const location& loc, expr_identifier::ptr name, expr value);
|
||||
auto print() const -> std::string override;
|
||||
};
|
||||
|
||||
struct decl_usingtree : public node
|
||||
{
|
||||
using ptr = std::unique_ptr<decl_usingtree>;
|
||||
|
Reference in New Issue
Block a user