Remove usages of internal_span (#14700)

# Description
Remove usages of `internal_span` in matches and initializers. I think
this should be the last of the usages, meaning `internal_span` can
finally be refactored out of `Value`(!?)
This commit is contained in:
132ikl
2024-12-30 03:47:06 -05:00
committed by GitHub
parent 2bcf2389aa
commit 378395c22c
10 changed files with 84 additions and 94 deletions

View File

@ -1163,7 +1163,7 @@ mod test_cwd {
use crate::{
engine::{EngineState, Stack},
Span, Value,
Value,
};
use nu_path::{assert_path_eq, AbsolutePath, Path};
use tempfile::{NamedTempFile, TempDir};
@ -1226,14 +1226,7 @@ mod test_cwd {
#[test]
fn pwd_is_non_string_value() {
let mut engine_state = EngineState::new();
engine_state.add_env_var(
"PWD".into(),
Value::Glob {
val: "*".into(),
no_expand: false,
internal_span: Span::unknown(),
},
);
engine_state.add_env_var("PWD".into(), Value::test_glob("*"));
engine_state.cwd(None).unwrap_err();
}

View File

@ -774,78 +774,76 @@ mod test {
use super::Stack;
const ZERO_SPAN: Span = Span { start: 0, end: 0 };
fn string_value(s: &str) -> Value {
Value::String {
val: s.to_string(),
internal_span: ZERO_SPAN,
}
}
#[test]
fn test_children_see_inner_values() {
let mut original = Stack::new();
original.add_var(VarId::new(0), string_value("hello"));
original.add_var(VarId::new(0), Value::test_string("hello"));
let cloned = Stack::with_parent(Arc::new(original));
assert_eq!(
cloned.get_var(VarId::new(0), ZERO_SPAN),
Ok(string_value("hello"))
cloned.get_var(VarId::new(0), Span::test_data()),
Ok(Value::test_string("hello"))
);
}
#[test]
fn test_children_dont_see_deleted_values() {
let mut original = Stack::new();
original.add_var(VarId::new(0), string_value("hello"));
original.add_var(VarId::new(0), Value::test_string("hello"));
let mut cloned = Stack::with_parent(Arc::new(original));
cloned.remove_var(VarId::new(0));
assert_eq!(
cloned.get_var(VarId::new(0), ZERO_SPAN),
Err(crate::ShellError::VariableNotFoundAtRuntime { span: ZERO_SPAN })
cloned.get_var(VarId::new(0), Span::test_data()),
Err(crate::ShellError::VariableNotFoundAtRuntime {
span: Span::test_data()
})
);
}
#[test]
fn test_children_changes_override_parent() {
let mut original = Stack::new();
original.add_var(VarId::new(0), string_value("hello"));
original.add_var(VarId::new(0), Value::test_string("hello"));
let mut cloned = Stack::with_parent(Arc::new(original));
cloned.add_var(VarId::new(0), string_value("there"));
cloned.add_var(VarId::new(0), Value::test_string("there"));
assert_eq!(
cloned.get_var(VarId::new(0), ZERO_SPAN),
Ok(string_value("there"))
cloned.get_var(VarId::new(0), Span::test_data()),
Ok(Value::test_string("there"))
);
cloned.remove_var(VarId::new(0));
// the underlying value shouldn't magically re-appear
assert_eq!(
cloned.get_var(VarId::new(0), ZERO_SPAN),
Err(crate::ShellError::VariableNotFoundAtRuntime { span: ZERO_SPAN })
cloned.get_var(VarId::new(0), Span::test_data()),
Err(crate::ShellError::VariableNotFoundAtRuntime {
span: Span::test_data()
})
);
}
#[test]
fn test_children_changes_persist_in_offspring() {
let mut original = Stack::new();
original.add_var(VarId::new(0), string_value("hello"));
original.add_var(VarId::new(0), Value::test_string("hello"));
let mut cloned = Stack::with_parent(Arc::new(original));
cloned.add_var(VarId::new(1), string_value("there"));
cloned.add_var(VarId::new(1), Value::test_string("there"));
cloned.remove_var(VarId::new(0));
let cloned = Stack::with_parent(Arc::new(cloned));
assert_eq!(
cloned.get_var(VarId::new(0), ZERO_SPAN),
Err(crate::ShellError::VariableNotFoundAtRuntime { span: ZERO_SPAN })
cloned.get_var(VarId::new(0), Span::test_data()),
Err(crate::ShellError::VariableNotFoundAtRuntime {
span: Span::test_data()
})
);
assert_eq!(
cloned.get_var(VarId::new(1), ZERO_SPAN),
Ok(string_value("there"))
cloned.get_var(VarId::new(1), Span::test_data()),
Ok(Value::test_string("there"))
);
}
@ -853,33 +851,38 @@ mod test {
fn test_merging_children_back_to_parent() {
let mut original = Stack::new();
let engine_state = EngineState::new();
original.add_var(VarId::new(0), string_value("hello"));
original.add_var(VarId::new(0), Value::test_string("hello"));
let original_arc = Arc::new(original);
let mut cloned = Stack::with_parent(original_arc.clone());
cloned.add_var(VarId::new(1), string_value("there"));
cloned.add_var(VarId::new(1), Value::test_string("there"));
cloned.remove_var(VarId::new(0));
cloned.add_env_var("ADDED_IN_CHILD".to_string(), string_value("New Env Var"));
cloned.add_env_var(
"ADDED_IN_CHILD".to_string(),
Value::test_string("New Env Var"),
);
let original = Stack::with_changes_from_child(original_arc, cloned);
assert_eq!(
original.get_var(VarId::new(0), ZERO_SPAN),
Err(crate::ShellError::VariableNotFoundAtRuntime { span: ZERO_SPAN })
original.get_var(VarId::new(0), Span::test_data()),
Err(crate::ShellError::VariableNotFoundAtRuntime {
span: Span::test_data()
})
);
assert_eq!(
original.get_var(VarId::new(1), ZERO_SPAN),
Ok(string_value("there"))
original.get_var(VarId::new(1), Span::test_data()),
Ok(Value::test_string("there"))
);
assert_eq!(
original
.get_env_var(&engine_state, "ADDED_IN_CHILD")
.cloned(),
Some(string_value("New Env Var")),
Some(Value::test_string("New Env Var")),
);
}
}