From: dorian@...
Date: 2017-05-22T21:06:57+00:00
Subject: [ruby-core:81338] [Ruby trunk Bug#13589] unmatched opening backtick / closing quote in NoMethodError: undefined method `name' for {}:Hash
Issue #13589 has been reported by domaio (Dorian M).
----------------------------------------
Bug #13589: unmatched opening backtick / closing quote in NoMethodError: undefined method `name' for {}:Hash
https://bugs.ruby-lang.org/issues/13589
* Author: domaio (Dorian M)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
* ruby -v:
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
From [`error.c`](https://github.com/ruby/ruby/blob/trunk/error.c#L1953-L1964):
~~~ c
/*
* Document-class: NoMethodError
*
* Raised when a method is called on a receiver which doesn't have it
* defined and also fails to respond with +method_missing+.
*
* "hello".to_ary
*
* raises the exception:
*
* NoMethodError: undefined method `to_ary' for "hello":String
*/
~~~
For instance:
~~~ ruby
>> {}.c
NoMethodError: undefined method `c' for {}:Hash
>> {}.name
NoMethodError: undefined method `name' for {}:Hash
~~~
Expected (two tildes):
~~~ ruby
NoMethodError: undefined method `c` for {}:Hash
~~~
Expected (two single quotes):
~~~ ruby
NoMethodError: undefined method 'c' for {}:Hash
~~~
P.S.: I just noticed it's the same for method names, e.g.:
~~~ ruby
`'
# in
from /Users/d/.rvm/rubies/ruby-2.4.1/bin/irb:11:in `'
~~~
Looking at error.c in general, it seems like a rather intentional behavior but I didn't see any explanation of it (and it doesn't look good / make it easy to copy/paste for me, even all those code examples are messed up because of it :) (but not the ones with the fixed syntax ;) ) ).
--
https://bugs.ruby-lang.org/
Unsubscribe: