Project

General

Profile

Actions

Bug #13589

closed

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

Added by domaio (Dorian M) over 7 years ago. Updated almost 2 years ago.

Status:
Rejected
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 3 (0 open3 closed)

Related to Ruby master - Feature #16495: Inconsistent quotes in error messagesClosedmatz (Yukihiro Matsumoto)Actions
Is duplicate of Ruby master - Bug #12321: Backticks in log output cause issuesRejectedActions
Has duplicate Ruby master - Bug #17107: Backtick in backtrace is a little bit annoyingRejectedActions

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.

Actions #3

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

Actions #7

Updated by mame (Yusuke Endoh) almost 5 years ago

  • Related to Feature #16495: Inconsistent quotes in error messages added
Actions #8

Updated by hsbt (Hiroshi SHIBATA) about 4 years ago

  • Has duplicate Bug #17107: Backtick in backtrace is a little bit annoying added

Updated by byroot (Jean Boussier) almost 2 years ago

I think we should consider this again given the current focus on developer ergonomics.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like1