Project

General

Profile

Bug #13589

unmatched opening backtick / closing quote in NoMethodError: undefined method `name' for {}:Hash

Added by domaio (Dorian M) 6 months ago. Updated 6 months ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
[ruby-core:81338]

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 ;) ) ).


Related issues

Is duplicate of Ruby trunk - Bug #12321: Backticks in log output cause issuesRejected

History

#1 [ruby-core:81339] Updated by domaio (Dorian M) 6 months 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

#2 [ruby-core:81340] Updated by shyouhei (Shyouhei Urabe) 6 months 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.

#3 Updated by shyouhei (Shyouhei Urabe) 6 months ago

  • Is duplicate of Bug #12321: Backticks in log output cause issues added

#4 [ruby-core:81341] Updated by nobu (Nobuyoshi Nakada) 6 months ago

  • Status changed from Open to Rejected

Error messages are not Markdown.
Use multiline code block to quote them.

#5 [ruby-core:81447] Updated by duerst (Martin Dürst) 6 months 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.

#6 [ruby-core:81574] Updated by domaio (Dorian M) 6 months ago

I'm curious what Matz thinks

Also available in: Atom PDF