mirror of
https://github.com/nushell/nushell.git
synced 2025-08-09 06:35:56 +02:00
Improve CantFindColumn and ColumnAlreadyExists errors (#7164)
* Improve CantFindColumn and ColumnAlreadyExists errors * Update tests
This commit is contained in:
@ -411,7 +411,8 @@ Either make sure {0} is a string, or add a 'to_string' entry for it in ENV_CONVE
|
||||
#[error("Cannot find column")]
|
||||
#[diagnostic(code(nu::shell::column_not_found), url(docsrs))]
|
||||
CantFindColumn(
|
||||
#[label = "cannot find column"] Span,
|
||||
String,
|
||||
#[label = "cannot find column '{0}'"] Span,
|
||||
#[label = "value originates here"] Span,
|
||||
),
|
||||
|
||||
@ -423,7 +424,8 @@ Either make sure {0} is a string, or add a 'to_string' entry for it in ENV_CONVE
|
||||
#[error("Column already exists")]
|
||||
#[diagnostic(code(nu::shell::column_already_exists), url(docsrs))]
|
||||
ColumnAlreadyExists(
|
||||
#[label = "column already exists"] Span,
|
||||
String,
|
||||
#[label = "column '{0}' already exists"] Span,
|
||||
#[label = "value originates here"] Span,
|
||||
),
|
||||
|
||||
|
@ -718,7 +718,11 @@ impl Value {
|
||||
return Err(ShellError::DidYouMean(suggestion, *origin_span));
|
||||
}
|
||||
}
|
||||
return Err(ShellError::CantFindColumn(*origin_span, span));
|
||||
return Err(ShellError::CantFindColumn(
|
||||
column_name.to_string(),
|
||||
*origin_span,
|
||||
span,
|
||||
));
|
||||
}
|
||||
}
|
||||
Value::List { vals, span } => {
|
||||
@ -826,7 +830,13 @@ impl Value {
|
||||
}
|
||||
}
|
||||
}
|
||||
v => return Err(ShellError::CantFindColumn(*span, v.span()?)),
|
||||
v => {
|
||||
return Err(ShellError::CantFindColumn(
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
v.span()?,
|
||||
))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -856,7 +866,13 @@ impl Value {
|
||||
}
|
||||
}
|
||||
}
|
||||
v => return Err(ShellError::CantFindColumn(*span, v.span()?)),
|
||||
v => {
|
||||
return Err(ShellError::CantFindColumn(
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
v.span()?,
|
||||
))
|
||||
}
|
||||
},
|
||||
PathMember::Int { val: row_num, span } => match self {
|
||||
Value::List { vals, .. } => {
|
||||
@ -924,10 +940,20 @@ impl Value {
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
return Err(ShellError::CantFindColumn(*span, *v_span));
|
||||
return Err(ShellError::CantFindColumn(
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
*v_span,
|
||||
));
|
||||
}
|
||||
}
|
||||
v => return Err(ShellError::CantFindColumn(*span, v.span()?)),
|
||||
v => {
|
||||
return Err(ShellError::CantFindColumn(
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
v.span()?,
|
||||
))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -947,10 +973,20 @@ impl Value {
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
return Err(ShellError::CantFindColumn(*span, *v_span));
|
||||
return Err(ShellError::CantFindColumn(
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
*v_span,
|
||||
));
|
||||
}
|
||||
}
|
||||
v => return Err(ShellError::CantFindColumn(*span, v.span()?)),
|
||||
v => {
|
||||
return Err(ShellError::CantFindColumn(
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
v.span()?,
|
||||
))
|
||||
}
|
||||
},
|
||||
PathMember::Int { val: row_num, span } => match self {
|
||||
Value::List { vals, .. } => {
|
||||
@ -999,10 +1035,20 @@ impl Value {
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
return Err(ShellError::CantFindColumn(*span, *v_span));
|
||||
return Err(ShellError::CantFindColumn(
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
*v_span,
|
||||
));
|
||||
}
|
||||
}
|
||||
v => return Err(ShellError::CantFindColumn(*span, v.span()?)),
|
||||
v => {
|
||||
return Err(ShellError::CantFindColumn(
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
v.span()?,
|
||||
))
|
||||
}
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
@ -1021,11 +1067,19 @@ impl Value {
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
return Err(ShellError::CantFindColumn(*span, *v_span));
|
||||
return Err(ShellError::CantFindColumn(
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
*v_span,
|
||||
));
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
v => Err(ShellError::CantFindColumn(*span, v.span()?)),
|
||||
v => Err(ShellError::CantFindColumn(
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
v.span()?,
|
||||
)),
|
||||
},
|
||||
PathMember::Int { val: row_num, span } => match self {
|
||||
Value::List { vals, .. } => {
|
||||
@ -1065,10 +1119,20 @@ impl Value {
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
return Err(ShellError::CantFindColumn(*span, *v_span));
|
||||
return Err(ShellError::CantFindColumn(
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
*v_span,
|
||||
));
|
||||
}
|
||||
}
|
||||
v => return Err(ShellError::CantFindColumn(*span, v.span()?)),
|
||||
v => {
|
||||
return Err(ShellError::CantFindColumn(
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
v.span()?,
|
||||
))
|
||||
}
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
@ -1088,11 +1152,19 @@ impl Value {
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
return Err(ShellError::CantFindColumn(*span, *v_span));
|
||||
return Err(ShellError::CantFindColumn(
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
*v_span,
|
||||
));
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
v => Err(ShellError::CantFindColumn(*span, v.span()?)),
|
||||
v => Err(ShellError::CantFindColumn(
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
v.span()?,
|
||||
)),
|
||||
},
|
||||
PathMember::Int { val: row_num, span } => match self {
|
||||
Value::List { vals, .. } => {
|
||||
@ -1134,7 +1206,9 @@ impl Value {
|
||||
if col.0 == col_name {
|
||||
if cell_path.len() == 1 {
|
||||
return Err(ShellError::ColumnAlreadyExists(
|
||||
*span, *v_span,
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
*v_span,
|
||||
));
|
||||
} else {
|
||||
return col.1.insert_data_at_cell_path(
|
||||
@ -1165,7 +1239,11 @@ impl Value {
|
||||
for col in cols.iter().zip(vals.iter_mut()) {
|
||||
if col.0 == col_name {
|
||||
if cell_path.len() == 1 {
|
||||
return Err(ShellError::ColumnAlreadyExists(*span, *v_span));
|
||||
return Err(ShellError::ColumnAlreadyExists(
|
||||
col_name.to_string(),
|
||||
*span,
|
||||
*v_span,
|
||||
));
|
||||
} else {
|
||||
return col
|
||||
.1
|
||||
|
Reference in New Issue
Block a user