Support in operator for record and value stream

This commit is contained in:
Arthur Targaryen
2021-10-09 11:23:32 +02:00
parent 7db6b876ab
commit 7f06d6144f
3 changed files with 43 additions and 3 deletions

View File

@ -277,6 +277,7 @@ pub fn math_result_type(
(t, Type::List(u)) if type_compatible(t, u) => (Type::Bool, None),
(Type::Int | Type::Float, Type::Range) => (Type::Bool, None),
(Type::String, Type::String) => (Type::Bool, None),
(Type::String, Type::Record(_, _)) => (Type::Bool, None),
(Type::Unknown, _) => (Type::Bool, None),
(_, Type::Unknown) => (Type::Bool, None),

View File

@ -1066,9 +1066,25 @@ impl Value {
span,
}),
(lhs, Value::List { vals: rhs, .. }) => Ok(Value::Bool {
val: rhs
.iter()
.any(|x| lhs.eq(Span::unknown(), x).map_or(false, |v| v.is_true())),
val: rhs.iter().any(|x| {
matches!(
lhs.eq(Span::unknown(), x),
Ok(Value::Bool { val: true, .. })
)
}),
span,
}),
(Value::String { val: lhs, .. }, Value::Record { cols: rhs, .. }) => Ok(Value::Bool {
val: rhs.contains(lhs),
span,
}),
(lhs, Value::Stream { stream: rhs, .. }) => Ok(Value::Bool {
val: rhs.clone().any(|x| {
matches!(
lhs.eq(Span::unknown(), &x),
Ok(Value::Bool { val: true, .. })
)
}),
span,
}),
_ => Err(ShellError::OperatorMismatch {