[#70257] [Ruby trunk - Feature #11420] [Open] Introduce ID key table into MRI — ko1@...

Issue #11420 has been reported by Koichi Sasada.

11 messages 2015/08/06

[ruby-core:70550] [Ruby trunk - Feature #11477] NameError#qualified_name

From: mail@...
Date: 2015-08-22 22:09:18 UTC
List: ruby-core #70550
Issue #11477 has been updated by Yuki Nishijima.


That actually makes more sense and is what we talked about at the last Ruby=
 developers meeting. According to Nobu it requires a lot of work, though. B=
ut in terms of the interface, I'm =F0=9F=91=8D on `NameError#receiver` retu=
rning the receiving module in a "uninitialized constant" NameError.

----------------------------------------
Feature #11477: NameError#qualified_name
https://bugs.ruby-lang.org/issues/11477#change-53959

* Author: Yuki Nishijima
* Status: Open
* Priority: Normal
* Assignee:=20
----------------------------------------
Hi,

This is a followup issue to #11252. I'd like to add a method that basically=
 does the same thing as [NameError#missing_name](https://github.com/rails/r=
ails/blob/ebe73abea0ae02094ddc28f8fd60ae92373b6113/activesupport/lib/active=
_support/core_ext/name_error.rb#L2-L14). This will allow gems like Rails an=
d did_you_mean to get a qualified name without parsing an error message.

```ruby
begin
  HelloWorld
rescue NameError =3D> e
  error.name           # =3D> :HelloWorld
  error.qualified_name # =3D> :HelloWorld
end

begin
  String::DoesntExist
rescue NameError =3D> e
  error.name           # =3D> :DoesntExist
  error.qualified_name # =3D> :"String::DoesntExist"
end
```

I'm not actually sure what it should return when the module/class is an ano=
nymous module/class, but one thing we can do is just use the result of `#to=
_s`:

```ruby
m =3D Module.new

begin
  m::DoesntExist
rescue NameError =3D> e
  error.name           # =3D> :DoesntExist
  error.qualified_name # =3D> :"#<Module:0x0000000260c2f8>::DoesntExist"
end
```

I'm open to suggestions. Let me know what you think.

Yuki



--=20
https://bugs.ruby-lang.org/

In This Thread

Prev Next