Bug #13589
closedunmatched opening backtick / closing quote in NoMethodError: undefined method `name' for {}:Hash
Description
From error.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
*
* <em>raises the exception:</em>
*
* NoMethodError: undefined method `to_ary' for "hello":String
*/
For instance:
>> {}.c
NoMethodError: undefined method `c' for {}:Hash
>> {}.name
NoMethodError: undefined method `name' for {}:Hash
Expected (two tildes):
NoMethodError: undefined method `c` for {}:Hash
Expected (two single quotes):
NoMethodError: undefined method 'c' for {}:Hash
P.S.: I just noticed it's the same for method names, e.g.:
`<main>'
# in
from /Users/d/.rvm/rubies/ruby-2.4.1/bin/irb:11:in `<main>'
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 ;) ) ).
Updated by domaio (Dorian M) over 7 years ago
- ruby -v set to ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
Thought about it when trying to explain Struct vs OpenStruct on Stack Overflow :) https://stackoverflow.com/a/44121818/407213
Updated by shyouhei (Shyouhei Urabe) over 7 years ago
domaio (Dorian M) wrote:
Looking at error.c in general, it seems like a rather intentional
Yes. I bekieve this is how quotation marks in English works. I don't like the idea to change our error messages only because wild Markdown parsers don't interface.
Updated by shyouhei (Shyouhei Urabe) over 7 years ago
- Is duplicate of Bug #12321: Backticks in log output cause issues added
Updated by nobu (Nobuyoshi Nakada) over 7 years ago
- Status changed from Open to Rejected
Error messages are not Markdown.
Use multiline code block to quote them.
Updated by duerst (Martin Dürst) over 7 years ago
shyouhei (Shyouhei Urabe) wrote:
domaio (Dorian M) wrote:
Looking at error.c in general, it seems like a rather intentional
Yes. I bekieve this is how quotation marks in English works. I don't like the idea to change our error messages only because wild Markdown parsers don't interface.
Well, to be precise, English quotations use ‘…’ and “…” in high-quality typography. The use of `…' is a fallback convention on some systems. See https://en.wikipedia.org/wiki/Quotation_mark#Typewriters_and_early_computers. The number of characters in ASCII was very limited, so the "`" character had to cover both as the grave accent (used after a base character and a backspace character, or before a backspace and the base character) and as a backquote. On typewriters, the "`" was usually not available, and so simple '…' was used.
Updated by domaio (Dorian M) over 7 years ago
I'm curious what Matz thinks
Updated by mame (Yusuke Endoh) almost 5 years ago
- Related to Feature #16495: Inconsistent quotes in error messages added
Updated by hsbt (Hiroshi SHIBATA) over 4 years ago
- Has duplicate Bug #17107: Backtick in backtrace is a little bit annoying added
Updated by byroot (Jean Boussier) about 2 years ago
I think we should consider this again given the current focus on developer ergonomics.