forked from extern/nushell
Remove Span::unknown (#525)
This commit is contained in:
@ -20,7 +20,7 @@ impl Call {
|
||||
pub fn new() -> Call {
|
||||
Self {
|
||||
decl_id: 0,
|
||||
head: Span::unknown(),
|
||||
head: Span { start: 0, end: 0 },
|
||||
positional: vec![],
|
||||
named: vec![],
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ impl ImportPattern {
|
||||
ImportPattern {
|
||||
head: ImportPatternHead {
|
||||
name: vec![],
|
||||
span: Span::unknown(),
|
||||
span: Span { start: 0, end: 0 },
|
||||
},
|
||||
members: vec![],
|
||||
hidden: HashSet::new(),
|
||||
|
@ -54,6 +54,7 @@ impl PipelineData {
|
||||
|
||||
pub fn into_value(self, span: Span) -> Value {
|
||||
match self {
|
||||
PipelineData::Value(Value::Nothing { .. }, ..) => Value::nothing(span),
|
||||
PipelineData::Value(v, ..) => v,
|
||||
PipelineData::Stream(s, ..) => Value::List {
|
||||
vals: s.collect(),
|
||||
@ -79,12 +80,16 @@ impl PipelineData {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn follow_cell_path(self, cell_path: &[PathMember]) -> Result<Value, ShellError> {
|
||||
pub fn follow_cell_path(
|
||||
self,
|
||||
cell_path: &[PathMember],
|
||||
head: Span,
|
||||
) -> Result<Value, ShellError> {
|
||||
match self {
|
||||
// FIXME: there are probably better ways of doing this
|
||||
PipelineData::Stream(stream, ..) => Value::List {
|
||||
vals: stream.collect(),
|
||||
span: Span::unknown(),
|
||||
span: head,
|
||||
}
|
||||
.follow_cell_path(cell_path),
|
||||
PipelineData::Value(v, ..) => v.follow_cell_path(cell_path),
|
||||
@ -95,12 +100,13 @@ impl PipelineData {
|
||||
&mut self,
|
||||
cell_path: &[PathMember],
|
||||
callback: Box<dyn FnOnce(&Value) -> Value>,
|
||||
head: Span,
|
||||
) -> Result<(), ShellError> {
|
||||
match self {
|
||||
// FIXME: there are probably better ways of doing this
|
||||
PipelineData::Stream(stream, ..) => Value::List {
|
||||
vals: stream.collect(),
|
||||
span: Span::unknown(),
|
||||
span: head,
|
||||
}
|
||||
.update_cell_path(cell_path, callback),
|
||||
PipelineData::Value(v, ..) => v.update_cell_path(cell_path, callback),
|
||||
|
@ -31,7 +31,8 @@ impl Span {
|
||||
Span { start, end }
|
||||
}
|
||||
|
||||
pub fn unknown() -> Span {
|
||||
/// Note: Only use this for test data, *not* live data, as it will point into unknown source when used in errors
|
||||
pub fn test_data() -> Span {
|
||||
Span { start: 0, end: 0 }
|
||||
}
|
||||
|
||||
@ -51,7 +52,7 @@ pub fn span(spans: &[Span]) -> Span {
|
||||
let length = spans.len();
|
||||
|
||||
if length == 0 {
|
||||
Span::unknown()
|
||||
panic!("Internal error: tried to create a 0-length span")
|
||||
} else if length == 1 {
|
||||
spans[0]
|
||||
} else {
|
||||
|
@ -1,112 +1,4 @@
|
||||
use crate::{ShellError, Span, Value};
|
||||
|
||||
impl From<String> for Value {
|
||||
fn from(val: String) -> Self {
|
||||
Value::String {
|
||||
val,
|
||||
span: Span::unknown(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<bool> for Value {
|
||||
fn from(val: bool) -> Self {
|
||||
Value::Bool {
|
||||
val,
|
||||
span: Span::unknown(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<u8> for Value {
|
||||
fn from(val: u8) -> Self {
|
||||
Value::Int {
|
||||
val: val as i64,
|
||||
span: Span::unknown(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<u16> for Value {
|
||||
fn from(val: u16) -> Self {
|
||||
Value::Int {
|
||||
val: val as i64,
|
||||
span: Span::unknown(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<u32> for Value {
|
||||
fn from(val: u32) -> Self {
|
||||
Value::Int {
|
||||
val: val as i64,
|
||||
span: Span::unknown(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<u64> for Value {
|
||||
fn from(val: u64) -> Self {
|
||||
Value::Int {
|
||||
val: val as i64,
|
||||
span: Span::unknown(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<i8> for Value {
|
||||
fn from(val: i8) -> Self {
|
||||
Value::Int {
|
||||
val: val as i64,
|
||||
span: Span::unknown(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<i16> for Value {
|
||||
fn from(val: i16) -> Self {
|
||||
Value::Int {
|
||||
val: val as i64,
|
||||
span: Span::unknown(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<i32> for Value {
|
||||
fn from(val: i32) -> Self {
|
||||
Value::Int {
|
||||
val: val as i64,
|
||||
span: Span::unknown(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<i64> for Value {
|
||||
fn from(val: i64) -> Self {
|
||||
Value::Int {
|
||||
val: val as i64,
|
||||
span: Span::unknown(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<f32> for Value {
|
||||
fn from(val: f32) -> Self {
|
||||
Value::Float {
|
||||
val: val as f64,
|
||||
span: Span::unknown(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<f64> for Value {
|
||||
fn from(val: f64) -> Self {
|
||||
Value::Float {
|
||||
val: val as f64,
|
||||
span: Span::unknown(),
|
||||
}
|
||||
}
|
||||
}
|
||||
use crate::{ShellError, Value};
|
||||
|
||||
impl Value {
|
||||
pub fn as_f64(&self) -> Result<f64, ShellError> {
|
||||
|
@ -673,27 +673,35 @@ impl Value {
|
||||
Value::Bool { val, span }
|
||||
}
|
||||
|
||||
// Only use these for test data. Span::unknown() should not be used in user data
|
||||
// Only use these for test data. Should not be used in user data
|
||||
pub fn test_string(s: impl Into<String>) -> Value {
|
||||
Value::String {
|
||||
val: s.into(),
|
||||
span: Span::unknown(),
|
||||
span: Span::test_data(),
|
||||
}
|
||||
}
|
||||
|
||||
// Only use these for test data. Span::unknown() should not be used in user data
|
||||
// Only use these for test data. Should not be used in user data
|
||||
pub fn test_int(val: i64) -> Value {
|
||||
Value::Int {
|
||||
val,
|
||||
span: Span::unknown(),
|
||||
span: Span::test_data(),
|
||||
}
|
||||
}
|
||||
|
||||
// Only use these for test data. Span::unknown() should not be used in user data
|
||||
// Only use these for test data. Should not be used in user data
|
||||
pub fn test_float(val: f64) -> Value {
|
||||
Value::Float {
|
||||
val,
|
||||
span: Span::unknown(),
|
||||
span: Span::test_data(),
|
||||
}
|
||||
}
|
||||
|
||||
// Only use these for test data. Should not be used in user data
|
||||
pub fn test_bool(val: bool) -> Value {
|
||||
Value::Bool {
|
||||
val,
|
||||
span: Span::test_data(),
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -701,7 +709,7 @@ impl Value {
|
||||
impl Default for Value {
|
||||
fn default() -> Self {
|
||||
Value::Nothing {
|
||||
span: Span::unknown(),
|
||||
span: Span { start: 0, end: 0 },
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ impl Range {
|
||||
let from = if let Value::Nothing { .. } = from {
|
||||
Value::Int {
|
||||
val: 0i64,
|
||||
span: Span::unknown(),
|
||||
span: expr_span,
|
||||
}
|
||||
} else {
|
||||
from
|
||||
@ -38,12 +38,12 @@ impl Range {
|
||||
if let Ok(Value::Bool { val: true, .. }) = next.lt(expr_span, &from) {
|
||||
Value::Int {
|
||||
val: -100i64,
|
||||
span: Span::unknown(),
|
||||
span: expr_span,
|
||||
}
|
||||
} else {
|
||||
Value::Int {
|
||||
val: 100i64,
|
||||
span: Span::unknown(),
|
||||
span: expr_span,
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -58,12 +58,12 @@ impl Range {
|
||||
if moves_up {
|
||||
Value::Int {
|
||||
val: 1i64,
|
||||
span: Span::unknown(),
|
||||
span: expr_span,
|
||||
}
|
||||
} else {
|
||||
Value::Int {
|
||||
val: -1i64,
|
||||
span: Span::unknown(),
|
||||
span: expr_span,
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -72,7 +72,7 @@ impl Range {
|
||||
|
||||
let zero = Value::Int {
|
||||
val: 0i64,
|
||||
span: Span::unknown(),
|
||||
span: expr_span,
|
||||
};
|
||||
|
||||
// Increment must be non-zero, otherwise we iterate forever
|
||||
|
Reference in New Issue
Block a user