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: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>