From: marcandre-ruby-core@... Date: 2020-12-18T21:45:36+00:00 Subject: [ruby-core:101527] [Ruby master Feature#17406] Add `NoMatchingPatternError#depth` Issue #17406 has been reported by marcandre (Marc-Andre Lafortune). ---------------------------------------- Feature #17406: Add `NoMatchingPatternError#depth` https://bugs.ruby-lang.org/issues/17406 * Author: marcandre (Marc-Andre Lafortune) * Status: Open * Priority: Normal ---------------------------------------- Could we have `NoMatchingPatternError#depth`, returning the number of `case...in...end` an exception has traversed? ```ruby 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 -- https://bugs.ruby-lang.org/ Unsubscribe: