Test/ruby/test_eval.rb

e$B!!$5$5$@$G$9!%e(B

e$B!!0J2<$Ne(B test/ruby/test_eval.rb
e$B$N<:GT$O!$$I$&$7$?$b$N$G$7$g$&$+!%%Fe(B
e$B%9%H$r=q$$$?@DLZ$5$s$KJ9$+$J$$$H%@%a!)!!$G$-$l$P!$$^$D$b$H$5$s$K$3$Ne(B
e$BJU$Ne(B eval e$B$N;EMM$r65$($F$$$?$@$-$?$$5$$O$9$k$s$G$9$,!%e(B

  1. Error:
    test_cvar_scope_with_instance_eval(TestEval):
    TypeError: (eval):1:in test_cvar_scope_with_instance_eval': no class variables available /home/ko1/ruby/trunk/test/ruby/test_eval.rb:359:ininstance_eval’
    /home/ko1/ruby/trunk/test/ruby/test_eval.rb:359:in instance_eval' /home/ko1/ruby/trunk/test/ruby/test_eval.rb:359:intest_cvar_scope_with_instance_eval’

  2. Failure:
    test_fixnum_instance_eval_cvar(TestEval)
    [/home/ko1/ruby/trunk/test/ruby/test_eval.rb:353]:
    [ruby-dev:24213].
    exception expected but was
    Class:
    Message: <"(eval):1:in block in test_fixnum_instance_eval_cvar': no class variables available"> ---Backtrace--- /home/ko1/ruby/trunk/test/ruby/test_eval.rb:353:ininstance_eval’
    /home/ko1/ruby/trunk/test/ruby/test_eval.rb:353:in instance_eval' /home/ko1/ruby/trunk/test/ruby/test_eval.rb:353:inblock in
    test_fixnum_instance_eval_cvar’
    /home/ko1/ruby/trunk/test/ruby/test_eval.rb:353:in
    `test_fixnum_instance_eval_cvar’


  1. Error:
    test_instance_eval_block_basic(TestEval):
    TypeError: no class variables available
    /home/ko1/ruby/trunk/test/ruby/test_eval.rb:179:in block in instance_eval_block_basic_i' /home/ko1/ruby/trunk/test/ruby/test_eval.rb:179:ininstance_eval’
    /home/ko1/ruby/trunk/test/ruby/test_eval.rb:179:in
    instance_eval_block_basic_i' /home/ko1/ruby/trunk/test/ruby/test_eval.rb:127:inblock in
    forall_TYPE’
    /home/ko1/ruby/trunk/test/ruby/test_eval.rb:122:in each' /home/ko1/ruby/trunk/test/ruby/test_eval.rb:122:inforall_TYPE’
    /home/ko1/ruby/trunk/test/ruby/test_eval.rb:166:in
    `test_instance_eval_block_basic’

  2. Failure:
    test_instance_eval_cvar(TestEval)
    [/home/ko1/ruby/trunk/test/ruby/test_eval.rb:200:in block in test_instance_eval_cvar' /home/ko1/ruby/trunk/test/ruby/test_eval.rb:198:ineach’
    /home/ko1/ruby/trunk/test/ruby/test_eval.rb:198:in
    `test_instance_eval_cvar’]:
    <13> expected but was
    <“class”>.

  3. Failure:
    test_instance_eval_string_basic(TestEval)
    [/home/ko1/ruby/trunk/test/ruby/test_eval.rb:148:in rescue in instance_eval_string_basic_i' /home/ko1/ruby/trunk/test/ruby/test_eval.rb:145:ininstance_eval_string_basic_i’
    /home/ko1/ruby/trunk/test/ruby/test_eval.rb:127:in block in forall_TYPE' /home/ko1/ruby/trunk/test/ruby/test_eval.rb:122:ineach’
    /home/ko1/ruby/trunk/test/ruby/test_eval.rb:122:in forall_TYPE' /home/ko1/ruby/trunk/test/ruby/test_eval.rb:132:intest_instance_eval_string_basic’]:
    cannot get cvar from NilClass.
    is not true.

  4. Failure:
    test_nil_instance_eval_cvar(TestEval)
    [/home/ko1/ruby/trunk/test/ruby/test_eval.rb:346]:
    [ruby-dev:24103].
    exception expected but was
    Class:
    Message: <"(eval):1:in test_binding': no class variables available"> ---Backtrace--- /home/ko1/ruby/trunk/test/ruby/test_eval.rb:346:ineval’
    /home/ko1/ruby/trunk/test/ruby/test_eval.rb:346:in eval' /home/ko1/ruby/trunk/test/ruby/test_eval.rb:346:inblock in
    test_nil_instance_eval_cvar’
    /home/ko1/ruby/trunk/test/ruby/test_eval.rb:346:in
    `test_nil_instance_eval_cvar’

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32333] test/ruby/test_eval.rb”
on Thu, 22 Nov 2007 19:12:54 +0900, SASADA Koichi [email protected]
writes:

|e$B!!0J2<$Ne(B test/ruby/test_eval.rb e$B$N<:GT$O!$$I$&$7$?$b$N$G$7$g$&$+!%%Fe(B
|e$B%9%H$r=q$$$?@DLZ$5$s$KJ9$+$J$$$H%@%a!)!!$G$-$l$P!$$^$D$b$H$5$s$K$3$Ne(B
|e$BJU$Ne(B eval e$B$N;EMM$r65$($F$$$?$@$-$?$$5$$O$9$k$s$G$9$,!%e(B

e$B$A$g$C$H9M$($F$_$^$7$?!#e(B

| 2) Error:
|test_cvar_scope_with_instance_eval(TestEval):
|TypeError: (eval):1:in test_cvar_scope_with_instance_eval': no |class variables available | /home/ko1/ruby/trunk/test/ruby/test_eval.rb:359:in instance_eval’
| /home/ko1/ruby/trunk/test/ruby/test_eval.rb:359:in instance_eval' | /home/ko1/ruby/trunk/test/ruby/test_eval.rb:359:in |test_cvar_scope_with_instance_eval’

eval()e$B$Ge(Bcrefe$B$,5M$^$l$F$$$^$;$s!#e(Bcrefe$B$,8+$($J$$$N$Ge(B

no class variables available (TypeError)

e$B$,H/@8$7$F$$$^$9!#e(Binstance_evale$B$G$O%+%l%s%H$Ne(Bcrefe$B$,;2>H$G$-$ke(B
e$B$O$:$G$9e(B(e$B$,!"<+NO$G$OD>$;$^$;$s$G$7$?e(B)e$B!#e(B

e$B0J2<!"e(B3, 4, 6,
7e$B$bF1$8$G$9e(B(e$B$?$@!"e(B6e$B$O$A$g$C$H0c$&$+$be(B)e$B!#e(B

| 5) Failure:
|test_instance_eval_cvar(TestEval)
| [/home/ko1/ruby/trunk/test/ruby/test_eval.rb:200:in `block in
|test_instance_eval_cvar’
| /home/ko1/ruby/trunk/test/ruby/test_eval.rb:198:in `each’
| /home/ko1/ruby/trunk/test/ruby/test_eval.rb:198:in
|`test_instance_eval_cvar’]:
|<13> expected but was
|<“class”>.

e$B$3$l$O%F%9%H$,4V0c$C$F$^$9$N$G!"=$@5$7$F$*$-$^$9e(B(e$B$=$l$G$be(Bno
class variables availablee$B$,=P$k$s$G$9$1$Ie(B)e$B!#e(B

                            e$B$^$D$b$He(B e$B$f$-$R$me(B /:|)

e$B!!$5$5$@$G$9!%e(B

Yukihiro M. wrote:

eval()e$B$Ge(Bcrefe$B$,5M$^$l$F$$$^$;$s!#e(Bcrefe$B$,8+$($J$$$N$Ge(B

no class variables available (TypeError)

e$B$,H/@8$7$F$$$^$9!#e(Binstance_evale$B$G$O%+%l%s%H$Ne(Bcrefe$B$,;2>H$G$-$ke(B
e$B$O$:$G$9e(B(e$B$,!"<+NO$G$OD>$;$^$;$s$G$7$?e(B)e$B!#e(B

e$B!!@Q$^$l$F$$$kMM$J5$$,$7$F$$$^$9!%$O$F!)e(B

class C
def m
@@v = 1
end
end

obj = C.new
obj.m
p obj.instance_eval("@@v")
#=> 1

@@v = 2
p obj.instance_eval("@@v")
#=> test.rb:10: warning: class variable access from toplevel
#=> 2

e$B!!$5$5$@$G$9!%e(B

Yukihiro M. wrote:

e$B$I$&$be(Breceivere$B$,e(Bimmediatee$B$N;~$,$@$a$_$?$$$G$9!#e(Bfalsee$B$H$+e(Bnil
e$B$H$+!#e(B

e$B!!$O$$!%$G!$$=$N@)8B$O30$9$Y$-$G$7$g$&$+!%e(B

e$B!![#Kf$J5-21$K$h$k$H!$e(B1.8
e$B$G$b$=$s$J@)8B$,$"$C$?$h$&$J!%$G!$$3$s$J<Be(B
e$BAu$K$J$C$F$?$h$&$J5$$,$9$k$s$G$9$,!%$"$s$^$j$3$NJU$K$3$@$o$C$F$b$7$ge(B
e$B$&$,$J$$5$$b$9$k$N$G!$%(%$%d$H7h$a$F$7$^$C$F$$$$$h$&$J5$$,$7$F$$$^$9!%e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32377] Re: test/ruby/test_eval.rb”
on Tue, 27 Nov 2007 16:07:29 +0900, SASADA Koichi [email protected]
writes:

|Yukihiro M. wrote:
|> eval()e$B$Ge(Bcrefe$B$,5M$^$l$F$$$^$;$s!#e(Bcrefe$B$,8+$($J$$$N$Ge(B
|>
|> no class variables available (TypeError)
|>
|> e$B$,H/@8$7$F$$$^$9!#e(Binstance_evale$B$G$O%+%l%s%H$Ne(Bcrefe$B$,;2>H$G$-$ke(B
|> e$B$O$:$G$9e(B(e$B$,!"<+NO$G$OD>$;$^$;$s$G$7$?e(B)e$B!#e(B
|
|e$B!!@Q$^$l$F$$$kMM$J5$$,$7$F$$$^$9!%$O$F!)e(B

e$B$I$&$be(Breceivere$B$,e(Bimmediatee$B$N;~$,$@$a$_$?$$$G$9!#e(Bfalsee$B$H$+e(Bnil
e$B$H$+!#e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32379] Re: test/ruby/test_eval.rb”
on Tue, 27 Nov 2007 16:41:24 +0900, SASADA Koichi [email protected]
writes:

|Yukihiro M. wrote:
|> e$B$I$&$be(Breceivere$B$,e(Bimmediatee$B$N;~$,$@$a$_$?$$$G$9!#e(Bfalsee$B$H$+e(Bnil
|> e$B$H$+!#e(B
|
|e$B!!$O$$!%$G!$$=$N@)8B$O30$9$Y$-$G$7$g$&$+!%e(B
|
|e$B!![#Kf$J5-21$K$h$k$H!$e(B1.8 e$B$G$b$=$s$J@)8B$,$“$C$?$h$&$J!%$G!$$3$s$J<Be(B
|e$BAu$K$J$C$F$?$h$&$J5$$,$9$k$s$G$9$,!%$”$s$^$j$3$NJU$K$3$@$o$C$F$b$7$ge(B
|e$B$&$,$J$$5$$b$9$k$N$G!$%(%$%d$H7h$a$F$7$^$C$F$$$$$h$&$J5$$,$7$F$$$^$9!%e(B

e$B$(!<!"$o$6$o$6$=$&$7$F$?$s$G$9$+!)e(B

immediatee$B$,e(Breceivere$B$N;~$@$1e(Binstance_evale$B$GDj?t$d%/%i%9JQ?t$,e(B
e$B;2>H$G$-$J$$$H8@$&$N$O9gM}E*$J@)8B$G$O$J$$$h$&$K;W$&$N$G!“$3e(B
e$B$N@)8B$O30$7$F$[$7$$$G$9!#$b$7!”$3$N@)8B$,e(B1.8e$B$K$b$“$C$?$N$@$He(B
e$B$7$?$i!”$=$l$O%P%0$@$HG’Dj$9$Y$-$@$H;W$$$^$9!#e(B

e$B!!$5$5$@$G$9!%e(B

Yukihiro M. wrote:

e$B$(!<!"$o$6$o$6$=$&$7$F$?$s$G$9$+!)e(B

e$B!!$O$$!%e(B

1.8 e$B$Ne(B eval.c:

VALUE
rb_obj_instance_eval(argc, argv, self)
int argc;
VALUE *argv;
VALUE self;
{
VALUE klass;

if (SPECIAL_CONST_P(self)) {

klass = Qnil;
}
else {
klass = rb_singleton_class(self);
}
return specific_eval(argc, argv, klass, self);
}

e$B$3$N!$e(Bklass = Qnil; e$B$NOC$G$7$?!%$s!<!$$J$s$+0c$$$^$9$M!%e(B

immediatee$B$,e(Breceivere$B$N;~$@$1e(Binstance_evale$B$GDj?t$d%/%i%9JQ?t$,e(B
e$B;2>H$G$-$J$$$H8@$&$N$O9gM}E*$J@)8B$G$O$J$$$h$&$K;W$&$N$G!"$3e(B
e$B$N@)8B$O30$7$F$[$7$$$G$9!#$b$7!"$3$N@)8B$,e(B1.8e$B$K$b$"$C$?$N$@$He(B
e$B$7$?$i!"$=$l$O%P%0$@$HG’Dj$9$Y$-$@$H;W$$$^$9!#e(B

@@v = :out

1.instance_eval{
@@v = :in
}

p @@v
1.instance_eval{
p @@v
}

1.8 #=> :in, :in
1.9 #=>
…/trunk/test.rb:2: warning: class variable access from toplevel
…/trunk/test.rb:5:in block in <main>': no class variables available (TypeError) from ../trunk/test.rb:4:ininstance_eval’
from …/trunk/test.rb:4:in `’

e$B!!$3$l$O4qL/$G$9$M$’!%$A$g$C$H9M$(D>$7$^$9!%e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32380] Re: test/ruby/test_eval.rb”
on Tue, 27 Nov 2007 16:48:58 +0900, Yukihiro M.
[email protected] writes:

|immediatee$B$,e(Breceivere$B$N;~$@$1e(Binstance_evale$B$GDj?t$d%/%i%9JQ?t$,e(B
|e$B;2>H$G$-$J$$$H8@$&$N$O9gM}E*$J@)8B$G$O$J$$$h$&$K;W$&$N$G!“$3e(B
|e$B$N@)8B$O30$7$F$[$7$$$G$9!#$b$7!”$3$N@)8B$,e(B1.8e$B$K$b$“$C$?$N$@$He(B
|e$B$7$?$i!”$=$l$O%P%0$@$HG’Dj$9$Y$-$@$H;W$$$^$9!#e(B

e$B$H$3$m$G!“e(B{module,class}_evale$B$N;~$K$Oe(Breceivere$B$re(Bcrefe$B$K@Q$s$G$[e(B
e$B$7$$$C$F8@$C$?$i!”$=$l$OBgJQ$G$9$+!)e(B

e$B!!$5$5$@$G$9!%e(B

Yukihiro M. wrote:

e$B$H$3$m$G!“e(B{module,class}_evale$B$N;~$K$Oe(Breceivere$B$re(Bcrefe$B$K@Q$s$G$[e(B
e$B$7$$$C$F8@$C$?$i!”$=$l$OBgJQ$G$9$+!)e(B

e$B!!$J$s$+A0$bF1$8OCBj$,$"$C$?$h$&$J5$$,$7$F$$$k$N$G$9$,!%e(B

#================================================
CONST = :TOP
class C
CONST = :C
end

C.module_eval{
p CONST
def m
p :defined_in_eval
end
}
C.new.m
#================================================

1.8 #=>
:TOP
:defined_in_eval

1.9 #=>
:C
:defined_in_eval

e$B!!e(B1.9 e$B$G$O@Q$s$G$$$k5$$,$7$^$9!%$`$7$m!$e(B1.8
e$B$G@Q$s$G$$$J$$5$$,$7$J$$e(B
e$B$G$b$J$$$G$9$,!$$I$&$J$s$G$7$g$&!%$=$l$H$b!$e(B1.8
e$B$N5sF0$K$"$o$;$k$Y$-!)e(B

#================================================
CONST = :TOP

class C
CONST = :C
end

C.module_eval %q{
p CONST
def m
p :defined_in_eval
end
}
C.new.m
#================================================

e$B!!J8;zNs$@$H!$e(B1.8, 1.9 e$B$H$b$Ke(B :C, :defined_in_eval
e$B$r=PNO$7$^$9!%e(B

e$B!!<+J,$Oe(B cref
e$B$O@Q$s$G$$$k$D$b$j$J$s$G$9$,!$$^$D$b$H$5$s$O2?EY$+e(B
YARV e$B$G$Oe(B cref
e$B$r@Q$s$G$$$J$$!$$H8@$C$F$$$^$9!%;d$,40c$$$7$F$$$k2De(B
e$BG=@-$OB?!9$"$k$N$G!$6qBNE
$K!V!A!A$H$$$&7k2L$r=P$9$?$a$Ke(B /
e$B:#$O$3$se(B
e$B$JJQ$J7k2L$,=P$k$N$Ge(B cref
e$B$r@Q$a!W$H$$$&$4;X<($rD:$1$k$H=u$+$j$^$9!%e(B

e$B!!$5$5$@$G$9!%e(B

Yukihiro M. wrote:

e$B$$$^$9!#$3$l$Oe(Bcrefe$B$r$?$I$m$&$H$7$?$,%j%s%/%j%9%H$,6u$@$C$?;~e(B
e$B$K5/$-$k%(%i!<$N$h$&$K8+$($^$9!#e(B

e$B!!$3$l$O!$B?J,!$@hF|$N%]%9%H$K$"$ke(B Fixnum e$BEy$N!!e(BImmutable
e$B$rFCJL07$$e(B
e$B$7$F$$$kItJ,$N$?$a$+$H;W$$$^$9!%$,!$3NG’$7$^$9!%$?$@$Ne(B cvar
e$B$N%P%0$Je(B
e$B5$$b$7$^$9!%e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32391] Re: test/ruby/test_eval.rb”
on Wed, 28 Nov 2007 15:30:09 +0900, SASADA Koichi [email protected]
writes:

|Yukihiro M. wrote:
|> e$B$H$3$m$G!“e(B{module,class}_evale$B$N;~$K$Oe(Breceivere$B$re(Bcrefe$B$K@Q$s$G$[e(B
|> e$B$7$$$C$F8@$C$?$i!”$=$l$OBgJQ$G$9$+!)e(B
|
|e$B!!$J$s$+A0$bF1$8OCBj$,$“$C$?$h$&$J5$$,$7$F$$$k$N$G$9$,!%e(B
|
|#================================================
|CONST = :TOP
|class C
| CONST = :C
|end
|
|C.module_eval{
| p CONST
| def m
| p :defined_in_eval
| end
|}
|C.new.m
|#================================================
|
|1.8 #=>
|:TOP
|:defined_in_eval
|
|1.9 #=>
|:C
|:defined_in_eval
|
|e$B!!e(B1.9 e$B$G$O@Q$s$G$$$k5$$,$7$^$9!%$`$7$m!$e(B1.8 e$B$G@Q$s$G$$$J$$5$$,$7$J$$e(B
|e$B$G$b$J$$$G$9$,!$$I$&$J$s$G$7$g$&!%$=$l$H$b!$e(B1.8 e$B$N5sF0$K$”$o$;$k$Y$-!)e(B

e$B$3$l$O3NG’$,B-$j$:?=$7Lu$J$$$G$9!#e(B1.9e$B$N8=>u$G9=$$$^$;$s!#e(B1.8
e$B$K9g$o$;$kI,MW$O$"$j$^$;$s!#e(B

|e$B!!<+J,$Oe(B cref e$B$O@Q$s$G$$$k$D$b$j$J$s$G$9$,!$$^$D$b$H$5$s$O2?EY$+e(B
|YARV e$B$G$Oe(B cref e$B$r@Q$s$G$$$J$$!$$H8@$C$F$$$^$9!%;d$,40c$$$7$F$$$k2De(B
|e$BG=@-$OB?!9$"$k$N$G!$6qBNE
$K!V!A!A$H$$$&7k2L$r=P$9$?$a$Ke(B / e$B:#$O$3$se(B
|e$B$JJQ$J7k2L$,=P$k$N$Ge(B cref e$B$r@Q$a!W$H$$$&$4;X<($rD:$1$k$H=u$+$j$^$9!%e(B

e$B$O$$!#:#2s$N%F%9%H$Ge(B

no class variables available

e$B$H$$$&%(%i!<$,=P$k%1!<%9$Oe(Bcrefe$B$,@Q$^$l$F$$$J$$$N$@$HG’<1$7$Fe(B
e$B$$$^$9!#$3$l$Oe(Bcrefe$B$r$?$I$m$&$H$7$?$,%j%s%/%j%9%H$,6u$@$C$?;~e(B
e$B$K5/$-$k%(%i!<$N$h$&$K8+$($^$9!#e(B