[ruby-dev:49854] [Ruby trunk Bug#12887] Object#extendを引数無しで呼び出すとErrorとなるが、Module#includeとModule#prependはエラーとならない

From: takkanm@...
Date: 2016-11-01 12:48:38 UTC
List: ruby-dev #49854
Issue #12887 has been reported by 三村 益隆.

----------------------------------------
Bug #12887: Object#extendを引数無しで呼び出すとErrorとなるが、Module#includeとModule#prependはエラーとならない
https://bugs.ruby-lang.org/issues/12887

* Author: 三村 益隆
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: 
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
Object#extend を引数無しで呼び出すと、ArgumentErrorとなります。 https://bugs.ruby-lang.org/issues/6085

~~~
$ ruby -e 'Module.new { extend }'
-e:1:in `extend': wrong number of arguments (given 0, expected 1+) (ArgumentError)
	from -e:1:in `block in <main>'
~~~

しかし、同じように Mix-in する Module#include, Module#prepend を引数なしで呼び出してもエラーとなりません。

~~~
$ ruby -e 'Module.new { include }'
$ ruby -e 'Module.new { prepend }'
~~~

似たような処理をする関数の引数のチェックは揃っていた方がわかりやすいと思いましたが、いかがでしょうか?

https://github.com/ruby/ruby/pull/1470
https://github.com/takkanm/ruby/tree/check_arity_for_include_and_prepend



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

In This Thread

Prev Next