diff --git a/compiler/gen/tests/gen_list.rs b/compiler/gen/tests/gen_list.rs index 5820ea43aa..64384da15f 100644 --- a/compiler/gen/tests/gen_list.rs +++ b/compiler/gen/tests/gen_list.rs @@ -1028,151 +1028,151 @@ mod gen_list { }) } - // #[test] - // fn foobar2() { - // with_larger_debug_stack(|| { - // assert_evals_to!( - // indoc!( - // r#" - // quicksort : List (Num a) -> List (Num a) - // quicksort = \list -> - // quicksortHelp list 0 (List.len list - 1) - // - // - // quicksortHelp : List (Num a), Int, Int -> List (Num a) - // quicksortHelp = \list, low, high -> - // if low < high then - // when partition low high list is - // Pair partitionIndex partitioned -> - // partitioned - // |> quicksortHelp low (partitionIndex - 1) - // |> quicksortHelp (partitionIndex + 1) high - // else - // list - // - // - // swap : Int, Int, List a -> List a - // swap = \i, j, list -> - // when Pair (List.get list i) (List.get list j) is - // Pair (Ok atI) (Ok atJ) -> - // list - // |> List.set i atJ - // |> List.set j atI - // - // _ -> - // [] - // - // partition : Int, Int, List (Num a) -> [ Pair Int (List (Num a)) ] - // partition = \low, high, initialList -> - // when List.get initialList high is - // Ok pivot -> - // when partitionHelp (low - 1) low initialList high pivot is - // Pair newI newList -> - // Pair (newI + 1) (swap (newI + 1) high newList) - // - // Err _ -> - // Pair (low - 1) initialList - // - // - // partitionHelp : Int, Int, List (Num a), Int, Int -> [ Pair Int (List (Num a)) ] - // partitionHelp = \i, j, list, high, pivot -> - // # if j < high then - // if False then - // when List.get list j is - // Ok value -> - // if value <= pivot then - // partitionHelp (i + 1) (j + 1) (swap (i + 1) j list) high pivot - // else - // partitionHelp i (j + 1) list high pivot - // - // Err _ -> - // Pair i list - // else - // Pair i list - // - // - // - // quicksort [ 7, 4, 21, 19 ] - // "# - // ), - // &[19, 7, 4, 21], - // &'static [i64], - // ); - // }) - // } + #[test] + fn foobar2() { + with_larger_debug_stack(|| { + assert_evals_to!( + indoc!( + r#" + quicksort : List (Num a) -> List (Num a) + quicksort = \list -> + quicksortHelp list 0 (List.len list - 1) + + + quicksortHelp : List (Num a), Int, Int -> List (Num a) + quicksortHelp = \list, low, high -> + if low < high then + when partition low high list is + Pair partitionIndex partitioned -> + partitioned + |> quicksortHelp low (partitionIndex - 1) + |> quicksortHelp (partitionIndex + 1) high + else + list + + + swap : Int, Int, List a -> List a + swap = \i, j, list -> + when Pair (List.get list i) (List.get list j) is + Pair (Ok atI) (Ok atJ) -> + list + |> List.set i atJ + |> List.set j atI + + _ -> + [] + + partition : Int, Int, List (Num a) -> [ Pair Int (List (Num a)) ] + partition = \low, high, initialList -> + when List.get initialList high is + Ok pivot -> + when partitionHelp (low - 1) low initialList high pivot is + Pair newI newList -> + Pair (newI + 1) (swap (newI + 1) high newList) + + Err _ -> + Pair (low - 1) initialList + + + partitionHelp : Int, Int, List (Num a), Int, Int -> [ Pair Int (List (Num a)) ] + partitionHelp = \i, j, list, high, pivot -> + # if j < high then + if False then + when List.get list j is + Ok value -> + if value <= pivot then + partitionHelp (i + 1) (j + 1) (swap (i + 1) j list) high pivot + else + partitionHelp i (j + 1) list high pivot + + Err _ -> + Pair i list + else + Pair i list + + + + quicksort [ 7, 4, 21, 19 ] + "# + ), + &[19, 7, 4, 21], + &'static [i64] + ); + }) + } - // #[test] - // fn foobar() { - // with_larger_debug_stack(|| { - // assert_evals_to!( - // indoc!( - // r#" - // quicksort : List (Num a) -> List (Num a) - // quicksort = \list -> - // quicksortHelp list 0 (List.len list - 1) - // - // - // quicksortHelp : List (Num a), Int, Int -> List (Num a) - // quicksortHelp = \list, low, high -> - // if low < high then - // when partition low high list is - // Pair partitionIndex partitioned -> - // partitioned - // |> quicksortHelp low (partitionIndex - 1) - // |> quicksortHelp (partitionIndex + 1) high - // else - // list - // - // - // swap : Int, Int, List a -> List a - // swap = \i, j, list -> - // when Pair (List.get list i) (List.get list j) is - // Pair (Ok atI) (Ok atJ) -> - // list - // |> List.set i atJ - // |> List.set j atI - // - // _ -> - // [] - // - // partition : Int, Int, List (Num a) -> [ Pair Int (List (Num a)) ] - // partition = \low, high, initialList -> - // when List.get initialList high is - // Ok pivot -> - // when partitionHelp (low - 1) low initialList high pivot is - // Pair newI newList -> - // Pair (newI + 1) (swap (newI + 1) high newList) - // - // Err _ -> - // Pair (low - 1) initialList - // - // - // partitionHelp : Int, Int, List (Num a), Int, Int -> [ Pair Int (List (Num a)) ] - // partitionHelp = \i, j, list, high, pivot -> - // if j < high then - // when List.get list j is - // Ok value -> - // if value <= pivot then - // partitionHelp (i + 1) (j + 1) (swap (i + 1) j list) high pivot - // else - // partitionHelp i (j + 1) list high pivot - // - // Err _ -> - // Pair i list - // else - // Pair i list - // - // - // - // when List.first (quicksort [0x1]) is - // _ -> 4 - // "# - // ), - // 4, - // i64, - // ); - // }) - // } + #[test] + fn foobar() { + with_larger_debug_stack(|| { + assert_evals_to!( + indoc!( + r#" + quicksort : List (Num a) -> List (Num a) + quicksort = \list -> + quicksortHelp list 0 (List.len list - 1) + + + quicksortHelp : List (Num a), Int, Int -> List (Num a) + quicksortHelp = \list, low, high -> + if low < high then + when partition low high list is + Pair partitionIndex partitioned -> + partitioned + |> quicksortHelp low (partitionIndex - 1) + |> quicksortHelp (partitionIndex + 1) high + else + list + + + swap : Int, Int, List a -> List a + swap = \i, j, list -> + when Pair (List.get list i) (List.get list j) is + Pair (Ok atI) (Ok atJ) -> + list + |> List.set i atJ + |> List.set j atI + + _ -> + [] + + partition : Int, Int, List (Num a) -> [ Pair Int (List (Num a)) ] + partition = \low, high, initialList -> + when List.get initialList high is + Ok pivot -> + when partitionHelp (low - 1) low initialList high pivot is + Pair newI newList -> + Pair (newI + 1) (swap (newI + 1) high newList) + + Err _ -> + Pair (low - 1) initialList + + + partitionHelp : Int, Int, List (Num a), Int, Int -> [ Pair Int (List (Num a)) ] + partitionHelp = \i, j, list, high, pivot -> + if j < high then + when List.get list j is + Ok value -> + if value <= pivot then + partitionHelp (i + 1) (j + 1) (swap (i + 1) j list) high pivot + else + partitionHelp i (j + 1) list high pivot + + Err _ -> + Pair i list + else + Pair i list + + + + when List.first (quicksort [0x1]) is + _ -> 4 + "# + ), + 4, + i64 + ); + }) + } #[test] fn empty_list_increment_decrement() {