better no method no super handling

also revealed bug in booting
This commit is contained in:
Torsten Ruger 2015-11-08 00:54:24 +02:00
parent ab7e517e9e
commit 3e4dcd35c7
3 changed files with 6 additions and 3 deletions

View File

@ -71,7 +71,6 @@ module Parfait
return method if method return method if method
if( self.super_class_name ) if( self.super_class_name )
method = self.super_class.resolve_method(m_name) method = self.super_class.resolve_method(m_name)
raise "Method not found #{m_name}, for \n#{self}" unless method
end end
method method
end end

View File

@ -63,7 +63,10 @@ module Parfait
end end
def super_class def super_class
Parfait::Space.object_space.get_class_by_name(self.super_class_name) raise "No super_class for class #{self.name}" unless self.super_class_name
s = Parfait::Space.object_space.get_class_by_name(self.super_class_name)
raise "superclass not found for class #{self.name} (#{self.super_class_name})" unless s
s
end end

View File

@ -120,11 +120,12 @@ module Register
:Space => {:classes => :Dictionary , :first_message => :Message}, :Space => {:classes => :Dictionary , :first_message => :Message},
:Frame => {:next_frame => :Frame, :indexed_length => :Integer}, :Frame => {:next_frame => :Frame, :indexed_length => :Integer},
:Layout => {:object_class => :Class, :instance_methods => :List , :indexed_length => :Integer} , :Layout => {:object_class => :Class, :instance_methods => :List , :indexed_length => :Integer} ,
:Class => {:object_layout => :Layout, :name => :Word, :instance_methods => :List, :Class => {:instance_methods => :List, :object_layout => :Layout, :name => :Word,
:super_class_name => :Word}, :super_class_name => :Word},
:Dictionary => {:keys => :List , :values => :List } , :Dictionary => {:keys => :List , :values => :List } ,
:Method => {:name => :Word, :source => :Object, :instructions => :Object, :binary => :Object, :Method => {:name => :Word, :source => :Object, :instructions => :Object, :binary => :Object,
:arguments => :List , :for_class => :Class, :locals => :List } , :arguments => :List , :for_class => :Class, :locals => :List } ,
:Value => {},
:Variable => {:type => :Class, :name => :Word , :value => :Object} :Variable => {:type => :Class, :name => :Word , :value => :Object}
} }
end end