ruby-dev (Japanese) list archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-dev:50981] [Ruby master Bug#17424] Interactive Ruby で  Object#method を再定義して任意の文字を入力するとエラーが発生する
@ 2020-12-22  9:01 Tommy.ish
  2021-02-09 21:34 ` [ruby-dev:51018] " merch-redmine
  0 siblings, 1 reply; 2+ messages in thread
From: Tommy.ish @ 2020-12-22  9:01 UTC (permalink / raw)
  To: ruby-dev

Issue #17424 has been reported by tommy.ish (智大 石井).

----------------------------------------
Bug #17424: Interactive Ruby で Object#method を再定義して任意の文字を入力するとエラーが発生する
https://bugs.ruby-lang.org/issues/17424

* Author: tommy.ish (智大 石井)
* Status: Open
* Priority: Normal
* ruby -v: ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin20]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
# 再現方法
Interactive Ruby で以下を入力した後に任意の文字を入力する。
``` ruby
def method
end
```
# 再現方法から得られた結果
```
Traceback (most recent call last):
	33: from /Users/ishii/.rbenv/versions/2.7.2/bin/irb:23:in `<main>'
	32: from /Users/ishii/.rbenv/versions/2.7.2/bin/irb:23:in `load'
	31: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/irb-1.2.6/exe/irb:11:in `<top (required)>'
	30: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:400:in `start'
	29: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:471:in `run'
	28: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:471:in `catch'
	27: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:472:in `block in run'
	26: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:537:in `eval_input'
	25: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb/ruby-lex.rb:150:in `each_top_level_statement'
	24: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb/ruby-lex.rb:150:in `catch'
	23: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb/ruby-lex.rb:151:in `block in each_top_level_statement'
	22: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb/ruby-lex.rb:151:in `loop'
	21: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb/ruby-lex.rb:154:in `block (2 levels) in each_top_level_statement'
	20: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb/ruby-lex.rb:182:in `lex'
	19: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:518:in `block in eval_input'
	18: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:704:in `signal_status'
	17: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:519:in `block (2 levels) in eval_input'
	16: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb/input-method.rb:294:in `gets'
	15: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/forwardable.rb:235:in `readmultiline'
	14: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/forwardable.rb:235:in `readmultiline'
	13: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:175:in `readmultiline'
	12: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:238:in `inner_readline'
	11: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:238:in `loop'
	10: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:239:in `block in inner_readline'
	 9: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:270:in `read_io'
	 8: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:270:in `loop'
	 7: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:311:in `block in read_io'
	 6: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:240:in `block (2 levels) in inner_readline'
	 5: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:240:in `each'
	 4: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:241:in `block (3 levels) in inner_readline'
	 3: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline/line_editor.rb:834:in `input_key'
	 2: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline/line_editor.rb:792:in `normal_char'
	 1: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline/line_editor.rb:718:in `process_key'
(irb):1:in `method': wrong number of arguments (given 1, expected 0) (ArgumentError)
```
# 期待する結果とその理由
この例外は起きないべきだ。何故ならソースコードに書いて実行してもエラーは出ないからだ。 irb 1.2.6 (2020-09-14) ですが irb 1.0.0 (2018-12-18) だとエラーが出ませんでした。





-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [ruby-dev:51018] [Ruby master Bug#17424] Interactive Ruby で  Object#method を再定義して任意の文字を入力するとエラーが発生する
  2020-12-22  9:01 [ruby-dev:50981] [Ruby master Bug#17424] Interactive Ruby で Object#method を再定義して任意の文字を入力するとエラーが発生する Tommy.ish
@ 2021-02-09 21:34 ` merch-redmine
  0 siblings, 0 replies; 2+ messages in thread
From: merch-redmine @ 2021-02-09 21:34 UTC (permalink / raw)
  To: ruby-dev

Issue #17424 has been updated by jeremyevans0 (Jeremy Evans).

Status changed from Open to Rejected

This isn't a bug.  Reline is calling `method` on an object, which by default is implemented by `Kernel#method`.  By running `def method; end` in the top level scope, you are defining `Object#method`, which takes precedence over `Kernel#method`.  Since the method you defined does not accept arguments, while `Kernel#method` accepts an argument, Reline gets an `ArgumentError` when calling `method`.  You can fix this issue by using a method name other than `method` or by defining `method` inside another class or module so that it does not override `Kernel#method`.

----------------------------------------
Bug #17424: Interactive Ruby で Object#method を再定義して任意の文字を入力するとエラーが発生する
https://bugs.ruby-lang.org/issues/17424#change-90304

* Author: tommy.ish (智大 石井)
* Status: Rejected
* Priority: Normal
* ruby -v: ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin20]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
# 再現方法
Interactive Ruby で以下を入力した後に任意の文字を入力する。
``` ruby
def method
end
```
# 再現方法から得られた結果
```
Traceback (most recent call last):
	33: from /Users/ishii/.rbenv/versions/2.7.2/bin/irb:23:in `<main>'
	32: from /Users/ishii/.rbenv/versions/2.7.2/bin/irb:23:in `load'
	31: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/irb-1.2.6/exe/irb:11:in `<top (required)>'
	30: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:400:in `start'
	29: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:471:in `run'
	28: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:471:in `catch'
	27: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:472:in `block in run'
	26: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:537:in `eval_input'
	25: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb/ruby-lex.rb:150:in `each_top_level_statement'
	24: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb/ruby-lex.rb:150:in `catch'
	23: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb/ruby-lex.rb:151:in `block in each_top_level_statement'
	22: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb/ruby-lex.rb:151:in `loop'
	21: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb/ruby-lex.rb:154:in `block (2 levels) in each_top_level_statement'
	20: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb/ruby-lex.rb:182:in `lex'
	19: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:518:in `block in eval_input'
	18: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:704:in `signal_status'
	17: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb.rb:519:in `block (2 levels) in eval_input'
	16: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/irb/input-method.rb:294:in `gets'
	15: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/forwardable.rb:235:in `readmultiline'
	14: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/forwardable.rb:235:in `readmultiline'
	13: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:175:in `readmultiline'
	12: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:238:in `inner_readline'
	11: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:238:in `loop'
	10: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:239:in `block in inner_readline'
	 9: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:270:in `read_io'
	 8: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:270:in `loop'
	 7: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:311:in `block in read_io'
	 6: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:240:in `block (2 levels) in inner_readline'
	 5: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:240:in `each'
	 4: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline.rb:241:in `block (3 levels) in inner_readline'
	 3: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline/line_editor.rb:834:in `input_key'
	 2: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline/line_editor.rb:792:in `normal_char'
	 1: from /Users/ishii/.rbenv/versions/2.7.2/lib/ruby/2.7.0/reline/line_editor.rb:718:in `process_key'
(irb):1:in `method': wrong number of arguments (given 1, expected 0) (ArgumentError)
```
# 期待する結果とその理由
この例外は起きないべきだ。何故ならソースコードに書いて実行してもエラーは出ないからだ。 irb 1.2.6 (2020-09-14) ですが irb 1.0.0 (2018-12-18) だとエラーが出ませんでした。





-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-02-09 21:35 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-22  9:01 [ruby-dev:50981] [Ruby master Bug#17424] Interactive Ruby で Object#method を再定義して任意の文字を入力するとエラーが発生する Tommy.ish
2021-02-09 21:34 ` [ruby-dev:51018] " merch-redmine

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).