[#10853] Why limit class def to a constant or colon node? — Charles Oliver Nutter <charles.nutter@...>

Is there a historical reason why I can't do something like these:

12 messages 2007/04/03

[#10933] Cannot build with extra library path if previous version already installed — <noreply@...>

Bugs item #10140, was opened at 2007-04-16 17:32

10 messages 2007/04/16
[#10934] Re: [ ruby-Bugs-10140 ] Cannot build with extra library path if previous version already installed — nobu@... 2007/04/16

Hi,

[#10960] Re: [ ruby-Bugs-10140 ] Cannot build with extra library path if previous version already installed — "Michal Suchanek" <hramrach@...> 2007/04/18

On 4/16/07, nobu@ruby-lang.org <nobu@ruby-lang.org> wrote:

[#10967] Re: [ ruby-Bugs-10140 ] Cannot build with extra library path if previous version already installed — Nobuyoshi Nakada <nobu@...> 2007/04/19

Hi,

[#10970] Re: [ ruby-Bugs-10140 ] Cannot build with extra library path if previous version already installed — "Michal Suchanek" <hramrach@...> 2007/04/19

On 4/19/07, Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:> Hi,>> At Wed, 18 Apr 2007 20:21:44 +0900,> Michal Suchanek wrote in [ruby-core:10960]:> > Yes. And this should also apply to extensions. The mkmf tests are now> > fine but the extension is linked with -L/sw/lib before -L../..>> Indeed.>>> Index: configure.in> ===================================================================> --- configure.in (revision 12191)> +++ configure.in (working copy)> @@ -1385,5 +1385,4 @@ if test "$enable_rpath" = yes; then> fi>> -LDFLAGS="-L. $LDFLAGS"> AC_SUBST(ARCHFILE)>This would break the previous fix so I did not even try to apply this ^

[#11003] miniruby loads extensions from already installed ruby — <noreply@...>

Bugs item #10303, was opened at 2007-04-23 10:44

10 messages 2007/04/23

[#11025] gsub with backslash characters in replacement string — "Adam Bozanich" <adam.boz@...>

Hello, spotted this one the other day:

10 messages 2007/04/26

[ ruby-Bugs-9462 ] BUGS in metaclasses inheritance

From: <noreply@...>
Date: 2007-04-23 12:15:02 UTC
List: ruby-core #11005
Bugs item #9462, was opened at 2007-03-22 11:19
You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=9462&group_id=426

Category: Core
Group: 1.8.x
Status: Open
Resolution: None
Priority: 3
Submitted By: Chauk-Mean P (chauk-mean)
Assigned to: Nobody (None)
Summary: BUGS in metaclasses inheritance

Initial Comment:
 
The inheritance between metaclasses (noted between parentheses) 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 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) !

Chauk-Mean.


----------------------------------------------------------------------

Comment By: Paolo Perrotta (paoloperrotta)
Date: 2007-04-23 14:14

Message:
I tried this:

  class Object
   # good old eigenclass accessor
   def eigenclass; class << self; self; end; end
  end

  class A; end
  class B < A; end
  b = B.new

  p "super of eigen of b: #{b.eigenclass.superclass}"
  p "super of eigen of B: #{B.eigenclass.superclass}"
  p "super of eigen of A: #{A.eigenclass.superclass}"

Ruby 1.8.2 and Ruby 1.9 give the same result (consistent with method lookup):

  MacNusco:/usr/bin nusco$ ruby -v /strange.rb
  ruby 1.8.2 (2004-12-25) [universal-darwin8.0]
  "super of eigen of b: B"
  "super of eigen of B: #<Class:A>"
  "super of eigen of A: #<Class:Object>"

Ruby 1.8.5 and 1.8.6 seem to be bugged:

  MacNusco:/ nusco$ ruby -v /strange.rb
  ruby 1.8.6 (2007-03-13 patchlevel 0) [i686-darwin8.9.1]
  "super of eigen of b: #<Class:B>"
  "super of eigen of B: #<Class:Class>"
  "super of eigen of A: #<Class:Class>"


----------------------------------------------------------------------

You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=9462&group_id=426

In This Thread

Prev Next