Fix doulbe Attr wrapping in List.getUnsafe

This commit is contained in:
Folkert 2020-03-04 16:38:18 +01:00 committed by Richard Feldman
parent 9eb52ee1d8
commit 6fa2a56a5c
2 changed files with 13 additions and 4 deletions

View File

@ -451,10 +451,7 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
add_type(
Symbol::LIST_GET_UNSAFE,
unique_function(
vec![list_type(UVAR1, TVAR1), int_type(UVAR2)],
attr_type(UVAR3, TVAR1),
),
unique_function(vec![list_type(UVAR1, TVAR1), int_type(UVAR2)], flex(TVAR1)),
);
// set : Attr (w | u | v) (List (Attr u a))

View File

@ -2087,4 +2087,16 @@ mod test_infer_uniq {
"Attr * (Attr * (List (Attr (a | b) c)) -> Attr (* | a | b) (List (Attr a c)))",
);
}
#[test]
fn set_then_get() {
infer_eq(
indoc!(
r#"
List.getUnsafe (List.set [ 12, 9, 7, 3 ] 1 42) 1
"#
),
"Attr * Int",
);
}
}