[前][次][番号順一覧][スレッド一覧]

ruby-changes:25338

From: shugo <ko1@a...>
Date: Tue, 30 Oct 2012 23:59:01 +0900 (JST)
Subject: [ruby-changes:25338] shugo:r37390 (trunk): * eval.c (rb_mod_refine): fix the error message when no block is

shugo	2012-10-30 23:58:47 +0900 (Tue, 30 Oct 2012)

  New Revision: 37390

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=37390

  Log:
    * eval.c (rb_mod_refine): fix the error message when no block is
      given.  [ruby-dev:46319] [Bug #7244]
    
    * test/ruby/test_refinement.rb: related test.

  Modified files:
    trunk/ChangeLog
    trunk/eval.c
    trunk/test/ruby/test_refinement.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 37389)
+++ ChangeLog	(revision 37390)
@@ -1,3 +1,10 @@
+Tue Oct 30 23:59:32 2012  Shugo Maeda  <shugo@r...>
+
+	* eval.c (rb_mod_refine): fix the error message when no block is
+	  given.  [ruby-dev:46319] [Bug #7244]
+
+	* test/ruby/test_refinement.rb: related test.
+
 Tue Oct 30 19:27:48 2012  NAKAMURA Usaku  <usa@r...>
 
 	* process.c (redirect_dup2): set standard handles when new fd is stdio,
Index: eval.c
===================================================================
--- eval.c	(revision 37389)
+++ eval.c	(revision 37390)
@@ -1203,6 +1203,9 @@
     ID id_refinements, id_refined_class;
     VALUE refinements;
 
+    if (!rb_block_given_p()) {
+        rb_raise(rb_eArgError, "no block given");
+    }
     check_class_or_module(klass);
     CONST_ID(id_refinements, "__refinements__");
     refinements = rb_attr_get(module, id_refinements);
Index: test/ruby/test_refinement.rb
===================================================================
--- test/ruby/test_refinement.rb	(revision 37389)
+++ test/ruby/test_refinement.rb	(revision 37390)
@@ -520,4 +520,14 @@
     }
     assert_equal({c2 => c2_ext}, m2.refinements)
   end
+
+  def test_refine_without_block
+    c1 = Class.new
+    e = assert_raise(ArgumentError) {
+      Module.new do
+        refine c1
+      end
+    }
+    assert_equal("no block given", e.message)
+  end
 end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]