Skip to content

Commit

Permalink
Fix some tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ayazhafiz committed Jan 11, 2025
1 parent ee3c71d commit a1840b1
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 82 deletions.
1 change: 0 additions & 1 deletion .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ ROC_TRACE_COMPACTION = "0"
ROC_PRINT_UNIFICATIONS_DERIVED = "0"
ROC_PRINT_MISMATCHES = "0"
ROC_PRINT_FIXPOINT_FIXING = "0"
ROC_VERIFY_RIGID_LET_GENERALIZED = "0"
ROC_VERIFY_OCCURS_ONE_RECURSION = "0"
ROC_CHECK_MONO_IR = "0"
ROC_PRINT_IR_AFTER_SPECIALIZATION = "0"
Expand Down
74 changes: 37 additions & 37 deletions crates/cli/tests/benchmarks/AStar.roc
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module [find_path, Model, initial_model, cheapest_open, reconstruct_path]
import Quicksort

find_path = \cost_fn, move_fn, start, end ->
astar(cost_fn, move_fn, end, initial_model(start))
astar (cost_fn, move_fn, end, initial_model (start))

Model position : {
evaluated : Set position,
Expand All @@ -14,43 +14,43 @@ Model position : {

initial_model : position -> Model position where position implements Hash & Eq
initial_model = \start -> {
evaluated: Set.empty({}),
open_set: Set.single(start),
costs: Dict.single(start, 0),
came_from: Dict.empty({}),
evaluated: Set.empty ({}),
open_set: Set.single (start),
costs: Dict.single (start, 0),
came_from: Dict.empty ({}),
}

cheapest_open : (position -> F64), Model position -> Result position {} where position implements Hash & Eq
cheapest_open = \cost_fn, model ->
model.open_set
|> Set.to_list
|> List.keep_oks(
\position ->
when Dict.get(model.costs, position) is
Err(_) -> Err({})
Ok(cost) -> Ok({ cost: cost + cost_fn(position), position }),
)
|> Quicksort.sort_by(.cost)
|> List.keep_oks
(
\position ->
when Dict.get (model.costs, position) is
Err _ -> Err ({})
Ok cost -> Ok ({ cost: cost + cost_fn (position), position }))
|> Quicksort.sort_by (.cost)
|> List.first
|> Result.map(.position)
|> Result.map_err(\_ -> {})
|> Result.map (.position)
|> Result.map_err (\_ -> {})

reconstruct_path : Dict position position, position -> List position where position implements Hash & Eq
reconstruct_path = \came_from, goal ->
when Dict.get(came_from, goal) is
Err(_) -> []
Ok(next) -> List.append(reconstruct_path(came_from, next), goal)
when Dict.get (came_from, goal) is
Err _ -> []
Ok next -> List.append (reconstruct_path (came_from, next), goal)

update_cost : position, position, Model position -> Model position where position implements Hash & Eq
update_cost = \current, neighbor, model ->
new_came_from =
Dict.insert(model.came_from, neighbor, current)
Dict.insert (model.came_from, neighbor, current)

new_costs =
Dict.insert(model.costs, neighbor, distance_to)
Dict.insert (model.costs, neighbor, distance_to)

distance_to =
reconstruct_path(new_came_from, neighbor)
reconstruct_path (new_came_from, neighbor)
|> List.len
|> Num.to_frac

Expand All @@ -60,48 +60,48 @@ update_cost = \current, neighbor, model ->
came_from: new_came_from,
}

when Dict.get(model.costs, neighbor) is
Err(_) ->
when Dict.get (model.costs, neighbor) is
Err _ ->
new_model

Ok(previous_distance) ->
Ok previous_distance ->
if distance_to < previous_distance then
new_model
else
model

astar : (position, position -> F64), (position -> Set position), position, Model position -> Result (List position) {} where position implements Hash & Eq
astar = \cost_fn, move_fn, goal, model ->
when cheapest_open(\source -> cost_fn(source, goal), model) is
Err({}) -> Err({})
Ok(current) ->
when cheapest_open (\source -> cost_fn (source, goal), model) is
Err {} -> Err ({})
Ok current ->
if current == goal then
Ok(reconstruct_path(model.came_from, goal))
Ok (reconstruct_path (model.came_from, goal))
else
model_popped =
{ model &
open_set: Set.remove(model.open_set, current),
evaluated: Set.insert(model.evaluated, current),
open_set: Set.remove (model.open_set, current),
evaluated: Set.insert (model.evaluated, current),
}

neighbors =
move_fn(current)
move_fn (current)

new_neighbors =
Set.difference(neighbors, model_popped.evaluated)
Set.difference (neighbors, model_popped.evaluated)

model_with_neighbors : Model position
model_with_neighbors : Model _
model_with_neighbors =
model_popped
|> &open_set(Set.union(model_popped.open_set, new_neighbors))
|> &open_set (Set.union (model_popped.open_set, new_neighbors))

walker : Model position, position -> Model position
walker = \amodel, n -> update_cost(current, n, amodel)
walker : Model _, _ -> Model _
walker = \amodel, n -> update_cost (current, n, amodel)

model_with_costs =
Set.walk(new_neighbors, model_with_neighbors, walker)
Set.walk (new_neighbors, model_with_neighbors, walker)

astar(cost_fn, move_fn, goal, model_with_costs)
astar (cost_fn, move_fn, goal, model_with_costs)

# takeStep = \moveFn, _goal, model, current ->
# modelPopped =
Expand Down
34 changes: 8 additions & 26 deletions crates/compiler/solve/tests/solve_expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2510,13 +2510,15 @@ mod solve_expr {
infer_eq_without_problem(
indoc!(
r"
empty : [Cons a (ConsList a), Nil] as ConsList a
empty = Nil
ConsList a : [Cons a (ConsList a), Nil]
empty
"
empty : ConsList _
empty = Nil
empty
"
),
"ConsList a",
"ConsList *",
);
}

Expand Down Expand Up @@ -3742,7 +3744,7 @@ mod solve_expr {
indoc!(
r"
\rec ->
{ x, y } : { x : I64, y ? Bool }*
{ x, y } : { x : I64, y ? Bool }_
{ x, y ? Bool.false } = rec
{ x, y }
Expand Down Expand Up @@ -3909,26 +3911,6 @@ mod solve_expr {
);
}

#[test]
fn double_named_rigids() {
infer_eq_without_problem(
indoc!(
r#"
app "test" provides [main] to "./platform"
main : List x
main =
empty : List x
empty = []
empty
"#
),
"List x",
);
}

#[test]
fn double_tag_application() {
infer_eq_without_problem(
Expand Down
32 changes: 16 additions & 16 deletions crates/compiler/test_gen/src/gen_primitives.rs
Original file line number Diff line number Diff line change
Expand Up @@ -662,7 +662,7 @@ fn linked_list_len_1() {
LinkedList a : [Nil, Cons a (LinkedList a)]
one : LinkedList (Int *)
one : LinkedList (Int _)
one = Cons 1 Nil
length : LinkedList a -> Int *
Expand Down Expand Up @@ -690,7 +690,7 @@ fn linked_list_len_twice_1() {
LinkedList a : [Nil, Cons a (LinkedList a)]
one : LinkedList (Int *)
one : LinkedList (Int _)
one = Cons 1 Nil
length : LinkedList a -> Int *
Expand Down Expand Up @@ -718,7 +718,7 @@ fn linked_list_len_3() {
LinkedList a : [Nil, Cons a (LinkedList a)]
three : LinkedList (Int *)
three : LinkedList (Int _)
three = Cons 3 (Cons 2 (Cons 1 Nil))
length : LinkedList a -> Int *
Expand Down Expand Up @@ -747,7 +747,7 @@ fn linked_list_sum_num_a() {
LinkedList a : [Nil, Cons a (LinkedList a)]
three : LinkedList (Int *)
three : LinkedList (Int _)
three = Cons 3 (Cons 2 (Cons 1 Nil))
Expand Down Expand Up @@ -776,7 +776,7 @@ fn linked_list_sum_int() {
LinkedList a : [Nil, Cons a (LinkedList a)]
zero : LinkedList (Int *)
zero : LinkedList (Int _)
zero = Nil
sum : LinkedList (Int a) -> Int a
Expand Down Expand Up @@ -804,7 +804,7 @@ fn linked_list_map() {
LinkedList a : [Nil, Cons a (LinkedList a)]
three : LinkedList (Int *)
three : LinkedList (Int _)
three = Cons 3 (Cons 2 (Cons 1 Nil))
sum : LinkedList (Num a) -> Num a
Expand Down Expand Up @@ -836,7 +836,7 @@ fn when_nested_maybe() {
r"
Maybe a : [Nothing, Just a]
x : Maybe (Maybe (Int a))
x : Maybe (Maybe (Int _))
x = Just (Just 41)
when x is
Expand All @@ -853,7 +853,7 @@ fn when_nested_maybe() {
r"
Maybe a : [Nothing, Just a]
x : Maybe (Maybe (Int *))
x : Maybe (Maybe (Int _))
x = Just Nothing
when x is
Expand All @@ -871,7 +871,7 @@ fn when_nested_maybe() {
r"
Maybe a : [Nothing, Just a]
x : Maybe (Maybe (Int *))
x : Maybe (Maybe (Int _))
x = Nothing
when x is
Expand Down Expand Up @@ -1402,7 +1402,7 @@ fn recursive_function_with_rigid() {
else
1 + foo { count: state.count - 1, x: state.x }
main : Int *
main : Int _
main =
foo { count: 3, x: {} }
"#
Expand Down Expand Up @@ -1517,7 +1517,7 @@ fn rbtree_balance_3() {
balance = \key, left ->
Node key left Empty
main : RedBlackTree (Int *)
main : RedBlackTree (Int _)
main =
balance 0 Empty
"#
Expand Down Expand Up @@ -1696,7 +1696,7 @@ fn nested_pattern_match_two_ways() {
_ -> 3
_ -> 3
main : Int *
main : Int _
main =
when balance Nil is
_ -> 3
Expand All @@ -1719,7 +1719,7 @@ fn nested_pattern_match_two_ways() {
Cons 1 (Cons 1 _) -> 3
_ -> 3
main : Int *
main : Int _
main =
when balance Nil is
_ -> 3
Expand Down Expand Up @@ -1751,7 +1751,7 @@ fn linked_list_guarded_double_pattern_match() {
_ -> 3
_ -> 3
main : Int *
main : Int _
main =
when balance Nil is
_ -> 3
Expand All @@ -1778,7 +1778,7 @@ fn linked_list_double_pattern_match() {
Cons _ (Cons x _) -> x
_ -> 0
main : Int *
main : Int _
main =
foo (Cons 1 (Cons 32 Nil))
"#
Expand Down Expand Up @@ -1886,7 +1886,7 @@ fn wildcard_rigid() {
@Effect inner
main : MyTask {} (Frac *)
main : MyTask {} (Frac _)
main = always {}
"#
),
Expand Down
2 changes: 1 addition & 1 deletion crates/compiler/test_gen/src/gen_result.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ fn err_type_var_annotation() {
assert_evals_to!(
indoc!(
r"
ok : Result I64 *
ok : Result I64 _
ok = Ok 3
Result.map ok (\x -> x + 1)
Expand Down
2 changes: 1 addition & 1 deletion crates/compiler/test_gen/src/gen_tags.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1075,7 +1075,7 @@ fn applied_tag_function_result() {
assert_evals_to!(
indoc!(
r#"
x : List (Result Str *)
x : List (Result Str _)
x = List.map ["a", "b"] Ok
List.keep_oks x (\y -> y)
Expand Down

0 comments on commit a1840b1

Please sign in to comment.