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

ruby-changes:40455

From: nobu <ko1@a...>
Date: Wed, 11 Nov 2015 17:38:47 +0900 (JST)
Subject: [ruby-changes:40455] nobu:r52536 (trunk): vm_eval.c: skip internal names

nobu	2015-11-11 17:38:27 +0900 (Wed, 11 Nov 2015)

  New Revision: 52536

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

  Log:
    vm_eval.c: skip internal names
    
    * vm_eval.c (local_var_list_add): skip internal local variable
      name by its type but not if it has a name.  internal local
      variable names are just unique per frame, not globally.
      [ruby-core:71437] [Bug #11674]

  Modified files:
    trunk/ChangeLog
    trunk/test/ruby/test_variable.rb
    trunk/vm_eval.c
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 52535)
+++ ChangeLog	(revision 52536)
@@ -1,3 +1,10 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Wed Nov 11 17:38:24 2015  Nobuyoshi Nakada  <nobu@r...>
+
+	* vm_eval.c (local_var_list_add): skip internal local variable
+	  name by its type but not if it has a name.  internal local
+	  variable names are just unique per frame, not globally.
+	  [ruby-core:71437] [Bug #11674]
+
 Wed Nov 11 14:14:33 2015  SHIBATA Hiroshi  <hsbt@r...>
 
 	* transcode.c: fix a typo
Index: vm_eval.c
===================================================================
--- vm_eval.c	(revision 52535)
+++ vm_eval.c	(revision 52536)
@@ -2066,7 +2066,7 @@ local_var_list_update(st_data_t *key, st https://github.com/ruby/ruby/blob/trunk/vm_eval.c#L2066
 static void
 local_var_list_add(const struct local_var_list *vars, ID lid)
 {
-    if (lid && rb_id2str(lid)) {
+    if (lid && rb_is_local_id(lid)) {
 	/* should skip temporary variable */
 	st_table *tbl = RHASH_TBL_RAW(vars->tbl);
 	st_data_t idx = 0;	/* tbl->num_entries */
Index: test/ruby/test_variable.rb
===================================================================
--- test/ruby/test_variable.rb	(revision 52535)
+++ test/ruby/test_variable.rb	(revision 52536)
@@ -136,4 +136,15 @@ class TestVariable < Test::Unit::TestCas https://github.com/ruby/ruby/blob/trunk/test/ruby/test_variable.rb#L136
       end
     end
   end
+
+  def test_local_variables_with_kwarg
+    bug11674 = '[ruby-core:71437] [Bug #11674]'
+    v = with_kwargs_11(v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8,v9:9,v10:10,v11:11)
+    assert_equal(%i(v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11), v, bug11674)
+  end
+
+  private
+  def with_kwargs_11(v1:, v2:, v3:, v4:, v5:, v6:, v7:, v8:, v9:, v10:, v11:)
+    local_variables
+  end
 end

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

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