mirror of
https://github.com/nushell/nushell.git
synced 2025-08-09 01:45:03 +02:00
Revert "Pipeline operators: &&
and ||
" (#7452)
Reverts nushell/nushell#7448 Some surprising behavior in how we do this. For example: ``` 〉if (true || false) { print "yes!" } else { print "no!" } no! 〉if (true or false) { print "yes!" } else { print "no!" } yes! ``` This means for folks who are using the old `||`, they possibly get the wrong answer once they upgrade. I don't think we can ship with that as it will catch too many people by surprise and just make it easier to write buggy code.
This commit is contained in:
@ -14,6 +14,7 @@ pub enum Redirection {
|
||||
pub enum PipelineElement {
|
||||
Expression(Option<Span>, Expression),
|
||||
Redirection(Span, Redirection, Expression),
|
||||
And(Span, Expression),
|
||||
Or(Span, Expression),
|
||||
}
|
||||
|
||||
@ -22,8 +23,9 @@ impl PipelineElement {
|
||||
match self {
|
||||
PipelineElement::Expression(None, expression) => expression.span,
|
||||
PipelineElement::Expression(Some(span), expression)
|
||||
| PipelineElement::Or(span, expression)
|
||||
| PipelineElement::Redirection(span, _, expression) => Span {
|
||||
| PipelineElement::Redirection(span, _, expression)
|
||||
| PipelineElement::And(span, expression)
|
||||
| PipelineElement::Or(span, expression) => Span {
|
||||
start: span.start,
|
||||
end: expression.span.end,
|
||||
},
|
||||
@ -33,6 +35,7 @@ impl PipelineElement {
|
||||
match self {
|
||||
PipelineElement::Expression(_, expression)
|
||||
| PipelineElement::Redirection(_, _, expression)
|
||||
| PipelineElement::And(_, expression)
|
||||
| PipelineElement::Or(_, expression) => expression.has_in_variable(working_set),
|
||||
}
|
||||
}
|
||||
@ -40,8 +43,9 @@ impl PipelineElement {
|
||||
pub fn replace_in_variable(&mut self, working_set: &mut StateWorkingSet, new_var_id: VarId) {
|
||||
match self {
|
||||
PipelineElement::Expression(_, expression)
|
||||
| PipelineElement::Or(_, expression)
|
||||
| PipelineElement::Redirection(_, _, expression) => {
|
||||
| PipelineElement::Redirection(_, _, expression)
|
||||
| PipelineElement::And(_, expression)
|
||||
| PipelineElement::Or(_, expression) => {
|
||||
expression.replace_in_variable(working_set, new_var_id)
|
||||
}
|
||||
}
|
||||
@ -55,8 +59,9 @@ impl PipelineElement {
|
||||
) {
|
||||
match self {
|
||||
PipelineElement::Expression(_, expression)
|
||||
| PipelineElement::Or(_, expression)
|
||||
| PipelineElement::Redirection(_, _, expression) => {
|
||||
| PipelineElement::Redirection(_, _, expression)
|
||||
| PipelineElement::And(_, expression)
|
||||
| PipelineElement::Or(_, expression) => {
|
||||
expression.replace_span(working_set, replaced, new_span)
|
||||
}
|
||||
}
|
||||
|
@ -113,13 +113,6 @@ impl Stack {
|
||||
.ok_or_else(|| ShellError::NushellFailed("No active overlay".into()))
|
||||
}
|
||||
|
||||
pub fn last_exit_code(&self, engine_state: &EngineState) -> Option<i64> {
|
||||
match self.get_env_var(engine_state, "LAST_EXIT_CODE") {
|
||||
Some(Value::Int { val, .. }) => Some(val),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn captures_to_stack(&self, captures: &HashMap<VarId, Value>) -> Stack {
|
||||
// FIXME: this is probably slow
|
||||
let mut env_vars = self.env_vars.clone();
|
||||
|
Reference in New Issue
Block a user