Skip to content

Commit

Permalink
fix: make exceptions a little more useful
Browse files Browse the repository at this point in the history
  • Loading branch information
joelmoss committed Jun 7, 2024
1 parent d585139 commit 20e0d9f
Showing 1 changed file with 8 additions and 11 deletions.
19 changes: 8 additions & 11 deletions lib/delivered/signature.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,21 +28,19 @@ def sig(*sig_args, **sig_kwargs, &return_blk)

sig_args.each.with_index do |arg, i|
args[i] => ^arg
rescue NoMatchingPatternError => e
rescue NoMatchingPatternError
raise Delivered::ArgumentError,
"`#{cname}` expected #{arg.inspect} as argument #{i}, but received " \
"`#{args[i].inspect}`",
caller, cause: e
"#{cname} expected #{arg.inspect} as argument #{i}, but received " \
"`#{args[i].inspect}`"
end

unless sig_kwargs.empty?
kwargs.each do |key, value|
value => ^(sig_kwargs[key])
rescue NoMatchingPatternError => e
rescue NoMatchingPatternError
raise Delivered::ArgumentError,
"`#{cname}` expected #{sig_kwargs[key].inspect} as keyword argument :#{key}, " \
"but received `#{value.inspect}`",
caller, cause: e
"#{cname} expected #{sig_kwargs[key].inspect} as keyword argument :#{key}, " \
"but received `#{value.inspect}`"
end
end

Expand All @@ -54,11 +52,10 @@ def sig(*sig_args, **sig_kwargs, &return_blk)

begin
result => ^returns unless returns.nil?
rescue NoMatchingPatternError => e
rescue NoMatchingPatternError
raise Delivered::ArgumentError,
"`#{cname}` expected to return #{returns.inspect}, " \
"but returned `#{result.inspect}`",
caller, cause: e
"but returned `#{result.inspect}`"
end

result
Expand Down

0 comments on commit 20e0d9f

Please sign in to comment.