mirror of
https://github.com/nushell/nushell.git
synced 2025-08-10 04:57:50 +02:00
Replace raw usize IDs with new types (#13832)
# Description In this PR I replaced most of the raw usize IDs with [newtypes](https://doc.rust-lang.org/rust-by-example/generics/new_types.html). Some other IDs already started using new types and in this PR I did not want to touch them. To make the implementation less repetitive, I made use of a generic `Id<T>` with marker structs. If this lands I would try to move make other IDs also in this pattern. Also at some places I needed to use `cast`, I'm not sure if the type was incorrect and therefore casting not needed or if actually different ID types intermingle sometimes. # User-Facing Changes Probably few, if you got a `DeclId` via a function and placed it later again it will still work.
This commit is contained in:
@ -177,7 +177,7 @@ impl<'a> PluginExecutionContext for PluginExecutionCommandContext<'a> {
|
||||
error: "Plugin misbehaving".into(),
|
||||
msg: format!(
|
||||
"Tried to evaluate unknown block id: {}",
|
||||
closure.item.block_id
|
||||
closure.item.block_id.get()
|
||||
),
|
||||
span: Some(closure.span),
|
||||
help: None,
|
||||
@ -226,10 +226,10 @@ impl<'a> PluginExecutionContext for PluginExecutionCommandContext<'a> {
|
||||
redirect_stdout: bool,
|
||||
redirect_stderr: bool,
|
||||
) -> Result<PipelineData, ShellError> {
|
||||
if decl_id >= self.engine_state.num_decls() {
|
||||
if decl_id.get() >= self.engine_state.num_decls() {
|
||||
return Err(ShellError::GenericError {
|
||||
error: "Plugin misbehaving".into(),
|
||||
msg: format!("Tried to call unknown decl id: {}", decl_id),
|
||||
msg: format!("Tried to call unknown decl id: {}", decl_id.get()),
|
||||
span: Some(call.head),
|
||||
help: None,
|
||||
inner: vec![],
|
||||
|
@ -17,7 +17,7 @@ use nu_plugin_protocol::{
|
||||
use nu_protocol::{
|
||||
ast::{Math, Operator},
|
||||
engine::Closure,
|
||||
ByteStreamType, CustomValue, DataSource, IntoInterruptiblePipelineData, IntoSpanned,
|
||||
BlockId, ByteStreamType, CustomValue, DataSource, IntoInterruptiblePipelineData, IntoSpanned,
|
||||
PipelineData, PipelineMetadata, PluginMetadata, PluginSignature, ShellError, Signals, Span,
|
||||
Spanned, Value,
|
||||
};
|
||||
@ -431,7 +431,7 @@ fn manager_consume_engine_call_forwards_to_subscriber_with_pipeline_data() -> Re
|
||||
call: EngineCall::EvalClosure {
|
||||
closure: Spanned {
|
||||
item: Closure {
|
||||
block_id: 0,
|
||||
block_id: BlockId::new(0),
|
||||
captures: vec![],
|
||||
},
|
||||
span: Span::test_data(),
|
||||
|
@ -1,7 +1,9 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use nu_plugin_protocol::test_util::{test_plugin_custom_value, TestCustomValue};
|
||||
use nu_protocol::{engine::Closure, record, CustomValue, IntoSpanned, ShellError, Span, Value};
|
||||
use nu_protocol::{
|
||||
engine::Closure, record, BlockId, CustomValue, IntoSpanned, ShellError, Span, Value, VarId,
|
||||
};
|
||||
|
||||
use crate::{
|
||||
test_util::test_plugin_custom_value_with_source, PluginCustomValueWithSource, PluginSource,
|
||||
@ -132,8 +134,11 @@ fn check_closure_custom_values(
|
||||
fn add_source_in_nested_closure() -> Result<(), ShellError> {
|
||||
let orig_custom_val = Value::test_custom_value(Box::new(test_plugin_custom_value()));
|
||||
let mut val = Value::test_closure(Closure {
|
||||
block_id: 0,
|
||||
captures: vec![(0, orig_custom_val.clone()), (1, orig_custom_val.clone())],
|
||||
block_id: BlockId::new(0),
|
||||
captures: vec![
|
||||
(VarId::new(0), orig_custom_val.clone()),
|
||||
(VarId::new(1), orig_custom_val.clone()),
|
||||
],
|
||||
});
|
||||
let source = Arc::new(PluginSource::new_fake("foo"));
|
||||
PluginCustomValueWithSource::add_source_in(&mut val, &source)?;
|
||||
|
Reference in New Issue
Block a user