forked from extern/nushell
Remove Span::unknown (#525)
This commit is contained in:
@ -72,7 +72,7 @@ pub(crate) fn deserialize_call(
|
||||
}
|
||||
|
||||
fn deserialize_positionals(
|
||||
_span: Span,
|
||||
span: Span,
|
||||
reader: evaluated_call::Reader,
|
||||
) -> Result<Vec<Value>, ShellError> {
|
||||
let positional_reader = reader
|
||||
@ -81,7 +81,7 @@ fn deserialize_positionals(
|
||||
|
||||
positional_reader
|
||||
.iter()
|
||||
.map(value::deserialize_value)
|
||||
.map(move |x| value::deserialize_value(x, span))
|
||||
.collect()
|
||||
}
|
||||
|
||||
@ -110,7 +110,7 @@ fn deserialize_named(span: Span, reader: evaluated_call::Reader) -> Result<Named
|
||||
.get_value()
|
||||
.map_err(|e| ShellError::PluginFailedToDecode(e.to_string()))?;
|
||||
|
||||
let value = value::deserialize_value(value_reader)
|
||||
let value = value::deserialize_value(value_reader, span)
|
||||
.map_err(|e| ShellError::PluginFailedToDecode(e.to_string()))?;
|
||||
|
||||
Some(value)
|
||||
|
@ -74,7 +74,7 @@ pub fn decode_call(reader: &mut impl std::io::BufRead) -> Result<PluginCall, She
|
||||
.get_input()
|
||||
.map_err(|e| ShellError::PluginFailedToDecode(e.to_string()))?;
|
||||
|
||||
let input = value::deserialize_value(input_reader)?;
|
||||
let input = value::deserialize_value(input_reader, call.head)?;
|
||||
|
||||
Ok(PluginCall::CallInfo(Box::new(CallInfo {
|
||||
name: name.to_string(),
|
||||
@ -180,9 +180,20 @@ pub fn decode_response(reader: &mut impl std::io::BufRead) -> Result<PluginRespo
|
||||
}
|
||||
Ok(plugin_response::Value(reader)) => {
|
||||
let reader = reader.map_err(|e| ShellError::PluginFailedToDecode(e.to_string()))?;
|
||||
let val = value::deserialize_value(reader)
|
||||
|
||||
let span = reader
|
||||
.get_span()
|
||||
.map_err(|e| ShellError::PluginFailedToDecode(e.to_string()))?;
|
||||
|
||||
let val = value::deserialize_value(
|
||||
reader,
|
||||
Span {
|
||||
start: span.get_start() as usize,
|
||||
end: span.get_end() as usize,
|
||||
},
|
||||
)
|
||||
.map_err(|e| ShellError::PluginFailedToDecode(e.to_string()))?;
|
||||
|
||||
Ok(PluginResponse::Value(Box::new(val)))
|
||||
}
|
||||
}
|
||||
|
@ -51,7 +51,9 @@ pub(crate) fn serialize_value(value: &Value, mut builder: value::Builder) {
|
||||
_ => {
|
||||
// If there is the need to pass other type of value to the plugin
|
||||
// we have to define the encoding for that object in this match
|
||||
Span::unknown()
|
||||
|
||||
// FIXME: put this in a proper span
|
||||
Span { start: 0, end: 0 }
|
||||
}
|
||||
};
|
||||
|
||||
@ -60,7 +62,7 @@ pub(crate) fn serialize_value(value: &Value, mut builder: value::Builder) {
|
||||
span.set_end(value_span.end as u64);
|
||||
}
|
||||
|
||||
pub(crate) fn deserialize_value(reader: value::Reader) -> Result<Value, ShellError> {
|
||||
pub(crate) fn deserialize_value(reader: value::Reader, head: Span) -> Result<Value, ShellError> {
|
||||
let span_reader = reader
|
||||
.get_span()
|
||||
.map_err(|e| ShellError::PluginFailedToDecode(e.to_string()))?;
|
||||
@ -98,7 +100,7 @@ pub(crate) fn deserialize_value(reader: value::Reader) -> Result<Value, ShellErr
|
||||
.get_vals()
|
||||
.map_err(|e| ShellError::PluginFailedToDecode(e.to_string()))?
|
||||
.iter()
|
||||
.map(deserialize_value)
|
||||
.map(move |x| deserialize_value(x, span))
|
||||
.collect::<Result<Vec<Value>, ShellError>>()?;
|
||||
|
||||
Ok(Value::Record { cols, vals, span })
|
||||
@ -108,7 +110,7 @@ pub(crate) fn deserialize_value(reader: value::Reader) -> Result<Value, ShellErr
|
||||
|
||||
let values_list = values
|
||||
.iter()
|
||||
.map(deserialize_value)
|
||||
.map(move |x| deserialize_value(x, span))
|
||||
.collect::<Result<Vec<Value>, ShellError>>()?;
|
||||
|
||||
Ok(Value::List {
|
||||
@ -116,9 +118,7 @@ pub(crate) fn deserialize_value(reader: value::Reader) -> Result<Value, ShellErr
|
||||
span,
|
||||
})
|
||||
}
|
||||
Err(capnp::NotInSchema(_)) => Ok(Value::Nothing {
|
||||
span: Span::unknown(),
|
||||
}),
|
||||
Err(capnp::NotInSchema(_)) => Ok(Value::Nothing { span: head }),
|
||||
}
|
||||
}
|
||||
|
||||
@ -147,7 +147,17 @@ mod tests {
|
||||
.get_root::<value::Reader>()
|
||||
.map_err(|e| ShellError::PluginFailedToDecode(e.to_string()))?;
|
||||
|
||||
deserialize_value(reader.reborrow())
|
||||
let span = reader
|
||||
.get_span()
|
||||
.map_err(|e| ShellError::PluginFailedToDecode(e.to_string()))?;
|
||||
|
||||
deserialize_value(
|
||||
reader.reborrow(),
|
||||
Span {
|
||||
start: span.get_start() as usize,
|
||||
end: span.get_end() as usize,
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
Reference in New Issue
Block a user