forked from extern/nushell
Change type of parameter default values to Option<Value>
(#8940)
# Description
Fixes #8939.
# User-Facing Changes
- Parameter default values will now be parsed as constants.
- If the default value is not a constant, a parser error is displayed.
# Tests + Formatting
The [only affected
test](d42c2b2dbc/src/tests/test_engine.rs (L325-L328)
)
has been updated to reflect the new behavior.
This commit is contained in:
committed by
GitHub
parent
77ca73f414
commit
e251f3a0b4
@ -338,6 +338,10 @@ pub enum ParseError {
|
||||
#[label = "parameter {0} needs to be '{1}' instead of '{2}'"] Span,
|
||||
),
|
||||
|
||||
#[error("Default values should be constant expressions.")]
|
||||
#[diagnostic(code(nu::parser::non_constant_default_value))]
|
||||
NonConstantDefaultValue(#[label = "expected a constant value"] Span),
|
||||
|
||||
#[error("Extra columns.")]
|
||||
#[diagnostic(code(nu::parser::extra_columns))]
|
||||
ExtraColumns(
|
||||
@ -472,6 +476,7 @@ impl ParseError {
|
||||
ParseError::IncompleteParser(s) => *s,
|
||||
ParseError::RestNeedsName(s) => *s,
|
||||
ParseError::ParameterMismatchType(_, _, _, s) => *s,
|
||||
ParseError::NonConstantDefaultValue(s) => *s,
|
||||
ParseError::ExtraColumns(_, s) => *s,
|
||||
ParseError::MissingColumns(_, s) => *s,
|
||||
ParseError::AssignmentMismatch(_, _, s) => *s,
|
||||
|
@ -11,6 +11,7 @@ use crate::PipelineData;
|
||||
use crate::ShellError;
|
||||
use crate::SyntaxShape;
|
||||
use crate::Type;
|
||||
use crate::Value;
|
||||
use crate::VarId;
|
||||
use std::fmt::Write;
|
||||
|
||||
@ -35,7 +36,7 @@ pub struct PositionalArg {
|
||||
|
||||
// For custom commands
|
||||
pub var_id: Option<VarId>,
|
||||
pub default_value: Option<Expression>,
|
||||
pub default_value: Option<Value>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
|
Reference in New Issue
Block a user