Project

General

Profile

Feature #13025

String equality operator does not perform implicit conversion

Added by johncarney (John Carney) almost 3 years ago. Updated almost 3 years ago.

Status:
Feedback
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:78594]

Description

According to the documentation, String#== should perform implicit conversion of non-strings, but this is not happening.

class SomeClass
  def initialize(value)
    @value = value
  end

  def to_str
    @value.to_s
  end
end

"text" == SomeClass.new("text")
# => false (expected true)

Other operators work as expected:

"text" + SomeClass.new("text")
# => "texttext"

"text" <=> SomeClass.new("text")
# => 0

History

Updated by nobu (Nobuyoshi Nakada) almost 3 years ago

  • Status changed from Open to Feedback
  • Description updated (diff)
  • Tracker changed from Bug to Feature

What documentation do you refer?
The document of 2.3 says:

If obj is not an instance of String but responds to to_str, then the
two strings are compared using case equality Object#===.

(the method to be called is wrong, though)

Do you suggest changing the fallback method?

Also available in: Atom PDF