Files
core/test/rust/fixtures/failure_identity.dever
T
2026-11-03 03:32:07 +00:00

29 lines
875 B
Plaintext

type FirstProblem { error Failed(message: Text) }
type SecondProblem { error Failed(message: Text) }
type Captured {
Done(value: Int)
error First(problem: FirstProblem)
error Second(problem: SecondProblem)
}
first() (value: Int) { fail(FirstProblem.Failed("first")) }
forwardFirst() (value: Int) { value = first() }
second() (value: Int) { fail(SecondProblem.Failed("second")) }
forwardSecond() (value: Int) { value = second() }
choose(flag: true) (value: Int) { value = forwardFirst() }
choose(flag: false) (value: Int) { value = forwardSecond() }
capture(flag: Bool) (value: Captured) { value = result(choose(flag)) }
verify() (answer: Bool) recover("compare both nominal errors") {
left = capture(true)
right = capture(false)
answer = left == Captured.First(FirstProblem.Failed("first")) and right == Captured.Second(SecondProblem.Failed("second"))
}