diff --git a/Shell/AST.cpp b/Shell/AST.cpp index 69e80ee612..d337581631 100644 --- a/Shell/AST.cpp +++ b/Shell/AST.cpp @@ -226,7 +226,7 @@ RefPtr ListConcatenate::run(RefPtr shell) for (auto& element : m_list) { if (!result) { - result = create({ element->run(shell)->resolve_without_cast(shell).release_nonnull() }); + result = create({ element->run(shell)->resolve_without_cast(shell) }); continue; } auto element_value = element->run(shell)->resolve_without_cast(shell); @@ -248,7 +248,7 @@ RefPtr ListConcatenate::run(RefPtr shell) values.append(create(result)); } - values.append(element_value.release_nonnull()); + values.append(element_value); result = create(move(values)); } @@ -1904,11 +1904,11 @@ Vector ListValue::resolve_as_list(RefPtr shell) return values; } -RefPtr ListValue::resolve_without_cast(RefPtr shell) +NonnullRefPtr ListValue::resolve_without_cast(RefPtr shell) { NonnullRefPtrVector values; for (auto& value : m_contained_values) - values.append(value.resolve_without_cast(shell).release_nonnull()); + values.append(value.resolve_without_cast(shell)); return create(move(values)); } @@ -1992,13 +1992,11 @@ Vector SimpleVariableValue::resolve_as_list(RefPtr shell) return res; } -RefPtr SimpleVariableValue::resolve_without_cast(RefPtr shell) +NonnullRefPtr SimpleVariableValue::resolve_without_cast(RefPtr shell) { - if (auto value = shell->lookup_local_variable(m_name)) - return value; - - return this; + return value.release_nonnull(); + return *this; } SpecialVariableValue::~SpecialVariableValue() diff --git a/Shell/AST.h b/Shell/AST.h index 546c9882a4..13d97c725d 100644 --- a/Shell/AST.h +++ b/Shell/AST.h @@ -168,7 +168,7 @@ class Value : public RefCounted { public: virtual Vector resolve_as_list(RefPtr) = 0; virtual Vector resolve_as_commands(RefPtr); - virtual RefPtr resolve_without_cast(RefPtr) { return this; } + virtual NonnullRefPtr resolve_without_cast(RefPtr) { return *this; } virtual ~Value(); virtual bool is_command() const { return false; } virtual bool is_glob() const { return false; } @@ -233,7 +233,7 @@ private: class ListValue final : public Value { public: virtual Vector resolve_as_list(RefPtr) override; - virtual RefPtr resolve_without_cast(RefPtr) override; + virtual NonnullRefPtr resolve_without_cast(RefPtr) override; virtual ~ListValue(); virtual bool is_list() const override { return true; } virtual bool is_list_without_resolution() const override { return true; } @@ -286,7 +286,7 @@ private: class SimpleVariableValue final : public Value { public: virtual Vector resolve_as_list(RefPtr) override; - RefPtr resolve_without_cast(RefPtr) override; + virtual NonnullRefPtr resolve_without_cast(RefPtr) override; virtual ~SimpleVariableValue(); SimpleVariableValue(String name) : m_name(move(name))