From 6fa2a56a5cd01d7c5be0ab3495a633914be28559 Mon Sep 17 00:00:00 2001 From: Folkert Date: Wed, 4 Mar 2020 16:38:18 +0100 Subject: [PATCH] Fix doulbe Attr wrapping in List.getUnsafe --- src/unique_builtins.rs | 5 +---- tests/test_uniqueness_infer.rs | 12 ++++++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/unique_builtins.rs b/src/unique_builtins.rs index 6a01e968eb..ae23945b13 100644 --- a/src/unique_builtins.rs +++ b/src/unique_builtins.rs @@ -451,10 +451,7 @@ pub fn types() -> MutMap { 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)) diff --git a/tests/test_uniqueness_infer.rs b/tests/test_uniqueness_infer.rs index 831652fae0..b6e7a760f2 100644 --- a/tests/test_uniqueness_infer.rs +++ b/tests/test_uniqueness_infer.rs @@ -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", + ); + } }