mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Show the name Kernel#proc
in the warning message
This commit is contained in:
parent
3816622fbe
commit
bf34ade7ef
3 changed files with 17 additions and 10 deletions
16
proc.c
16
proc.c
|
@ -741,7 +741,7 @@ rb_func_lambda_new(rb_block_call_func_t func, VALUE val, int min_argc, int max_a
|
|||
static const char proc_without_block[] = "tried to create Proc object without a block";
|
||||
|
||||
static VALUE
|
||||
proc_new(VALUE klass, int8_t is_lambda)
|
||||
proc_new(VALUE klass, int8_t is_lambda, int8_t kernel)
|
||||
{
|
||||
VALUE procval;
|
||||
const rb_execution_context_t *ec = GET_EC();
|
||||
|
@ -757,11 +757,13 @@ proc_new(VALUE klass, int8_t is_lambda)
|
|||
rb_raise(rb_eArgError, proc_without_block);
|
||||
}
|
||||
else {
|
||||
rb_warn("Capturing the given block using Proc.new is deprecated; use `&block` instead");
|
||||
const char *name = kernel ? "Kernel#proc" : "Proc.new";
|
||||
rb_warn("Capturing the given block using %s is deprecated; "
|
||||
"use `&block` instead", name);
|
||||
}
|
||||
}
|
||||
#else
|
||||
if (0)
|
||||
if (0);
|
||||
#endif
|
||||
else {
|
||||
rb_raise(rb_eArgError, proc_without_block);
|
||||
|
@ -817,7 +819,7 @@ proc_new(VALUE klass, int8_t is_lambda)
|
|||
static VALUE
|
||||
rb_proc_s_new(int argc, VALUE *argv, VALUE klass)
|
||||
{
|
||||
VALUE block = proc_new(klass, FALSE);
|
||||
VALUE block = proc_new(klass, FALSE, FALSE);
|
||||
|
||||
rb_obj_call_init_kw(block, argc, argv, RB_PASS_CALLED_KEYWORDS);
|
||||
return block;
|
||||
|
@ -826,7 +828,7 @@ rb_proc_s_new(int argc, VALUE *argv, VALUE klass)
|
|||
VALUE
|
||||
rb_block_proc(void)
|
||||
{
|
||||
return proc_new(rb_cProc, FALSE);
|
||||
return proc_new(rb_cProc, FALSE, FALSE);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -839,13 +841,13 @@ rb_block_proc(void)
|
|||
static VALUE
|
||||
f_proc(VALUE _)
|
||||
{
|
||||
return rb_block_proc();
|
||||
return proc_new(rb_cProc, FALSE, TRUE);
|
||||
}
|
||||
|
||||
VALUE
|
||||
rb_block_lambda(void)
|
||||
{
|
||||
return proc_new(rb_cProc, TRUE);
|
||||
return proc_new(rb_cProc, TRUE, FALSE);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -56,7 +56,7 @@ describe "Kernel#proc" do
|
|||
|
||||
-> {
|
||||
some_method { "hello" }
|
||||
}.should complain(/Capturing the given block using Proc.new is deprecated/)
|
||||
}.should complain(/Capturing the given block using Kernel#proc is deprecated/)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -55,7 +55,10 @@ class TestProc < Test::Unit::TestCase
|
|||
|
||||
def assert_arity(n)
|
||||
meta = class << self; self; end
|
||||
meta.class_eval {define_method(:foo, Proc.new)}
|
||||
b = assert_warn(/Capturing the given block using Proc\.new is deprecated/) do
|
||||
Proc.new
|
||||
end
|
||||
meta.class_eval {define_method(:foo, b)}
|
||||
assert_equal(n, method(:foo).arity)
|
||||
end
|
||||
|
||||
|
@ -1413,8 +1416,10 @@ class TestProc < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def method_for_test_proc_without_block_for_symbol
|
||||
assert_warn(/Capturing the given block using Kernel#proc is deprecated/) do
|
||||
binding.eval('proc')
|
||||
end
|
||||
end
|
||||
|
||||
def test_proc_without_block_for_symbol
|
||||
assert_equal('1', method_for_test_proc_without_block_for_symbol(&:to_s).call(1), '[Bug #14782]')
|
||||
|
|
Loading…
Reference in a new issue