When calling a transaction with a block I can't match the result by the failure class and only by the name of the step.
To Reproduce
class TestOp
include Dry::Transaction
step :validate
def validate(input)
Contract.new.call(**input).to_monad
end
end
TestOp.new.call({}) do |m|
m.failure(Dry::Validation::Result) do |validation|
# ... <- doesn't match here
end
m.failure do
# ... <- it matches here
end
Expected behavior
It should match by the resulting class and not just by the step name.
However, if I don't call it with a block and instead I pattern match the result, it works as intended.
op = TestOp.new.call({})
case op
in Dry::Monads::Failure(Dry::Validation::Result => validation)
# <- it reaches here
end
Describe the bug
When calling a transaction with a block I can't match the result by the failure class and only by the name of the step.
To Reproduce
Expected behavior
It should match by the resulting class and not just by the step name.
However, if I don't call it with a block and instead I pattern match the result, it works as intended.
My environment