Project

General

Profile

Bug #1215

irb doesn't finish evaluate on !false => false

Added by no6v (Nobuhiro IMAI) over 10 years ago. Updated over 8 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.2dev (2009-02-25 trunk 22626) [i686-linux]
Backport:
[ruby-dev:38087]

Description

=begin
$ irb1.9 -f
irb(main):001:0> RUBY_DESCRIPTION
=> "ruby 1.9.2dev (2009-02-25 trunk 22626) [i686-linux]"
irb(main):002:0> false
=> false
irb(main):003:0> false.define_singleton_method(:!){p "!false"; false}
=> #
irb(main):004:0> false
"!false"
"!false"
irb(main):005:0>
irb(main):006:0*
irb(main):007:0*
irb(main):008:0* irb(main):008:0> => false

!false が false を返すような状況だと、irb が式を評価した結果を返さないようです。
手元では、D を何度か押すと評価した結果が返りました。上の例では、005 から 007 までは
Enter を、008 のところでは D を 2 回入力しています。

るりまには、

主に論理式の評価に伴って副作用を引き起こすことを目的に
再定義するものと想定されています。

と書かれているので、バグと言えるのかは微妙な気もしますが、
irb 側で何とかならないものでしょうか?
=end

History

#1

Updated by matz (Yukihiro Matsumoto) over 10 years ago

  • Status changed from Open to Rejected

=begin

=end

#2

Updated by matz (Yukihiro Matsumoto) over 10 years ago

=begin
まつもと ゆきひろです

In message "Re: [ruby-dev:38087] [Bug #1215] irb doesn't finish evaluate on !false => false"
on Thu, 26 Feb 2009 10:02:45 +0900, Nobuhiro IMAI redmine@ruby-lang.org writes:

|!false が false を返すような状況だと、irb が式を評価した結果を返さないようです。
|手元では、D を何度か押すと評価した結果が返りました。上の例では、005 から 007 までは
|Enter を、008 のところでは D を 2 回入力しています。
|
|るりまには、
|
|> 主に論理式の評価に伴って副作用を引き起こすことを目的に
|> 再定義するものと想定されています。
|
|と書かれているので、バグと言えるのかは微妙な気もしますが、
|irb 側で何とかならないものでしょうか?

無理でしょうね。falseのような基本的なオブジェクトの!を再定義
した場合でも正当に動作するプログラムを記述することは困難です。
そんな負担をライブラリ作者に負わせたくありません。!の再定義
はあくまでも自己責任で。

=end

Also available in: Atom PDF