bugfix: changing the implementation of get() to respect references broke some builtin functions which did not account for this

This commit is contained in:
mark 2023-05-26 21:55:04 +02:00
parent 82f2f028fa
commit 68c2b52ad7

View File

@ -380,7 +380,12 @@ impl BuiltinFunction {
// if vec.is_reference().is_some_and(|v| v) { // unstable // if vec.is_reference().is_some_and(|v| v) { // unstable
if let Some(true) = vec.is_reference() { if let Some(true) = vec.is_reference() {
if let Some(t) = vec.get_any(info) { if let Some(t) = vec.get_any(info) {
el.fits_in(&t, info).is_empty() el.fits_in(
&t.dereference()
.expect("running get() on &[ ...] should give a reference"),
info,
)
.is_empty()
} else { } else {
false false
} }
@ -396,7 +401,12 @@ impl BuiltinFunction {
let (vec, el) = (&input[0], &input[1]); let (vec, el) = (&input[0], &input[1]);
if let Some(true) = vec.is_reference() { if let Some(true) = vec.is_reference() {
if let Some(t) = vec.get_any(info) { if let Some(t) = vec.get_any(info) {
el.fits_in(&t, info).is_empty() el.fits_in(
&t.dereference()
.expect("running get() on a &[ ...] should give a reference."),
info,
)
.is_empty()
} else { } else {
false false
} }
@ -613,7 +623,11 @@ impl BuiltinFunction {
VSingleType::Tuple(vec![]), VSingleType::Tuple(vec![]),
VSingleType::Tuple(vec![v VSingleType::Tuple(vec![v
.get_any(info) .get_any(info)
.expect("cannot use get on this type")]), .expect("cannot use get on this type")
.dereference()
.expect(
"running get_any() on &[ ...] should give a reference...",
)]),
], ],
} }
} else { } else {