mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-28 06:14:46 +00:00
Merge remote-tracking branch 'origin/main' into repl
This commit is contained in:
commit
220c362671
93 changed files with 2865 additions and 1771 deletions
|
@ -71,7 +71,7 @@ fn num_floor_division() {
|
|||
fn num_floor_checked_division_success() {
|
||||
expect_success(
|
||||
"Num.divTruncChecked 4 3",
|
||||
"Ok 1 : Result (Int *) [DivByZero]*",
|
||||
"Ok 1 : Result (Int *) [DivByZero]",
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -80,7 +80,7 @@ fn num_floor_checked_division_success() {
|
|||
fn num_floor_checked_division_divby_zero() {
|
||||
expect_success(
|
||||
"Num.divTruncChecked 4 0",
|
||||
"Err DivByZero : Result (Int *) [DivByZero]*",
|
||||
"Err DivByZero : Result (Int *) [DivByZero]",
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -95,7 +95,7 @@ fn num_ceil_division() {
|
|||
fn num_ceil_checked_division_success() {
|
||||
expect_success(
|
||||
"Num.divCeilChecked 4 3",
|
||||
"Ok 2 : Result (Int *) [DivByZero]*",
|
||||
"Ok 2 : Result (Int *) [DivByZero]",
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -145,26 +145,26 @@ fn bool_false() {
|
|||
|
||||
#[test]
|
||||
fn arbitrary_tag_unions() {
|
||||
expect_success("if 1 == 1 then Red else Green", "Red : [Green, Red]*");
|
||||
expect_success("if 1 != 1 then Red else Green", "Green : [Green, Red]*");
|
||||
expect_success("if 1 == 1 then Red else Green", "Red : [Green, Red]");
|
||||
expect_success("if 1 != 1 then Red else Green", "Green : [Green, Red]");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn tag_without_arguments() {
|
||||
expect_success("True", "True : [True]*");
|
||||
expect_success("False", "False : [False]*");
|
||||
expect_success("True", "True : [True]");
|
||||
expect_success("False", "False : [False]");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn byte_tag_union() {
|
||||
expect_success(
|
||||
"if 1 == 1 then Red else if 1 == 1 then Green else Blue",
|
||||
"Red : [Blue, Green, Red]*",
|
||||
"Red : [Blue, Green, Red]",
|
||||
);
|
||||
|
||||
expect_success(
|
||||
"{ y: { x: if 1 == 1 then Red else if 1 == 1 then Green else Blue } }",
|
||||
"{ y: { x: Red } } : { y : { x : [Blue, Green, Red]* } }",
|
||||
"{ y: { x: Red } } : { y : { x : [Blue, Green, Red] } }",
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -172,24 +172,24 @@ fn byte_tag_union() {
|
|||
fn tag_in_record() {
|
||||
expect_success(
|
||||
"{ x: Foo 1 2 3, y : 4 }",
|
||||
"{ x: Foo 1 2 3, y: 4 } : { x : [Foo (Num *) (Num *) (Num *)]*, y : Num * }",
|
||||
"{ x: Foo 1 2 3, y: 4 } : { x : [Foo (Num *) (Num *) (Num *)], y : Num * }",
|
||||
);
|
||||
expect_success(
|
||||
"{ x: Foo 1 2 3 }",
|
||||
"{ x: Foo 1 2 3 } : { x : [Foo (Num *) (Num *) (Num *)]* }",
|
||||
"{ x: Foo 1 2 3 } : { x : [Foo (Num *) (Num *) (Num *)] }",
|
||||
);
|
||||
expect_success("{ x: Unit }", "{ x: Unit } : { x : [Unit]* }");
|
||||
expect_success("{ x: Unit }", "{ x: Unit } : { x : [Unit] }");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn single_element_tag_union() {
|
||||
expect_success("True 1", "True 1 : [True (Num *)]*");
|
||||
expect_success("Foo 1 3.14", "Foo 1 3.14 : [Foo (Num *) (Float *)]*");
|
||||
expect_success("True 1", "True 1 : [True (Num *)]");
|
||||
expect_success("Foo 1 3.14", "Foo 1 3.14 : [Foo (Num *) (Float *)]");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn newtype_of_unit() {
|
||||
expect_success("Foo Bar", "Foo Bar : [Foo [Bar]*]*");
|
||||
expect_success("Foo Bar", "Foo Bar : [Foo [Bar]]");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -202,7 +202,7 @@ fn newtype_of_big_data() {
|
|||
lefty = Left "loosey"
|
||||
A lefty"#
|
||||
),
|
||||
r#"A (Left "loosey") : [A (Either Str Str)]*"#,
|
||||
r#"A (Left "loosey") : [A (Either Str Str)]"#,
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -216,7 +216,7 @@ fn newtype_nested() {
|
|||
lefty = Left "loosey"
|
||||
A (B (C lefty))"#
|
||||
),
|
||||
r#"A (B (C (Left "loosey"))) : [A [B [C (Either Str Str)]*]*]*"#,
|
||||
r#"A (B (C (Left "loosey"))) : [A [B [C (Either Str Str)]]]"#,
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -230,17 +230,17 @@ fn newtype_of_big_of_newtype() {
|
|||
big = Big "s" (Wrapper (Newtype "t"))
|
||||
A big"#
|
||||
),
|
||||
r#"A (Big "s" (Wrapper (Newtype "t"))) : [A (Big Str)]*"#,
|
||||
r#"A (Big "s" (Wrapper (Newtype "t"))) : [A (Big Str)]"#,
|
||||
)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn tag_with_arguments() {
|
||||
expect_success("True 1", "True 1 : [True (Num *)]*");
|
||||
expect_success("True 1", "True 1 : [True (Num *)]");
|
||||
|
||||
expect_success(
|
||||
"if 1 == 1 then True 3 else False 3.14",
|
||||
"True 3 : [False (Float *), True (Num *)]*",
|
||||
"True 3 : [False (Float *), True (Num *)]",
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -378,30 +378,30 @@ fn num_mul_saturated() {
|
|||
#[cfg(not(feature = "wasm"))]
|
||||
#[test]
|
||||
fn num_add_checked() {
|
||||
expect_success("Num.addChecked 1 1", "Ok 2 : Result (Num *) [Overflow]*");
|
||||
expect_success("Num.addChecked 1 1", "Ok 2 : Result (Num *) [Overflow]");
|
||||
expect_success(
|
||||
"Num.addChecked Num.maxI64 1",
|
||||
"Err Overflow : Result I64 [Overflow]*",
|
||||
"Err Overflow : Result I64 [Overflow]",
|
||||
);
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "wasm"))]
|
||||
#[test]
|
||||
fn num_sub_checked() {
|
||||
expect_success("Num.subChecked 1 1", "Ok 0 : Result (Num *) [Overflow]*");
|
||||
expect_success("Num.subChecked 1 1", "Ok 0 : Result (Num *) [Overflow]");
|
||||
expect_success(
|
||||
"Num.subChecked Num.minI64 1",
|
||||
"Err Overflow : Result I64 [Overflow]*",
|
||||
"Err Overflow : Result I64 [Overflow]",
|
||||
);
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "wasm"))]
|
||||
#[test]
|
||||
fn num_mul_checked() {
|
||||
expect_success("Num.mulChecked 20 2", "Ok 40 : Result (Num *) [Overflow]*");
|
||||
expect_success("Num.mulChecked 20 2", "Ok 40 : Result (Num *) [Overflow]");
|
||||
expect_success(
|
||||
"Num.mulChecked Num.maxI64 2",
|
||||
"Err Overflow : Result I64 [Overflow]*",
|
||||
"Err Overflow : Result I64 [Overflow]",
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -435,11 +435,11 @@ fn list_sum() {
|
|||
fn list_first() {
|
||||
expect_success(
|
||||
"List.first [12, 9, 6, 3]",
|
||||
"Ok 12 : Result (Num *) [ListWasEmpty]*",
|
||||
"Ok 12 : Result (Num *) [ListWasEmpty]",
|
||||
);
|
||||
expect_success(
|
||||
"List.first []",
|
||||
"Err ListWasEmpty : Result a [ListWasEmpty]*",
|
||||
"Err ListWasEmpty : Result a [ListWasEmpty]",
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -448,13 +448,10 @@ fn list_first() {
|
|||
fn list_last() {
|
||||
expect_success(
|
||||
"List.last [12, 9, 6, 3]",
|
||||
"Ok 3 : Result (Num *) [ListWasEmpty]*",
|
||||
"Ok 3 : Result (Num *) [ListWasEmpty]",
|
||||
);
|
||||
|
||||
expect_success(
|
||||
"List.last []",
|
||||
"Err ListWasEmpty : Result a [ListWasEmpty]*",
|
||||
);
|
||||
expect_success("List.last []", "Err ListWasEmpty : Result a [ListWasEmpty]");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -672,7 +669,7 @@ fn type_problem() {
|
|||
|
||||
But add needs its 2nd argument to be:
|
||||
|
||||
Num a
|
||||
Num *
|
||||
"#
|
||||
),
|
||||
);
|
||||
|
@ -680,18 +677,18 @@ fn type_problem() {
|
|||
|
||||
#[test]
|
||||
fn issue_2149() {
|
||||
expect_success(r#"Str.toI8 "127""#, "Ok 127 : Result I8 [InvalidNumStr]*");
|
||||
expect_success(r#"Str.toI8 "127""#, "Ok 127 : Result I8 [InvalidNumStr]");
|
||||
expect_success(
|
||||
r#"Str.toI8 "128""#,
|
||||
"Err InvalidNumStr : Result I8 [InvalidNumStr]*",
|
||||
"Err InvalidNumStr : Result I8 [InvalidNumStr]",
|
||||
);
|
||||
expect_success(
|
||||
r#"Str.toI16 "32767""#,
|
||||
"Ok 32767 : Result I16 [InvalidNumStr]*",
|
||||
"Ok 32767 : Result I16 [InvalidNumStr]",
|
||||
);
|
||||
expect_success(
|
||||
r#"Str.toI16 "32768""#,
|
||||
"Err InvalidNumStr : Result I16 [InvalidNumStr]*",
|
||||
"Err InvalidNumStr : Result I16 [InvalidNumStr]",
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -912,7 +909,7 @@ fn function_in_unwrapped_record() {
|
|||
fn function_in_tag() {
|
||||
expect_success(
|
||||
r#"Adder (\x -> x + 1)"#,
|
||||
r#"Adder <function> : [Adder (Num a -> Num a)]*"#,
|
||||
r#"Adder <function> : [Adder (Num a -> Num a)]"#,
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -920,7 +917,7 @@ fn function_in_tag() {
|
|||
fn newtype_of_record_of_tag_of_record_of_tag() {
|
||||
expect_success(
|
||||
r#"A {b: C {d: 1}}"#,
|
||||
r#"A { b: C { d: 1 } } : [A { b : [C { d : Num * }]* }]*"#,
|
||||
r#"A { b: C { d: 1 } } : [A { b : [C { d : Num * }] }]"#,
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -1078,7 +1075,7 @@ fn opaque_pattern_and_call() {
|
|||
|
||||
f (@F (Package A {}))"#
|
||||
),
|
||||
r#"@F (Package {} A) : F {} [A]*"#,
|
||||
r#"@F (Package {} A) : F {} [A]"#,
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -1140,7 +1137,7 @@ fn box_box_type_alias() {
|
|||
fn issue_2582_specialize_result_value() {
|
||||
expect_success(
|
||||
r#"\x, list -> if x > 0 then List.first list else Ok """#,
|
||||
r"<function> : Num *, List Str -> Result Str [ListWasEmpty]*",
|
||||
r"<function> : Num *, List Str -> Result Str [ListWasEmpty]",
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -1212,7 +1209,7 @@ fn dict_get_single() {
|
|||
r#"
|
||||
Dict.single 0 {a: 1, c: 2} |> Dict.get 0"#
|
||||
),
|
||||
r#"Ok { a: 1, c: 2 } : Result { a : Num *, c : Num * } [KeyNotFound]*"#,
|
||||
r#"Ok { a: 1, c: 2 } : Result { a : Num *, c : Num * } [KeyNotFound]"#,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue