diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-02-06 06:50:40 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-02-06 06:50:40 +0000 |
commit | c27ef66dd7dc00fa22dce416dd2080f5da501a47 (patch) | |
tree | b009347de3cc64e15b080506249a52e6db7a7b2b | |
parent | 42ce75cdff741d69927e407ac57b68dd58408111 (diff) |
* compile.c (iseq_compile_each): fix setting is_local flag.
* yarvtest/test_class.rb: add a test for class local isntance variable.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11640 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | compile.c | 2 | ||||
-rw-r--r-- | yarvtest/test_class.rb | 21 |
3 files changed, 28 insertions, 1 deletions
@@ -1,3 +1,9 @@ +Tue Feb 6 15:44:11 2007 Koichi Sasada <ko1@atdot.net> + + * compile.c (iseq_compile_each): fix setting is_local flag. + + * yarvtest/test_class.rb: add a test for class local isntance variable. + Tue Feb 6 14:15:34 2007 Koichi Sasada <ko1@atdot.net> * compile.c, insns.def: remove (get|set)instancevariable2 and add a @@ -3325,7 +3325,7 @@ iseq_compile_each(yarv_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) } case NODE_IASGN: case NODE_IASGN2:{ - int is_local = (nd_type(node) == NODE_IVAR2) ? 1 : 0; + int is_local = (nd_type(node) == NODE_IASGN2) ? 1 : 0; COMPILE(ret, "lvalue", node->nd_value); if (!poped) { ADD_INSN(ret, nd_line(node), dup); diff --git a/yarvtest/test_class.rb b/yarvtest/test_class.rb index 488b3ccfd9..43d3e3aa55 100644 --- a/yarvtest/test_class.rb +++ b/yarvtest/test_class.rb @@ -754,6 +754,27 @@ class TestClass < YarvTestBase ae %q{
class C
def initialize
+ @_v = 1
+ end
+
+ def foo
+ @_v
+ end
+ end
+ class D < C
+ def initialize
+ @_v = 2
+ super
+ end
+ def foo
+ [@_v, super]
+ end
+ end
+ D.new.foo
+ }
+ ae %q{
+ class C
+ def initialize
@_c = 1
end
end
|