[前][次][番号順一覧][スレッド一覧][生データ]

yarv-diff:84

From: ko1 atdot.net
Date: 15 Aug 2005 21:01:20 -0000
Subject: [yarv-diff:84] r240 - in trunk: . yarvtest

Author: ko1
Date: 2005-08-16 06:01:19 +0900 (Tue, 16 Aug 2005)
New Revision: 240

Modified:
   trunk/ChangeLog
   trunk/insns.def
   trunk/test1.rb
   trunk/vm.c
   trunk/yarvtest/test_method.rb
Log:
	* insns.def : fix to set klass_nest_stack on singleton
	method definition

	* yarvtest/test_method.rb : add a test for above



Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2005-08-15 20:38:49 UTC (rev 239)
+++ trunk/ChangeLog	2005-08-15 21:01:19 UTC (rev 240)
@@ -4,6 +4,13 @@
 #  from Mon, 03 May 2004 01:24:19 +0900
 #
 
+2005-08-16(Tue) 06:00:17 +0900  Koichi Sasada  <ko1 atdot.net>
+
+	* insns.def : fix to set klass_nest_stack on singleton
+	method definition
+
+	* yarvtest/test_method.rb : add a test for above
+
 2005-08-16(Tue) 05:34:48 +0900  Koichi Sasada  <ko1 atdot.net>
 
 	* test1.rb : added.  gdb and run1 rule run this script

Modified: trunk/insns.def
===================================================================
--- trunk/insns.def	2005-08-15 20:38:49 UTC (rev 239)
+++ trunk/insns.def	2005-08-15 21:01:19 UTC (rev 240)
@@ -798,8 +798,10 @@
   }
   
   GetISeqVal(body, iseqobj);
-  iseqobj->klass_nest_stack = rb_ary_dup(th->klass_nest_stack);
-
+  
+  rb_funcall2(iseqobj->klass_nest_stack, rb_intern("replace"),
+              1, &th->klass_nest_stack);
+  
   newbody = NEW_NODE(YARV_METHOD_NODE, NOEX_PUBLIC, body, 0);
 
   rb_add_method(klass, id, newbody, NOEX_PUBLIC); /* TODO: visibility */

Modified: trunk/test1.rb
===================================================================
--- trunk/test1.rb	2005-08-15 20:38:49 UTC (rev 239)
+++ trunk/test1.rb	2005-08-15 21:01:19 UTC (rev 240)
@@ -1,8 +0,0 @@
-1.times{|e|
-  begin
-    raise
-  rescue => err
-  end
-  p err
-  p err.backtrace
-}

Modified: trunk/vm.c
===================================================================
--- trunk/vm.c	2005-08-15 20:38:49 UTC (rev 239)
+++ trunk/vm.c	2005-08-15 21:01:19 UTC (rev 240)
@@ -618,7 +618,9 @@
       /* in module or class scope */
       cref = th->klass_nest_stack;
     }
+    
     last_pos = RARRAY(cref)->len-1;
+
     for(i = last_pos; i>0; i--){
       klass = RARRAY(cref)->ptr[i];
     search_continue:

Modified: trunk/yarvtest/test_method.rb
===================================================================
--- trunk/yarvtest/test_method.rb	2005-08-15 20:38:49 UTC (rev 239)
+++ trunk/yarvtest/test_method.rb	2005-08-15 21:01:19 UTC (rev 240)
@@ -250,7 +250,21 @@
       lobj.m
     }
   end
-
+  
+  def test_singletonmethod_with_const
+    ae %q{
+      class C
+        Const = :C
+        def self.m
+          1.times{
+            Const
+          }
+        end
+      end
+      C.m
+    }
+  end
+  
   def test_alias
     ae %q{
       def m1


--
ML: yarv-diff quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]