From 5ec139e7280e6beca4a15d5ab7dc24fa105905ad Mon Sep 17 00:00:00 2001 From: AnotherTest Date: Mon, 18 Jan 2021 10:06:13 +0330 Subject: Shell: Make 'if' expressions return the unevaluated value of blocks This makes it possible to actually put them in a sequence and cast them to commands. --- Userland/Shell/AST.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'Userland/Shell/AST.cpp') diff --git a/Userland/Shell/AST.cpp b/Userland/Shell/AST.cpp index d461b9fd6d..93dc4fee8e 100644 --- a/Userland/Shell/AST.cpp +++ b/Userland/Shell/AST.cpp @@ -1690,12 +1690,18 @@ IfCond::IfCond(Position position, Optional else_position, NonnullRefPt if (m_true_branch) { auto true_branch = m_true_branch.release_nonnull(); - m_true_branch = create(true_branch->position(), true_branch); + if (true_branch->is_execute()) + m_true_branch = static_ptr_cast(true_branch)->command(); + else + m_true_branch = move(true_branch); } if (m_false_branch) { auto false_branch = m_false_branch.release_nonnull(); - m_false_branch = create(false_branch->position(), false_branch); + if (false_branch->is_execute()) + m_false_branch = static_ptr_cast(false_branch)->command(); + else + m_false_branch = move(false_branch); } } -- cgit v1.2.3