From a64cfb6285a84cd5cffc10e36f4a398688abe6e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20N=2E=20Robalino?= Date: Mon, 24 Aug 2020 20:47:58 -0500 Subject: [PATCH] Command expression need not carry span information. --- crates/nu-cli/src/completion/engine.rs | 4 ++-- crates/nu-cli/src/evaluate/evaluator.rs | 2 +- crates/nu-parser/src/shapes.rs | 2 +- crates/nu-protocol/src/hir.rs | 15 +++++---------- 4 files changed, 9 insertions(+), 14 deletions(-) diff --git a/crates/nu-cli/src/completion/engine.rs b/crates/nu-cli/src/completion/engine.rs index 0f4b1b8dcc..9174f828a6 100644 --- a/crates/nu-cli/src/completion/engine.rs +++ b/crates/nu-cli/src/completion/engine.rs @@ -27,7 +27,7 @@ impl<'s> Flatten<'s> { Expression::Block(block) => self.completion_locations(block), Expression::Invocation(block) => self.completion_locations(block), Expression::List(exprs) => exprs.iter().flat_map(|v| self.expression(v)).collect(), - Expression::Command(span) => vec![LocationType::Command.spanned(*span)], + Expression::Command => vec![LocationType::Command.spanned(e.span)], Expression::Path(path) => self.expression(&path.head), Expression::Variable(_) => vec![LocationType::Variable.spanned(e.span)], @@ -69,7 +69,7 @@ impl<'s> Flatten<'s> { let mut result = Vec::new(); match internal.args.head.expr { - Expression::Command(_) => { + Expression::Command => { result.push(LocationType::Command.spanned(internal.name_span)); } Expression::Literal(Literal::String(_)) => { diff --git a/crates/nu-cli/src/evaluate/evaluator.rs b/crates/nu-cli/src/evaluate/evaluator.rs index 3641c7c9b8..480578d0e2 100644 --- a/crates/nu-cli/src/evaluate/evaluator.rs +++ b/crates/nu-cli/src/evaluate/evaluator.rs @@ -34,7 +34,7 @@ pub(crate) async fn evaluate_baseline_expr( Ok(UntaggedValue::string(s).into_untagged_value()) } Expression::Variable(var) => evaluate_reference(&var, it, vars, env, tag), - Expression::Command(_) => unimplemented!(), + Expression::Command => unimplemented!(), Expression::Invocation(block) => evaluate_invocation(block, registry, it, vars, env).await, Expression::ExternalCommand(_) => unimplemented!(), Expression::Binary(binary) => { diff --git a/crates/nu-parser/src/shapes.rs b/crates/nu-parser/src/shapes.rs index a39729e923..cdd1031f2c 100644 --- a/crates/nu-parser/src/shapes.rs +++ b/crates/nu-parser/src/shapes.rs @@ -26,7 +26,7 @@ pub fn expression_to_flat_shape(e: &SpannedExpression) -> Vec } output } - Expression::Command(command) => vec![FlatShape::InternalCommand.spanned(*command)], + Expression::Command => vec![FlatShape::InternalCommand.spanned(e.span)], Expression::Literal(Literal::Bare(_)) => vec![FlatShape::BareMember.spanned(e.span)], Expression::Literal(Literal::ColumnPath(_)) => vec![FlatShape::Path.spanned(e.span)], Expression::Literal(Literal::GlobPattern(_)) => { diff --git a/crates/nu-protocol/src/hir.rs b/crates/nu-protocol/src/hir.rs index 611516992d..68ba9635ef 100644 --- a/crates/nu-protocol/src/hir.rs +++ b/crates/nu-protocol/src/hir.rs @@ -35,10 +35,7 @@ impl InternalCommand { name, name_span, args: crate::hir::Call::new( - Box::new(SpannedExpression::new( - Expression::Command(name_span), - name_span, - )), + Box::new(SpannedExpression::new(Expression::Command, name_span)), full_span, ), } @@ -724,7 +721,7 @@ impl PrettyDebugWithSource for SpannedExpression { Expression::ExternalCommand(external) => { b::keyword("^") + b::keyword(external.name.span.slice(source)) } - Expression::Command(command) => b::keyword(command.slice(source)), + Expression::Command => b::keyword(self.span.slice(source)), Expression::Boolean(boolean) => match boolean { true => b::primitive("$yes"), false => b::primitive("$no"), @@ -765,9 +762,7 @@ impl PrettyDebugWithSource for SpannedExpression { "command", b::keyword("^") + b::primitive(external.name.span.slice(source)), ), - Expression::Command(command) => { - b::typed("command", b::primitive(command.slice(source))) - } + Expression::Command => b::typed("command", b::primitive(self.span.slice(source))), Expression::Boolean(boolean) => match boolean { true => b::primitive("$yes"), false => b::primitive("$no"), @@ -969,7 +964,7 @@ pub enum Expression { FilePath(PathBuf), ExternalCommand(ExternalStringCommand), - Command(Span), + Command, Invocation(hir::Block), Boolean(bool), @@ -985,7 +980,7 @@ impl ShellTypeName for Expression { match self { Expression::Literal(literal) => literal.type_name(), Expression::Synthetic(synthetic) => synthetic.type_name(), - Expression::Command(..) => "command", + Expression::Command => "command", Expression::ExternalWord => "external word", Expression::FilePath(..) => "file path", Expression::Variable(..) => "variable",