From c58649e50879c513b0e26e04de9f9fcf176d70bd Mon Sep 17 00:00:00 2001 From: Oliver Reiche Date: Thu, 6 Jul 2023 13:59:57 +0200 Subject: LinkedMap: Simplify ::Find() methods ... to silence false-positive 'possible dangling reference' warning produced by gcc 13.2.0. --- src/buildtool/build_engine/expression/evaluator.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'src/buildtool/build_engine/expression/evaluator.cpp') diff --git a/src/buildtool/build_engine/expression/evaluator.cpp b/src/buildtool/build_engine/expression/evaluator.cpp index 1d207b3b..d2cee809 100644 --- a/src/buildtool/build_engine/expression/evaluator.cpp +++ b/src/buildtool/build_engine/expression/evaluator.cpp @@ -661,11 +661,10 @@ auto ToSubdirExpr(SubExprEvaluator&& eval, } std::string msg; try { - auto msg_val = eval(msg_expr->get(), env); + auto msg_val = eval(**msg_expr, env); msg = msg_val->ToString(); } catch (std::exception const&) { - msg = - "[non evaluating term] " + msg_expr->get()->ToString(); + msg = "[non evaluating term] " + (**msg_expr)->ToString(); } std::stringstream ss{}; ss << msg << std::endl; @@ -693,11 +692,10 @@ auto ToSubdirExpr(SubExprEvaluator&& eval, } std::string msg; try { - auto msg_val = eval(msg_expr->get(), env); + auto msg_val = eval(**msg_expr, env); msg = msg_val->ToString(); } catch (std::exception const&) { - msg = - "[non evaluating term] " + msg_expr->get()->ToString(); + msg = "[non evaluating term] " + (**msg_expr)->ToString(); } std::stringstream ss{}; ss << msg << std::endl; @@ -899,10 +897,10 @@ auto DisjointUnionExpr(SubExprEvaluator&& eval, } std::string msg; try { - auto msg_val = eval(msg_expr->get(), env); + auto msg_val = eval(**msg_expr, env); msg = msg_val->ToString(); } catch (std::exception const&) { - msg = "[non evaluating term] " + msg_expr->get()->ToString(); + msg = "[non evaluating term] " + (**msg_expr)->ToString(); } std::stringstream ss{}; ss << msg << std::endl; @@ -1098,7 +1096,7 @@ auto Evaluator::Evaluate(ExpressionPtr const& expr, auto const& type = expr["type"]->String(); auto func = functions->Find(type); if (func) { - return func->get()( + return (**func)( [&functions](auto const& subexpr, auto const& subenv) { return Evaluator::Evaluate(subexpr, subenv, functions); }, -- cgit v1.2.3