From: eregontp@... Date: 2019-04-06T19:14:08+00:00 Subject: [ruby-core:92168] [Ruby trunk Feature#15751] Add FrozenError#receiver Issue #15751 has been updated by Eregon (Benoit Daloze). `NameError#initialize` uses a keyword argument for `receiver`, so I it makes some sense to be consistent. OTOH, keyword arguments often imply extra processing, especially if the caller is not Ruby code, so I actually find the positional argument version simpler. And indeed, I don't think extra arguments will be needed for `FrozenError#initialize`. In the patch in `rb_raise_frozen_error`, `exc` is used for both the message and the exception object, could you use different variables? I find it confusing to use the same and re-assign it when there is no need. ---------------------------------------- Feature #15751: Add FrozenError#receiver https://bugs.ruby-lang.org/issues/15751#change-77495 * Author: jeremyevans0 (Jeremy Evans) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- Similar to `NameError#receiver`, this returns the object on which the modification was attempted. This is useful as it can pinpoint exactly what is frozen, as in many cases when a `FrozenError` is raised, you cannot determine from the context which object is frozen that you expect not to be. I'm not sure that using name_err_receiver as the C function for `FrozenError#receiver` is acceptable, but it doesn't appear to cause problems. Users of the current `rb_error_frozen` C function will have to switch to using `rb_error_frozen_object` or the new `rb_raise_frozen_error` in order to set the receiver of the `FrozenError`. Patch to implement this feature is attached. ---Files-------------------------------- Add-FrozenError-receiver.patch (6.48 KB) Add-FrozenError-receiver-v2.patch (6.66 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: