https://redmine.ruby-lang.org/
https://redmine.ruby-lang.org/favicon.ico?1711330511
2009-11-29T17:11:10Z
Ruby Issue Tracking System
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=7055
2009-11-29T17:11:10Z
ujihisa (Tatsuhiro Ujihisa)
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Assigned</i></li><li><strong>Assignee</strong> set to <i>matz (Yukihiro Matsumoto)</i></li></ul><p>=begin</p>
<p>=end</p>
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=17718
2011-06-11T14:54:42Z
ko1 (Koichi Sasada)
<ul></ul><p>これはどうしましょうか.</p>
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=17817
2011-06-12T00:23:06Z
matz (Yukihiro Matsumoto)
matz@ruby.or.jp
<ul><li><strong>ruby -v</strong> changed from <i>ruby 1.9.2dev (2009-07-19 trunk 24205) [i686-linux]</i> to <i>-</i></li></ul><p>まつもと ゆきひろです</p>
<p>In message "Re: <a href="/issues/1792">[ruby-core:36972]</a> [Ruby 1.9 - Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Fixnum#& 等が、Rational などを受けつける (Closed)" href="https://redmine.ruby-lang.org/issues/1792">#1792</a>] Fixnum#& 等が、Rational などを受けつける"<br>
on Sat, 11 Jun 2011 14:54:43 +0900, Koichi Sasada <a href="mailto:redmine@ruby-lang.org" class="email">redmine@ruby-lang.org</a> writes:</p>
<p>|Issue <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Fixnum#& 等が、Rational などを受けつける (Closed)" href="https://redmine.ruby-lang.org/issues/1792">#1792</a> has been updated by Koichi Sasada.<br>
|<br>
|これはどうしましょうか.</p>
<p>じゃ、エラーってことで。</p>
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=20466
2011-08-29T10:09:39Z
mrkn (Kenta Murata)
muraken@gmail.com
<ul></ul><p>これは 1.9.3 にバックポートしても良いですか?</p>
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=20467
2011-08-29T11:53:13Z
kosaki (Motohiro KOSAKI)
kosaki.motohiro@gmail.com
<ul></ul><blockquote>
<p>これは 1.9.3 にバックポートしても良いですか?</p>
</blockquote>
<p>以下はどのくら深刻なのでしょうか。</p>
<blockquote>
<p>1 & 1.5 がエラーになるので、<br>
1 & Rational(3,2)<br>
や<br>
1 & BigDecimal('1.5')<br>
もエラーにすべきかもしれません。</p>
</blockquote>
<p>freeze 後に仕様変更的な修正を入れるのは可能なら避けたいという思いがあります。<br>
もし仮に修正漏れがあり、1.9.4で再fixとなると、エンドユーザ視点では1.9.2, 1.9.3, 1.9.4で<br>
それぞれ微妙に挙動が異なることになり迷惑だからです。</p>
<p>しかし、1) 修正に自信がある、または 2) 重要度的に外せれない ということであれば反対はしません。</p>
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=20470
2011-08-29T14:09:54Z
mrkn (Kenta Murata)
muraken@gmail.com
<ul><li><strong>Status</strong> changed from <i>Assigned</i> to <i>Closed</i></li></ul><p>むらたです。</p>
<p>そこまで重要ではないと思うので、バックポートはしないことにします。</p>
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=20477
2011-08-29T16:18:06Z
naruse (Yui NARUSE)
naruse@airemix.jp
<ul><li><strong>Status</strong> changed from <i>Closed</i> to <i>Assigned</i></li><li><strong>Assignee</strong> changed from <i>matz (Yukihiro Matsumoto)</i> to <i>mrkn (Kenta Murata)</i></li></ul><p>これの影響で以下のようなエラーが出ています。<br>
2) Error:<br>
test_num2long(TestNumeric):<br>
TypeError: can't convert Object into Integer for bitwise arithmetic<br>
/home/naruse/ruby/test/ruby/test_numeric.rb:227:in <code>&' /home/naruse/ruby/test/ruby/test_numeric.rb:227:in </code>test_num2long'</p>
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=20479
2011-08-29T23:25:36Z
mrkn (Kenta Murata)
muraken@gmail.com
<ul><li><strong>Status</strong> changed from <i>Assigned</i> to <i>Closed</i></li></ul><p>ごめんなさいごめんなさい。<br>
r33113 で修正しました。</p>
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=20492
2011-08-30T12:12:22Z
naruse (Yui NARUSE)
naruse@airemix.jp
<ul></ul><p>散発的になってすいませんが、RubySpecも追従よろしくお願いします</p>
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=20756
2011-09-13T08:23:23Z
ko1 (Koichi Sasada)
<ul></ul><p>Is it intentional?</p>
<h3></h3>
<p>class IntegerMimic<br>
def initialize n<br>
@n = n<br>
end</p>
<p>def to_int<br>
@n<br>
end<br>
end</p>
<p>obj = IntegerMimic.new(10)</p>
<p>%w(& | ^).each{|sym|<br>
p sym<br>
begin<br>
p(3.send(sym, obj))<br>
rescue => e<br>
p e<br>
end<br>
}</p>
<p>#=><br>
ruby 1.9.4dev (2011-09-11 trunk 33248) [i386-mswin32_100]<br>
"&"<br>
#<TypeError: can't convert IntegerMimic into Integer for bitwise arithmetic><br>
"|"<br>
#<TypeError: can't convert IntegerMimic into Integer for bitwise arithmetic><br>
"^"<br>
#<TypeError: can't convert IntegerMimic into Integer for bitwise arithmetic></p>
<p>(2011/08/29 7:25), Kenta Murata wrote:</p>
<blockquote>
<p>Issue <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Fixnum#& 等が、Rational などを受けつける (Closed)" href="https://redmine.ruby-lang.org/issues/1792">#1792</a> has been updated by Kenta Murata.</p>
<p>Status changed from Assigned to Closed</p>
<p>ごめんなさいごめんなさい。<br>
r33113 で修正しました。</p>
<hr>
<p>Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Fixnum#& 等が、Rational などを受けつける (Closed)" href="https://redmine.ruby-lang.org/issues/1792">#1792</a>: Fixnum#& 等が、Rational などを受けつける<br>
<a href="http://redmine.ruby-lang.org/issues/1792" class="external">http://redmine.ruby-lang.org/issues/1792</a></p>
<p>Author: tadayoshi funaba<br>
Status: Closed<br>
Priority: Normal<br>
Assignee: Kenta Murata<br>
Category:<br>
Target version: 1.9.x<br>
ruby -v: -</p>
<p>=begin<br>
1 & 1.5 がエラーになるので、<br>
1 & Rational(3,2)<br>
や<br>
1 & BigDecimal('1.5')<br>
もエラーにすべきかもしれません。<br>
=end</p>
</blockquote>
<p>--<br>
// SASADA Koichi at atdot dot net</p>
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=20757
2011-09-13T08:29:34Z
ko1 (Koichi Sasada)
<ul></ul><p>I find out that bitwise operation doesn't call coerce.<br>
How to make mimic Integer class?</p>
<h3></h3>
<p>class IntegerMimic<br>
def initialize n<br>
@n = n<br>
end</p>
<p>def to_int<br>
p :to_int<br>
@n<br>
end</p>
<p>def coerce obj<br>
p :coerce<br>
[obj, @n]<br>
end<br>
end</p>
<p>obj = IntegerMimic.new(10)</p>
<p>%w(+ - * / % & | ^).each{|sym|<br>
p sym<br>
begin<br>
p(3.send(sym, obj))<br>
rescue => e<br>
p e<br>
end<br>
}</p>
<p><strong>END</strong><br>
#=><br>
ruby 1.9.4dev (2011-09-11 trunk 33248) [i386-mswin32_100]<br>
"+"<br>
:coerce<br>
13<br>
"-"<br>
:coerce<br>
-7<br>
"*"<br>
:coerce<br>
30<br>
"/"<br>
:coerce<br>
0<br>
"%"<br>
:coerce<br>
3<br>
"&"<br>
#<TypeError: can't convert IntegerMimic into Integer for bitwise arithmetic><br>
"|"<br>
#<TypeError: can't convert IntegerMimic into Integer for bitwise arithmetic><br>
"^"<br>
#<TypeError: can't convert IntegerMimic into Integer for bitwise arithmetic></p>
<p>#=><br>
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]<br>
"+"<br>
:coerce<br>
13<br>
"-"<br>
:coerce<br>
-7<br>
"*"<br>
:coerce<br>
30<br>
"/"<br>
:coerce<br>
0<br>
"%"<br>
:coerce<br>
3<br>
"&"<br>
:to_int<br>
2<br>
"|"<br>
:to_int<br>
11<br>
"^"<br>
:to_int<br>
9</p>
<p>--<br>
// SASADA Koichi at atdot dot net</p>
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=20763
2011-09-13T11:23:17Z
cjheath (Clifford Heath)
clifford.heath@gmail.com
<ul></ul><p>On 13/09/2011, at 9:27 AM, SASADA Koichi wrote:</p>
<blockquote>
<p>I find out that bitwise operation doesn't call coerce.<br>
How to make mimic Integer class?</p>
</blockquote>
<p>The short answer: You can't.</p>
<p>The long answer:</p>
<p>You can imitate some of the behaviour of Integers, but when you<br>
get into hashing and numeric operations, the different Ruby<br>
interpreters all have different shortcuts that prevent your custom<br>
code from being called.</p>
<p>See this post for more information:<br>
<a href="http://blog.rubybestpractices.com/posts/rklemme/019-Complete_Numeric_Class.html" class="external">http://blog.rubybestpractices.com/posts/rklemme/019-Complete_Numeric_Class.html</a></p>
<p>And a discussion thread that I started:<br>
<a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/381087" class="external">http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/381087</a></p>
<p>Clifford Heath.</p>
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=20824
2011-09-14T13:28:56Z
mrkn (Kenta Murata)
muraken@gmail.com
<ul><li><strong>Status</strong> changed from <i>Closed</i> to <i>Open</i></li></ul><p>I reopen this ticket because I rethink <a href="/issues/1792">[ruby-core:39491]</a> is bug.<br>
But, unfortunately, I don't know how to fix this.<br>
Using to_int cannot fix the original problem.<br>
May Numeric#coerce is used for bitwise operation?</p>
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=20827
2011-09-14T17:53:19Z
matz (Yukihiro Matsumoto)
matz@ruby.or.jp
<ul></ul><p>Hi,</p>
<p>In message "Re: <a href="/issues/1792">[ruby-core:39540]</a> [Ruby 1.9 - Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Fixnum#& 等が、Rational などを受けつける (Closed)" href="https://redmine.ruby-lang.org/issues/1792">#1792</a>][Open] Fixnum#& 等が、Rational などを受けつける"<br>
on Wed, 14 Sep 2011 13:28:57 +0900, Kenta Murata <a href="mailto:muraken@gmail.com" class="email">muraken@gmail.com</a> writes:</p>
<p>|I reopen this ticket because I rethink <a href="/issues/1792">[ruby-core:39491]</a> is bug.<br>
|But, unfortunately, I don't know how to fix this.<br>
|Using to_int cannot fix the original problem.<br>
|May Numeric#coerce is used for bitwise operation?</p>
<p>Using coerce is OK for me. But it should cause NoMethodError when<br>
implemented naively. That might cause confusion.</p>
<pre><code> matz.
</code></pre>
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=24853
2012-03-18T18:46:38Z
shyouhei (Shyouhei Urabe)
shyouhei@ruby-lang.org
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Assigned</i></li></ul>
Ruby master - Bug #1792: Fixnum#& 等が、Rational などを受けつける
https://redmine.ruby-lang.org/issues/1792?journal_id=35010
2012-12-23T00:06:23Z
mrkn (Kenta Murata)
muraken@gmail.com
<ul><li><strong>Status</strong> changed from <i>Assigned</i> to <i>Closed</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>100</i></li></ul><p>This issue was solved with changeset r38560.<br>
tadayoshi, thank you for reporting this issue.<br>
Your contribution to Ruby is greatly appreciated.<br>
May Ruby be with you.</p>
<hr>
<ul>
<li>
<p>include/ruby/intern.h: add the prototype declaration of<br>
rb_num_coerce_bit.</p>
</li>
<li>
<p>numeric.c (rb_num_coerce_bit): the new coerce function for bitwise<br>
binary operation.</p>
</li>
<li>
<p>bignum.c (rb_big_and): use coerce to convert the argument, which isn't<br>
a Fixnum nor a Bignum, to the corresponding Integer object so that<br>
bitwise operations can support Integer-mimic objects.<br>
[Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Fixnum#& 等が、Rational などを受けつける (Closed)" href="https://redmine.ruby-lang.org/issues/1792">#1792</a>] <a href="/issues/1792">[ruby-core:39491]</a></p>
</li>
<li>
<p>bignum.c (rb_big_or): ditto.</p>
</li>
<li>
<p>bignum.c (rb_big_xor): ditto.</p>
</li>
<li>
<p>numeric.c (bit_coerce): ditto.</p>
</li>
<li>
<p>numeric.c (fix_and): ditto.</p>
</li>
<li>
<p>numeric.c (fix_or): ditto.</p>
</li>
<li>
<p>numeric.c (fix_xor): ditto.</p>
</li>
<li>
<p>test/ruby/test_integer.rb: add tests for the above changes.</p>
</li>
<li>
<p>test/ruby/test_bignum.rb: ditto.</p>
</li>
</ul>