Actions
Feature #17406
openAdd `NoMatchingPatternError#depth`
Status:
Open
Assignee:
-
Target version:
-
Description
Could we have NoMatchingPatternError#depth
, returning the number of case...in...end
an exception has traversed?
def show_depth
yield
rescue NoMatchingPatternError => e
puts "Depth: #{e.depth}"
raise
end
show_depth do
case [1,2,3]
in [x, y, z] then
show_depth do
x => [a, b] # => raises NoMatchingPatternError
end
end
end
# Prints "Depth: 0" then "Depth: 1"
This could help bring pattern match closer to a language construct people can play with.
Example usecase: implement Ractor#receive_if
as in https://bugs.ruby-lang.org/issues/17378#note-6
Actions
Like0
Like0Like0