Skip to content

Commit 367da54

Browse files
committed
Shell: Make null_or_alternative actually look up the given variable
1 parent 1403e56 commit 367da54

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

Userland/Shell/ImmediateFunctions.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -515,9 +515,14 @@ ErrorOr<RefPtr<AST::Node>> Shell::immediate_null_or_alternative(AST::ImmediateEx
515515
return nullptr;
516516
}
517517

518-
auto value = TRY(TRY(const_cast<AST::Node&>(*arguments.first()).run(*this))->resolve_without_cast(*this));
518+
auto name = TRY(TRY(const_cast<AST::Node&>(*arguments.first()).run(*this))->resolve_as_string(*this));
519+
auto frame = find_frame_containing_local_variable(name);
520+
if (!frame)
521+
return make_ref_counted<AST::StringLiteral>(invoking_node.position(), ""_short_string, AST::StringLiteral::EnclosureType::None);
522+
523+
auto value = frame->local_variables.get(name.bytes_as_string_view()).value();
519524
if ((value->is_string() && TRY(value->resolve_as_string(*this)).is_empty()) || (value->is_list() && TRY(value->resolve_as_list(*this)).is_empty()))
520-
return make_ref_counted<AST::SyntheticNode>(invoking_node.position(), value);
525+
return make_ref_counted<AST::SyntheticNode>(invoking_node.position(), *value);
521526

522527
return arguments.last();
523528
}

0 commit comments

Comments
 (0)