From 66e736dab40fcf5fcdc74168a31ec61a6591648a Mon Sep 17 00:00:00 2001 From: JT <547158+jntrnr@users.noreply.github.com> Date: Tue, 22 Mar 2022 11:57:48 +1300 Subject: [PATCH] Externals shouldn't expand aliases (#4889) --- crates/nu-command/src/strings/size.rs | 4 ++-- crates/nu-parser/src/parser.rs | 30 +++------------------------ 2 files changed, 5 insertions(+), 29 deletions(-) diff --git a/crates/nu-command/src/strings/size.rs b/crates/nu-command/src/strings/size.rs index b05645b813..d418787afa 100644 --- a/crates/nu-command/src/strings/size.rs +++ b/crates/nu-command/src/strings/size.rs @@ -436,14 +436,14 @@ fn test_count_counts_codepoints() { let counters = [Counter::CodePoints]; - let counts = uwc_count(&counters[..], &one); + let counts = uwc_count(&counters[..], one); let mut correct_counts = BTreeMap::new(); correct_counts.insert(Counter::CodePoints, 1); assert_eq!(correct_counts, counts); - let counts = uwc_count(&counters[..], &two); + let counts = uwc_count(&counters[..], two); let mut correct_counts = BTreeMap::new(); correct_counts.insert(Counter::CodePoints, 2); diff --git a/crates/nu-parser/src/parser.rs b/crates/nu-parser/src/parser.rs index d63fb6f9c2..6c0434ee89 100644 --- a/crates/nu-parser/src/parser.rs +++ b/crates/nu-parser/src/parser.rs @@ -210,6 +210,8 @@ pub fn parse_external_call( spans: &[Span], expand_aliases_denylist: &[usize], ) -> (Expression, Option) { + trace!("parse external"); + let mut args = vec![]; let head_contents = working_set.get_span_contents(spans[0]); @@ -225,33 +227,6 @@ pub fn parse_external_call( let head_contents = working_set.get_span_contents(head_span).to_vec(); - // If the word is an alias, expand it and re-parse the expression - if let Some(alias_id) = working_set.find_alias(&head_contents) { - let expansion = working_set.get_alias(alias_id); - let expansion_span = span(expansion); - - let orig_span = span(&[spans[0], spans[0]]); - let mut new_spans: Vec = expansion.to_vec(); - if spans.len() > 1 { - new_spans.extend(&spans[1..]) - } - - let expand_aliases_denylist = if let Some(alias_id) = working_set.find_alias(&head_contents) - { - let mut expand_aliases_denylist = expand_aliases_denylist.to_vec(); - expand_aliases_denylist.push(alias_id); - expand_aliases_denylist - } else { - expand_aliases_denylist.to_vec() - }; - - let (mut result, err) = - parse_external_call(working_set, &new_spans, &expand_aliases_denylist); - result.replace_span(working_set, expansion_span, orig_span); - - return (result, err); - } - let mut error = None; let head = if head_contents.starts_with(b"$") || head_contents.starts_with(b"(") { @@ -939,6 +914,7 @@ pub fn parse_call( comments: vec![], parts: new_spans.clone(), }; + let (mut result, err) = parse_builtin_commands(working_set, &lite_command, &expand_aliases_denylist);