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 let Some(true) = vec.is_reference() {
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 {
false
}
@ -396,7 +401,12 @@ impl BuiltinFunction {
let (vec, el) = (&input[0], &input[1]);
if let Some(true) = vec.is_reference() {
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 {
false
}
@ -613,7 +623,11 @@ impl BuiltinFunction {
VSingleType::Tuple(vec![]),
VSingleType::Tuple(vec![v
.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 {