# BUGS in metaclasses inheritance

**URL:** <https://www.ruby-forum.com/t/bugs-in-metaclasses-inheritance/89719>\
**Category:** Ruby\
**Created:** [March 22, 2007, 10:01am UTC](https://www.ruby-forum.com/t/bugs-in-metaclasses-inheritance/89719 "2007-03-22T10:01:07Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Chauk-Mean\_P](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/f07891/32.png) [@Chauk-Mean\_P](https://www.ruby-forum.com/u/Chauk-Mean_P)\
**Post date:** [March 22, 2007, 10:01am UTC](https://www.ruby-forum.com/t/bugs-in-metaclasses-inheritance/89719/1 "2007-03-22T10:01:07Z")

</div>

Hi all,

It will probably not change the world but I’ve found 3 bugs regarding  
the  
inheritance between metaclasses both in Ruby 1.8.5 and 1.8.6.

The inheritance should be as defined in the object.c source code (best  
seen  
with a fixed font) :

- 

```
                       +------------------+

```

- 

```
                       | |

```

- 

```
         Object---->(Object) |

```

- 

```
          ^ ^ ^ ^ |

```

- 

```
          | | | | |

```

- 

```
          | | +-----+ +---------+ |

```

- 

```
          | | | | |

```

- 

```
          | +-----------+ | |

```

- 

```
          | | | | |

```

- 

```
   +------+ | Module--->(Module) |

```

- 

```
   | | ^ ^ |

```

- OtherClass–\>(OtherClass) | | |
- 

```
                         | | |

```

- 

```
                       Class---->(Class) |

```

- 

```
                         ^ |

```

- 

```
                         | |

```

- 

```
                         +----------------+

```

- 

The following code and output show that the actual inheritance between  
the  
metaclasses (noted between parentheses) is incorrect :

def inspect\_class name, obj  
puts “#################”  
puts “class : #{name} - id : #{obj.object\_id}”  
puts “superclass : #{obj.superclass.name} - id : #{  
obj.superclass.object\_id}” if obj.superclass  
puts “#################”  
end

class OtherClass  
end

class Object  
inspect\_class self.name, self  
end

class \<\< Object  
inspect\_class “(Object)”, self  
end

class Module  
inspect\_class self.name, self  
end

class \<\< Module  
inspect\_class “(Module)”, self  
end

class Class  
inspect\_class self.name, self  
end

class \<\< Class  
inspect\_class “(Class)”, self  
end

class OtherClass  
inspect\_class self.name, self  
end

class \<\< OtherClass  
inspect\_class “(OtherClass)”, self  
end

The output :

#################  
class : Object - id : 22251190  
#################  
#################  
class : (Object) - id : 22251160  
superclass : Class - id : 22251170  
#################  
#################  
class : Module - id : 22251180  
superclass : Object - id : 22251190  
#################  
#################  
class : (Module) - id : 22251150  
superclass : Class - id : 22251170  
#################  
#################  
class : Class - id : 22251170  
superclass : Module - id : 22251180  
#################  
#################  
class : (Class) - id : 22251140  
superclass : - id : 22251140  
#################  
#################  
class : OtherClass - id : 24175280  
superclass : Object - id : 22251190  
#################  
#################  
class : (OtherClass) - id : 24175220  
superclass : - id : 22251140  
#################

The bugs :

- The superclass of (OtherClass) is (Class) instead of (Object) !

- The superclass of (Class) is (Class) instead of (Module) !

- The superclass of (Module) is (Class) instead of (Object) !

I hope that Matz or another Ruby core developer will see this thread and  
fix  
these bugs.

Chauk-Mean.

---

<div class="post-metadata">

**Author:** ![Chauk-Mean\_P](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/f07891/32.png) [@Chauk-Mean\_P](https://www.ruby-forum.com/u/Chauk-Mean_P)\
**Post date:** [March 22, 2007, 10:07am UTC](https://www.ruby-forum.com/t/bugs-in-metaclasses-inheritance/89719/2 "2007-03-22T10:07:08Z")

</div>

> I hope that Matz or another Ruby core developer will see this thread  
> and fix  
> these bugs.
> 
> Chauk-Mean.

Please submit bugs to the Ruby bug tracker:  
[http://rubyforge.org/tracker/?atid=1698&group\_id=426&func=browse](http://rubyforge.org/tracker/?atid=1698&group_id=426&func=browse)

-Justin

---

<div class="post-metadata">

**Author:** ![Chauk-Mean\_P](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/f07891/32.png) [@Chauk-Mean\_P](https://www.ruby-forum.com/u/Chauk-Mean_P)\
**Post date:** [March 22, 2007, 11:23am UTC](https://www.ruby-forum.com/t/bugs-in-metaclasses-inheritance/89719/3 "2007-03-22T11:23:34Z")

</div>

OK. I’ve just done it:

Issue #9462.

Chauk-Mean.
