forked from extern/nushell
Refer to the span of error make
if not given (#5599)
* Refer to the span of `error make` if not given Implements #5591 Currently the span of the "throwing" `error make` Also allow to set `msg` and `label` without an additional span. * Message plus "originates from here" label
This commit is contained in:
parent
06199d731b
commit
aa88449f29
@ -36,7 +36,7 @@ impl Command for ErrorMake {
|
||||
let arg: Option<Value> = call.opt(engine_state, stack, 0)?;
|
||||
|
||||
if let Some(arg) = arg {
|
||||
Ok(make_error(&arg)
|
||||
Ok(make_error(&arg, span)
|
||||
.map(|err| Value::Error { error: err })
|
||||
.unwrap_or_else(|| Value::Error {
|
||||
error: ShellError::GenericError(
|
||||
@ -51,7 +51,7 @@ impl Command for ErrorMake {
|
||||
} else {
|
||||
input.map(
|
||||
move |value| {
|
||||
make_error(&value)
|
||||
make_error(&value, span)
|
||||
.map(|err| Value::Error { error: err })
|
||||
.unwrap_or_else(|| Value::Error {
|
||||
error: ShellError::GenericError(
|
||||
@ -89,7 +89,7 @@ impl Command for ErrorMake {
|
||||
}
|
||||
}
|
||||
|
||||
fn make_error(value: &Value) -> Option<ShellError> {
|
||||
fn make_error(value: &Value, throw_span: Span) -> Option<ShellError> {
|
||||
if let Value::Record { .. } = &value {
|
||||
let msg = value.get_data_by_key("msg");
|
||||
let label = value.get_data_by_key("label");
|
||||
@ -117,13 +117,26 @@ fn make_error(value: &Value) -> Option<ShellError> {
|
||||
None,
|
||||
Vec::new(),
|
||||
)),
|
||||
(
|
||||
None,
|
||||
None,
|
||||
Some(Value::String {
|
||||
val: label_text, ..
|
||||
}),
|
||||
) => Some(ShellError::GenericError(
|
||||
message,
|
||||
label_text,
|
||||
Some(throw_span),
|
||||
None,
|
||||
Vec::new(),
|
||||
)),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
(Some(Value::String { val: message, .. }), None) => Some(ShellError::GenericError(
|
||||
message,
|
||||
"".to_string(),
|
||||
None,
|
||||
"originates from here".to_string(),
|
||||
Some(throw_span),
|
||||
None,
|
||||
Vec::new(),
|
||||
)),
|
||||
|
Loading…
Reference in New Issue
Block a user