summaryrefslogtreecommitdiff
path: root/hash.c
diff options
context:
space:
mode:
author卜部昌平 <shyouhei@ruby-lang.org>2019-08-29 11:47:20 +0900
committer卜部昌平 <shyouhei@ruby-lang.org>2019-08-29 18:34:09 +0900
commit3df37259d81d9fc71f8b4f0b8d45dc9d0af81ab4 (patch)
tree961d975a0191b8385417c8107149a9610aa1f6dc /hash.c
parentbfe5d22f89a871b6c1cb556c0115145ade9fe286 (diff)
drop-in type check for rb_define_singleton_method
We can check the function pointer passed to rb_define_singleton_method like how we do so in rb_define_method. Doing so revealed many arity mismatches.
Diffstat (limited to 'hash.c')
-rw-r--r--hash.c111
1 files changed, 69 insertions, 42 deletions
diff --git a/hash.c b/hash.c
index 4671adfd55..b61784af3a 100644
--- a/hash.c
+++ b/hash.c
@@ -4808,7 +4808,7 @@ rb_f_getenv(VALUE obj, VALUE name)
* be returned when no block is given.
*/
static VALUE
-env_fetch(int argc, VALUE *argv)
+env_fetch(int argc, VALUE *argv, VALUE _)
{
VALUE key;
long block_given;
@@ -5138,12 +5138,6 @@ env_aset(VALUE nm, VALUE val)
return val;
}
-/*
- * call-seq:
- * ENV.keys -> Array
- *
- * Returns every environment variable name in an Array
- */
static VALUE
env_keys(void)
{
@@ -5163,6 +5157,19 @@ env_keys(void)
return ary;
}
+/*
+ * call-seq:
+ * ENV.keys -> Array
+ *
+ * Returns every environment variable name in an Array
+ */
+
+static VALUE
+env_f_keys(VALUE _)
+{
+ return env_keys();
+}
+
static VALUE
rb_env_size(VALUE ehash, VALUE args, VALUE eobj)
{
@@ -5202,12 +5209,6 @@ env_each_key(VALUE ehash)
return ehash;
}
-/*
- * call-seq:
- * ENV.values -> Array
- *
- * Returns every environment variable value as an Array
- */
static VALUE
env_values(void)
{
@@ -5229,6 +5230,19 @@ env_values(void)
/*
* call-seq:
+ * ENV.values -> Array
+ *
+ * Returns every environment variable value as an Array
+ */
+
+static VALUE
+env_f_values(VALUE _)
+{
+ return env_values();
+}
+
+/*
+ * call-seq:
* ENV.each_value { |value| block } -> Hash
* ENV.each_value -> Enumerator
*
@@ -5354,7 +5368,7 @@ env_delete_if(VALUE ehash)
* the given names. See also ENV.select.
*/
static VALUE
-env_values_at(int argc, VALUE *argv)
+env_values_at(int argc, VALUE *argv, VALUE _)
{
VALUE result;
long i;
@@ -5465,7 +5479,7 @@ env_keep_if(VALUE ehash)
* ENV.slice("TERM","HOME") #=> {"TERM"=>"xterm-256color", "HOME"=>"/Users/rhc"}
*/
static VALUE
-env_slice(int argc, VALUE *argv)
+env_slice(int argc, VALUE *argv, VALUE _)
{
int i;
VALUE key, value, result;
@@ -5485,12 +5499,6 @@ env_slice(int argc, VALUE *argv)
return result;
}
-/*
- * call-seq:
- * ENV.clear
- *
- * Removes every environment variable.
- */
VALUE
rb_env_clear(void)
{
@@ -5510,12 +5518,24 @@ rb_env_clear(void)
/*
* call-seq:
+ * ENV.clear
+ *
+ * Removes every environment variable.
+ */
+static VALUE
+env_clear(VALUE _)
+{
+ return rb_env_clear();
+}
+
+/*
+ * call-seq:
* ENV.to_s -> "ENV"
*
* Returns "ENV"
*/
static VALUE
-env_to_s(void)
+env_to_s(VALUE _)
{
return rb_usascii_str_new2("ENV");
}
@@ -5527,7 +5547,7 @@ env_to_s(void)
* Returns the contents of the environment as a String.
*/
static VALUE
-env_inspect(void)
+env_inspect(VALUE _)
{
char **env;
VALUE str, i;
@@ -5566,7 +5586,7 @@ env_inspect(void)
*
*/
static VALUE
-env_to_a(void)
+env_to_a(VALUE _)
{
char **env;
VALUE ary;
@@ -5593,7 +5613,7 @@ env_to_a(void)
* compatibility with Hash.
*/
static VALUE
-env_none(void)
+env_none(VALUE _)
{
return Qnil;
}
@@ -5606,7 +5626,7 @@ env_none(void)
* Returns the number of environment variables.
*/
static VALUE
-env_size(void)
+env_size(VALUE _)
{
int i;
char **env;
@@ -5625,7 +5645,7 @@ env_size(void)
* Returns true when there are no environment variables
*/
static VALUE
-env_empty_p(void)
+env_empty_p(VALUE _)
{
char **env;
@@ -5782,13 +5802,6 @@ env_index(VALUE dmy, VALUE value)
return env_key(dmy, value);
}
-/*
- * call-seq:
- * ENV.to_hash -> hash
- *
- * Creates a hash with a copy of the environment variables.
- *
- */
static VALUE
env_to_hash(void)
{
@@ -5811,6 +5824,20 @@ env_to_hash(void)
/*
* call-seq:
+ * ENV.to_hash -> hash
+ *
+ * Creates a hash with a copy of the environment variables.
+ *
+ */
+
+static VALUE
+env_f_to_hash(VALUE _)
+{
+ return env_to_hash();
+}
+
+/*
+ * call-seq:
* ENV.to_h -> hash
* ENV.to_h {|name, value| block } -> hash
*
@@ -5818,7 +5845,7 @@ env_to_hash(void)
*
*/
static VALUE
-env_to_h(void)
+env_to_h(VALUE _)
{
VALUE hash = env_to_hash();
if (rb_block_given_p()) {
@@ -5836,7 +5863,7 @@ env_to_h(void)
* environment.
*/
static VALUE
-env_reject(void)
+env_reject(VALUE _)
{
return rb_hash_delete_if(env_to_hash());
}
@@ -5863,7 +5890,7 @@ env_freeze(VALUE self)
* an Array. Returns +nil+ if when the environment is empty.
*/
static VALUE
-env_shift(void)
+env_shift(VALUE _)
{
char **env;
VALUE result = Qnil;
@@ -5890,7 +5917,7 @@ env_shift(void)
* and values as names.
*/
static VALUE
-env_invert(void)
+env_invert(VALUE _)
{
return rb_hash_invert(env_to_hash());
}
@@ -6203,7 +6230,7 @@ Init_Hash(void)
rb_define_singleton_method(envtbl, "delete_if", env_delete_if, 0);
rb_define_singleton_method(envtbl, "keep_if", env_keep_if, 0);
rb_define_singleton_method(envtbl, "slice", env_slice, -1);
- rb_define_singleton_method(envtbl, "clear", rb_env_clear, 0);
+ rb_define_singleton_method(envtbl, "clear", env_clear, 0);
rb_define_singleton_method(envtbl, "reject", env_reject, 0);
rb_define_singleton_method(envtbl, "reject!", env_reject_bang, 0);
rb_define_singleton_method(envtbl, "select", env_select, 0);
@@ -6225,8 +6252,8 @@ Init_Hash(void)
rb_define_singleton_method(envtbl, "size", env_size, 0);
rb_define_singleton_method(envtbl, "length", env_size, 0);
rb_define_singleton_method(envtbl, "empty?", env_empty_p, 0);
- rb_define_singleton_method(envtbl, "keys", env_keys, 0);
- rb_define_singleton_method(envtbl, "values", env_values, 0);
+ rb_define_singleton_method(envtbl, "keys", env_f_keys, 0);
+ rb_define_singleton_method(envtbl, "values", env_f_values, 0);
rb_define_singleton_method(envtbl, "values_at", env_values_at, -1);
rb_define_singleton_method(envtbl, "include?", env_has_key, 1);
rb_define_singleton_method(envtbl, "member?", env_has_key, 1);
@@ -6234,7 +6261,7 @@ Init_Hash(void)
rb_define_singleton_method(envtbl, "has_value?", env_has_value, 1);
rb_define_singleton_method(envtbl, "key?", env_has_key, 1);
rb_define_singleton_method(envtbl, "value?", env_has_value, 1);
- rb_define_singleton_method(envtbl, "to_hash", env_to_hash, 0);
+ rb_define_singleton_method(envtbl, "to_hash", env_f_to_hash, 0);
rb_define_singleton_method(envtbl, "to_h", env_to_h, 0);
rb_define_singleton_method(envtbl, "assoc", env_assoc, 1);
rb_define_singleton_method(envtbl, "rassoc", env_rassoc, 1);