From: "akira yamada / やまだあきら" Date: 2006-04-19T10:26:38+09:00 Subject: [ruby-dev:28585] Re: OP_ASGN1 and OP_ASGN2 allow calling of private operators and problem with splat akira yamada / やまだあきら wrote: > 以下は[ruby-core:07366]にある再現コードです。 >> irb(main):001:0> class A; def method_missing(*a); p a; 1; end; end >> => nil >> irb(main):002:0> a=A.new >> => # >> irb(main):003:0> a[0,*[1,2,3]] >> [:[], 0, 1, 2, 3] >> => 1 >> irb(main):004:0> a[0,*[1,2,3]]=3 >> [:[]=, 0, 1, 2, 3, 3] >> => 3 >> irb(main):005:0> a[0,*[1,2,3]]+=3 >> [:[], [0, 1, 2, 3]] >> [:[]=, [0, 1, 2, 3], 4] >> => 4 > > trunkとruby_1_8の最新で > この中の最後の a[0,*[1,2,3]]+=3 がSEGVします。 parse.yの1.307.2.31->1.307.2.32でSEGVはしなくなりましたが、 もともとの報告にあった状況には変わりないようです。 > For the last command I would expect: > > irb(main):005:0> a[0,*[1,2,3]]+=3 > [:[], 0, 1, 2, 3] > [:[]=, 0, 1, 2, 3, 4] > => 4 と続きます。 # 引用のやり方が不適切でした。すいません。 -- ay