From 7773c4cd4d29ba2d1abe04230d9424804bb23671 Mon Sep 17 00:00:00 2001 From: JT <547158+jntrnr@users.noreply.github.com> Date: Fri, 18 Mar 2022 19:59:28 +1300 Subject: [PATCH] Fix single quote external interpolation (#4867) --- crates/nu-parser/src/parser.rs | 6 +++++- tests/shell/pipeline/commands/external.rs | 9 +++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/crates/nu-parser/src/parser.rs b/crates/nu-parser/src/parser.rs index ed7eaa7bae..bb2bc547e5 100644 --- a/crates/nu-parser/src/parser.rs +++ b/crates/nu-parser/src/parser.rs @@ -263,7 +263,11 @@ pub fn parse_external_call( let contents = working_set.get_span_contents(*span); if contents.starts_with(b"$") || contents.starts_with(b"(") { - let (arg, err) = parse_expression(working_set, &[*span], true); + let (arg, err) = parse_dollar_expr(working_set, *span); + error = error.or(err); + args.push(arg); + } else if contents.starts_with(b"(") { + let (arg, err) = parse_full_cell_path(working_set, None, *span); error = error.or(err); args.push(arg); } else { diff --git a/tests/shell/pipeline/commands/external.rs b/tests/shell/pipeline/commands/external.rs index b8791cc96b..6bb1baf677 100644 --- a/tests/shell/pipeline/commands/external.rs +++ b/tests/shell/pipeline/commands/external.rs @@ -83,8 +83,13 @@ fn execute_binary_in_string() { assert_eq!(actual.out, "$0"); } -//FIXME: jt - this is blocked on https://github.com/nushell/engine-q/issues/875 -#[ignore] +#[test] +fn single_quote_dollar_external() { + let actual = nu!(cwd: ".", r#"let author = 'JT'; ^echo $'foo=($author)'"#); + + assert_eq!(actual.out, "foo=JT"); +} + #[test] fn redirects_custom_command_external() { let actual = nu!(cwd: ".", r#"def foo [] { nu --testbin cococo foo bar }; foo | str length"#);