diff --git a/src/eval.cpp b/src/eval.cpp index 74ee110..ec12c7c 100644 --- a/src/eval.cpp +++ b/src/eval.cpp @@ -87,21 +87,10 @@ ASTNodePtr Eval::evalAst(ASTNodePtr ast, EnvironmentPtr env) } return result; } - else if (is(ast_raw_ptr)) { - auto result = makePtr(); - auto nodes = std::static_pointer_cast(ast)->nodes(); - for (auto node : nodes) { - ASTNodePtr eval_node = evalImpl(node, env); - if (eval_node == nullptr) { - return nullptr; - } - result->add(eval_node); - } - return result; - } - else if (is(ast_raw_ptr)) { - auto result = makePtr(); - auto nodes = std::static_pointer_cast(ast)->nodes(); + else if (is(ast_raw_ptr)) { + std::shared_ptr result = nullptr; + (is(ast_raw_ptr)) ? result = makePtr() : result = makePtr(); + auto nodes = std::static_pointer_cast(ast)->nodes(); for (auto node : nodes) { ASTNodePtr eval_node = evalImpl(node, env); if (eval_node == nullptr) {