Project

General

Profile

This project is closed and read-only.

Actions

Backport #3604

closed

File.path, File.open, etc call to_str twice on the path argument

Backport #3604: File.path, File.open, etc call to_str twice on the path argument

Added by tmat (Tomas Matousek) about 16 years ago. Updated about 7 years ago.

Status:
Closed
[ruby-core:31451]

Description

=begin
class C
def respond_to?(name)
puts "C: #{name}"
return false
end
end

File.path(C.new) rescue p $!
File.open(C.new) rescue p $!
File.ctime(C.new) rescue p $!
File.dirname(C.new) rescue p $!

prints:

C: to_str
C: to_path
C: to_str
#<TypeError: can't convert C into String>
C: to_int
C: to_hash
C: to_str
C: to_path
C: to_str
#<TypeError: can't convert C into String>
C: to_io
C: to_str
C: to_path
C: to_str
#<TypeError: can't convert C into String>
C: to_str
C: to_path
C: to_str
#<TypeError: can't convert C into String>

Is there any reason why to_str is called twice on the arguments? Shouldn't to_path be called first and then to_str (i.e. the path conversion should be preferred over string conversion)?
=end


Related issues 1 (0 open1 closed)

Is duplicate of Ruby - Bug #1760: Methods Expecting Paths Should Prefer #to_path Over #to_strClosedmatz (Yukihiro Matsumoto)Actions

Updated by nobu (Nobuyoshi Nakada) about 16 years ago Actions #1

  • Category set to core

=begin

=end

Updated by nobu (Nobuyoshi Nakada) about 16 years ago Actions #2

  • Status changed from Open to Assigned
  • Assignee set to yugui (Yuki Sonoda)

=begin

=end

Updated by jeremyevans0 (Jeremy Evans) about 7 years ago Actions #3

  • Description updated (diff)
  • Status changed from Assigned to Closed
Actions

Also available in: PDF Atom