Merge pull request #104 from nushell/improved_alias_expand

Improve the alias expansion
This commit is contained in:
JT 2021-10-09 08:43:54 +13:00 committed by GitHub
commit c79dca999c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -359,7 +359,7 @@ fn parse_multispan_value(
(arg, error)
}
SyntaxShape::Expression => {
let (arg, err) = parse_expression(working_set, &spans[*spans_idx..]);
let (arg, err) = parse_expression(working_set, &spans[*spans_idx..], true);
error = error.or(err);
*spans_idx = spans.len() - 1;
@ -586,7 +586,7 @@ pub fn parse_call(
new_spans.extend(&spans[(pos + 1)..]);
}
let (result, err) = parse_call(working_set, &new_spans, false);
let (result, err) = parse_expression(working_set, &new_spans, false);
let expression = match result {
Expression {
@ -631,7 +631,7 @@ pub fn parse_call(
new_spans.extend(&spans[(pos + 1)..]);
}
let (result, err) = parse_call(working_set, &new_spans, false);
let (result, err) = parse_expression(working_set, &new_spans, false);
let expression = match result {
Expression {
@ -2832,13 +2832,14 @@ pub fn parse_math_expression(
pub fn parse_expression(
working_set: &mut StateWorkingSet,
spans: &[Span],
expand_aliases: bool,
) -> (Expression, Option<ParseError>) {
let bytes = working_set.get_span_contents(spans[0]);
match bytes[0] {
b'0' | b'1' | b'2' | b'3' | b'4' | b'5' | b'6' | b'7' | b'8' | b'9' | b'(' | b'{'
| b'[' | b'$' | b'"' | b'\'' | b'-' => parse_math_expression(working_set, spans, None),
_ => parse_call(working_set, spans, true),
_ => parse_call(working_set, spans, expand_aliases),
}
}
@ -2878,7 +2879,7 @@ pub fn parse_statement(
),
b"hide" => parse_hide(working_set, spans),
_ => {
let (expr, err) = parse_expression(working_set, spans);
let (expr, err) = parse_expression(working_set, spans, true);
(Statement::Pipeline(Pipeline::from_vec(vec![expr])), err)
}
}
@ -2914,7 +2915,7 @@ pub fn parse_block(
.commands
.iter()
.map(|command| {
let (expr, err) = parse_expression(working_set, &command.parts);
let (expr, err) = parse_expression(working_set, &command.parts, true);
if error.is_none() {
error = err;