[#42344] [ruby-trunk - Feature #5964][Open] Make Symbols an Alternate Syntax for Strings — Tom Wardrop <tom@...>

23 messages 2012/02/03

[#42443] [ruby-trunk - Bug #5985][Open] miniruby skews "make benchmark" results — Eric Wong <normalperson@...>

21 messages 2012/02/08

[#42444] [ruby-trunk - Bug #5986][Open] Segmentation Fault — Luis Matta <levmatta@...>

16 messages 2012/02/08

[#42471] [ruby-trunk - Feature #5995][Open] calling io_advise_internal() in read_all() — Masaki Matsushita <glass.saga@...>

20 messages 2012/02/10

[#42560] [ruby-trunk - Bug #6011][Open] ruby-1.9.3-p0/lib/webrick/utils.rb:184: [BUG] Segmentation fault — Vit Ondruch <v.ondruch@...>

12 messages 2012/02/13

[#42579] [ruby-trunk - Bug #6012][Open] Proc#source_location also return the column — Roger Pack <rogerpack2005@...>

14 messages 2012/02/14

[#42685] [ruby-trunk - Bug #6036][Open] Test failures in Fedora Rawhide/17 — Bohuslav Kabrda <bkabrda@...>

14 messages 2012/02/16

[#42697] [ruby-trunk - Bug #6040][Open] Transcoding test failure: Big5 to UTF8 not defined (MinGW) — Luis Lavena <luislavena@...>

10 messages 2012/02/16

[#42813] [ruby-trunk - Feature #6065][Open] Allow Bignum marshalling/unmarshalling from C API — Martin Bosslet <Martin.Bosslet@...>

22 messages 2012/02/23

[#42815] [ruby-trunk - Bug #6066][Open] Fix "control may reach end of non-void function" warnings for clang — Eric Hodel <[email protected]>

15 messages 2012/02/23

[#42857] [ruby-trunk - Feature #6074][Open] Allow alias arguments to have a comma — Thomas Sawyer <transfire@...>

20 messages 2012/02/24

[#42891] [ruby-trunk - Feature #6083][Open] Hide a Bignum definition — Koichi Sasada <redmine@...>

23 messages 2012/02/25

[#42906] [ruby-trunk - Bug #6085][Open] Treatment of Wrong Number of Arguments — Marc-Andre Lafortune <ruby-core@...>

14 messages 2012/02/25

[#42949] [ruby-trunk - Bug #6089][Open] Test suite fails with OpenSSL 1.0.1 — Vit Ondruch <v.ondruch@...>

13 messages 2012/02/26

[ruby-core:42615] Re: [ruby-trunk - Bug #6020] Unexpected is_a/kind_of behaviour

From: "Haase, Konstantin" <Konstantin.Haase@...>
Date: 2012-02-14 11:35:06 UTC
List: ruby-core #42615
> Yes, i know how instance is_a? works.

Apparently not.

	def is_a?(module)
	  self.class.ancestors.include? module
	end

	A.is_a? A # false since Module.ancestors =3D=3D [Module, Object, Kernel, B=
asicObject]
	Module.is_a? Module # true since Module.class =3D=3D Class and Class.ances=
tors =3D=3D [Class, Module, Object, Kernel, BasicObject]
	BasicObject.is_a? BasicObject # true since BasicObject.class =3D=3D Class =
and Class.ancestors =3D=3D [Class, Module, Object, Kernel, BasicObject]

Konstantin

On Feb 14, 2012, at 12:23 , Alex N wrote:

>=20
> Issue #6020 has been updated by Alex N.
>=20
>=20
> =3Dbegin
> Yes, i know how instance is_a? works. The problem is that the module owns=
 the same functionality as well.
> For example:
> module A; end
> A.class #=3D> Module
> A.is_a?(A) #=3D> false
> A.is_a?(A.class) #=3D> true
>=20
> From implementation perspective it's totally ok: Module is not A.
> But (({A.ancestors})) is (({[A]})), meanwhile (({Module.ancestors})) it t=
he whole set of the core objects. At the same time module A is an BasicObje=
ct.
> I'm not saying that it's completely wrong, but it feels confusing. On the=
 other had it's really really edge case.
> =3Dend
>=20
> ----------------------------------------
> Bug #6020: Unexpected is_a/kind_of behaviour
> https://bugs.ruby-lang.org/issues/6020
>=20
> Author: Alex N
> Status: Feedback
> Priority: Low
> Assignee:=20
> Category: core
> Target version:=20
> ruby -v: ruby 2.0.0dev (2012-02-14 trunk 34598) [x86_64-darwin11.3.0]
>=20
>=20
> =3Dbegin
> I've noticed some inconsistent is_a?/kind_of? methods behavior in a very =
special cases
> self.class #=3D> Object
>=20
> BasicObject.is_a?(BasicObject) #=3D> true
> Module.is_a?(Module) #=3D> true
> Class.is_a?(Class) #=3D> true
> Object.is_a?(Object) #=3D> true
>=20
> BasicObject.is_a?(Module) #=3D> true
>=20
> Integer.is_a?(Integer) #=3D> false
> class A; end
> A.is_a?(A) #=3D> false
>=20
> module B; end
> B.is_a?(B) #=3D> false
>=20
> class C < Object; end
> C.is_a?(C) #=3D> false
> C.is_a?(Object) #=3D> true
> C.is_a?(BasicObject) #=3D> true
> C.is_a?(Module) #=3D> true
> C.is_a?(Class) #=3D> true
>=20
> c =3D C.new
> c.is_a?(Module) #=3D> false
> c.is_a?(Class) #=3D> false
>=20
> It looks like it's because Class, Module, Object and BasicObject have cla=
ss Class, superclass is set properly.=20
> Anyway all is logical but not expected.=20
> =3Dend
>=20
>=20
>=20
>=20
> --=20
> http://bugs.ruby-lang.org/
>=20


In This Thread