Merge e17771506100571294d43c879da6ed7807f5354f into c37c901a0c409dea77e8d68cc875c2051ab36ec5

This commit is contained in:
Daniel Guzman 2016-10-08 03:39:50 +00:00 committed by GitHub
commit 7f8fc0d3f3

View File

@ -65,7 +65,7 @@ namespace chaiscript {
struct Return { struct Return {
template<typename T> template<typename T>
auto optimize(const eval::AST_Node_Impl_Ptr<T> &p) static auto optimize(const eval::AST_Node_Impl_Ptr<T> &p)
{ {
if (p->identifier == AST_Node_Type::Def if (p->identifier == AST_Node_Type::Def
&& !p->children.empty()) && !p->children.empty())
@ -108,7 +108,7 @@ namespace chaiscript {
struct Block { struct Block {
template<typename T> template<typename T>
auto optimize(const eval::AST_Node_Impl_Ptr<T> &node) { static auto optimize(const eval::AST_Node_Impl_Ptr<T> &node) {
if (node->identifier == AST_Node_Type::Block) if (node->identifier == AST_Node_Type::Block)
{ {
if (!contains_var_decl_in_scope(node)) if (!contains_var_decl_in_scope(node))
@ -127,7 +127,7 @@ namespace chaiscript {
struct Dead_Code { struct Dead_Code {
template<typename T> template<typename T>
auto optimize(const eval::AST_Node_Impl_Ptr<T> &node) { static auto optimize(const eval::AST_Node_Impl_Ptr<T> &node) {
if (node->identifier == AST_Node_Type::Block) if (node->identifier == AST_Node_Type::Block)
{ {
std::vector<size_t> keepers; std::vector<size_t> keepers;
@ -162,7 +162,7 @@ namespace chaiscript {
struct Unused_Return { struct Unused_Return {
template<typename T> template<typename T>
auto optimize(const eval::AST_Node_Impl_Ptr<T> &node) { static auto optimize(const eval::AST_Node_Impl_Ptr<T> &node) {
if ((node->identifier == AST_Node_Type::Block if ((node->identifier == AST_Node_Type::Block
|| node->identifier == AST_Node_Type::Scopeless_Block) || node->identifier == AST_Node_Type::Scopeless_Block)
&& node->children.size() > 0) && node->children.size() > 0)
@ -195,7 +195,7 @@ namespace chaiscript {
struct If { struct If {
template<typename T> template<typename T>
auto optimize(const eval::AST_Node_Impl_Ptr<T> &node) { static auto optimize(const eval::AST_Node_Impl_Ptr<T> &node) {
if ((node->identifier == AST_Node_Type::If || node->identifier == AST_Node_Type::Ternary_Cond) if ((node->identifier == AST_Node_Type::If || node->identifier == AST_Node_Type::Ternary_Cond)
&& node->children.size() >= 2 && node->children.size() >= 2
&& node->children[0]->identifier == AST_Node_Type::Constant) && node->children[0]->identifier == AST_Node_Type::Constant)
@ -216,7 +216,7 @@ namespace chaiscript {
struct Partial_Fold { struct Partial_Fold {
template<typename T> template<typename T>
auto optimize(const eval::AST_Node_Impl_Ptr<T> &node) { static auto optimize(const eval::AST_Node_Impl_Ptr<T> &node) {
// Fold right side // Fold right side
if (node->identifier == AST_Node_Type::Binary if (node->identifier == AST_Node_Type::Binary
@ -244,7 +244,7 @@ namespace chaiscript {
struct Constant_Fold { struct Constant_Fold {
template<typename T> template<typename T>
auto optimize(const eval::AST_Node_Impl_Ptr<T> &node) { static auto optimize(const eval::AST_Node_Impl_Ptr<T> &node) {
if (node->identifier == AST_Node_Type::Prefix if (node->identifier == AST_Node_Type::Prefix
&& node->children.size() == 1 && node->children.size() == 1
@ -344,7 +344,7 @@ namespace chaiscript {
struct For_Loop { struct For_Loop {
template<typename T> template<typename T>
auto optimize(const eval::AST_Node_Impl_Ptr<T> &for_node) { static auto optimize(const eval::AST_Node_Impl_Ptr<T> &for_node) {
if (for_node->identifier != AST_Node_Type::For) { if (for_node->identifier != AST_Node_Type::For) {
return for_node; return for_node;