Skip to content

Commit

Permalink
Any.is_a method is called on EnsoMultiValue now
Browse files Browse the repository at this point in the history
  • Loading branch information
JaroslavTulach committed Jan 28, 2025
1 parent 6f3e3f9 commit 34b6a3d
Showing 1 changed file with 16 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,9 @@ add_specs suite_builder =
group_builder.specify "after passing A&B value to a function expecting A argument, B becomes hidden" <|
ab = make_a_and_b
a2 = id_a ab
# checks also hidden types
a2.is_a A . should_be_true
a2.is_a B . should_be_false
a2.is_a B . should_be_true

# Passing a2 to a function expecting B fails because B part was hidden
Test.expect_panic Type_Error (id_b a2)
Expand All @@ -60,8 +61,9 @@ add_specs suite_builder =
group_builder.specify "after casting A&B to A, B part is again hidden" <|
ab = make_a_and_b
a2 = ab:A
# checks also hidden types
a2.is_a A . should_be_true
a2.is_a B . should_be_false
a2.is_a B . should_be_true

# Passing a2 to a function expecting B fails because B part was hidden
Test.expect_panic Type_Error (id_b a2)
Expand All @@ -74,8 +76,9 @@ add_specs suite_builder =
ab = make_a_and_b
b2 = id_b ab
a2 = b2:A
# checks also hidden types
a2.is_a A . should_be_true
a2.is_a B . should_be_false
a2.is_a B . should_be_true

a2.a_method.should_equal "A method"
Test.expect_panic No_Such_Method (a2.b_method)
Expand All @@ -84,7 +87,8 @@ add_specs suite_builder =
ab = make_a_and_b
a2 = id_a ab
b2 = a2:B
b2.is_a A . should_be_false
# checks also hidden types
b2.is_a A . should_be_true
b2.is_a B . should_be_true

Test.expect_panic No_Such_Method (b2.a_method)
Expand All @@ -98,13 +102,15 @@ add_specs suite_builder =
ab_as_a : A ->
ab_as_a.a_method . should_equal "A method"
ab_as_a.is_a A . should_be_true
ab_as_a.is_a B . should_be_false
# checks also hidden types
ab_as_a.is_a B . should_be_true
_ -> Test.fail "Expected ab to go to `: A` branch"

case ab of
ab_as_b : B ->
ab_as_b.b_method . should_equal "B method"
ab_as_b.is_a A . should_be_false
# checks also hidden types
ab_as_b.is_a A . should_be_true
ab_as_b.is_a B . should_be_true
_ -> Test.fail "Expected ab to go to `: B` branch"

Expand Down Expand Up @@ -141,8 +147,10 @@ add_specs suite_builder =

# We hide A&B parts by casting to C
c = abc:C
c.is_a A . should_be_false
c.is_a B . should_be_false

# is_a checks also hidden types
c.is_a A . should_be_true
c.is_a B . should_be_true
c.is_a C . should_be_true

Test.expect_panic No_Such_Method (c.a_method)
Expand Down

0 comments on commit 34b6a3d

Please # to comment.