[ruby-dev:47960] [Backport200 - Backport #8928] [Closed] instance_variable_defined?, instance_variable_get, instance_variable_set へ インスタンス変数名として `@`, :`@` を渡した時の挙動が、2.0以降で異なる。
From:
nagachika00@...
Date:
2014-02-05 14:51:56 UTC
List:
ruby-dev #47960
Issue #8928 has been updated by Tomoyuki Chikanaga.
Status changed from Assigned to Closed
Applied in changeset r44845.
----------
merge revision(s) r42988: [Backport #8928]
* parse.y (intern_str): sigil only names are junk, at least one
identifier character is needed. [ruby-dev:47723] [Bug #8928]
* parse.y (rb_enc_symname_type): fix out of bound access.
----------------------------------------
Backport #8928: instance_variable_defined?, instance_variable_get, instance=
_variable_set =E3=81=B8 =E3=82=A4=E3=83=B3=E3=82=B9=E3=82=BF=E3=83=B3=E3=82=
=B9=E5=A4=89=E6=95=B0=E5=90=8D=E3=81=A8=E3=81=97=E3=81=A6 `@`, :`@` =E3=82=
=92=E6=B8=A1=E3=81=97=E3=81=9F=E6=99=82=E3=81=AE=E6=8C=99=E5=8B=95=E3=81=8C=
=E3=80=812.0=E4=BB=A5=E9=99=8D=E3=81=A7=E7=95=B0=E3=81=AA=E3=82=8B=E3=80=82
https://bugs.ruby-lang.org/issues/8928#change-44973
* Author: Kenichi Kamiya
* Status: Closed
* Priority: Low
* Assignee: Tomoyuki Chikanaga
* Category:=20
* Target version:=20
* ruby -v:=20
----------------------------------------
=E6=9C=9F=E5=BE=85=E3=81=97=E3=81=9F=E7=B5=90=E6=9E=9C
-----------
=E6=AC=A1=E3=81=AE=E3=81=84=E3=81=9A=E3=82=8C=E3=81=8B=E3=81=AB=E3=81=AA=E3=
=82=8B=E3=81=93=E3=81=A8=E3=82=92=E6=9C=9F=E5=BE=85=E3=81=97=E3=81=BE=E3=81=
=97=E3=81=9F=E3=80=82
* @=E3=82=92=E3=82=A4=E3=83=B3=E3=82=B9=E3=82=BF=E3=83=B3=E3=82=B9=E5=A4=89=
=E6=95=B0=E5=90=8D=E3=81=A8=E3=81=97=E3=81=A6=E5=88=A9=E7=94=A8=E3=81=99=E3=
=82=8B=E3=81=93=E3=81=A8=E3=81=8C=E7=A6=81=E3=81=98=E3=82=89=E3=82=8C=E3=81=
=A6=E3=81=84=E3=82=8B=E3=81=AE=E3=81=A7=E3=81=82=E3=82=8C=E3=81=B0=E3=80=81
String=E3=81=A7=E6=B8=A1=E3=81=97=E3=81=A6=E3=82=82Symbol=E3=81=A7=E6=B8=
=A1=E3=81=97=E3=81=A6=E3=82=82=E4=BE=8B=E5=A4=96=E3=81=8C=E7=99=BA=E7=94=9F=
=E3=81=99=E3=82=8B=E3=80=82
* =E3=81=9D=E3=81=86=E3=81=A7=E3=81=AA=E3=81=91=E3=82=8C=E3=81=B0=E3=80=811=
.8.7~1.9.3=E3=81=A8=E5=90=8C=E3=81=98=E5=80=A4=E3=82=92=E8=BF=94=E3=81=99=
=E3=80=82
=E5=AE=9F=E9=9A=9B=E3=81=AE=E7=B5=90=E6=9E=9C
---------
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
ruby 1.9.3p429 (2013-05-15 revision 40747) [x86_64-linux]
ruby -e "p Object.new.instance_variable_defined?(:'@')" # =3D> false
ruby -e "p Object.new.instance_variable_defined?('@')" # =3D> false
ruby -e "p Object.new.instance_variable_get(:'@')" # =3D> nil
ruby -e "p Object.new.instance_variable_get('@')" # =3D> nil
ruby -e "p Object.new.instance_variable_set(:'@', nil)" # =3D> nil
ruby -e "p Object.new.instance_variable_set('@', nil)" # =3D> nil
---
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
ruby -e "p Object.new.instance_variable_defined?(:'@')" # =3D> false
ruby -e "p Object.new.instance_variable_defined?('@')" # =3D> `instance_va=
riable_defined?': `@' is not allowed as an instance variable name (NameErro=
r)
ruby -e "p Object.new.instance_variable_get(:'@')" # =3D> nil
ruby -e "p Object.new.instance_variable_get('@')" # =3D> `instance_va=
riable_get': `@' is not allowed as an instance variable name (NameError)
ruby -e "p Object.new.instance_variable_set(:'@', nil)" # =3D> nil
ruby -e "p Object.new.instance_variable_set('@', nil)" # =3D> nil
---
ruby 2.1.0dev (2013-09-19 trunk 42975) [x86_64-linux]
ruby -e "p Object.new.instance_variable_defined?(:'@')" # =3D> false
ruby -e "p Object.new.instance_variable_defined?('@')" # =3D> `instance_va=
riable_defined?': `@' is not allowed as an instance variable name (NameErro=
r)
ruby -e "p Object.new.instance_variable_get(:'@')" # =3D> nil
ruby -e "p Object.new.instance_variable_get('@')" # =3D> `instance_va=
riable_get': `@' is not allowed as an instance variable name (NameError)
ruby -e "p Object.new.instance_variable_set(:'@', nil)" # =3D> nil
ruby -e "p Object.new.instance_variable_set('@', nil)" # =3D> `instance_va=
riable_set': `@' is not allowed as an instance variable name (NameError)
--=20
http://bugs.ruby-lang.org/