minor fixes
This commit is contained in:
parent
db5c958d2e
commit
7a5cf03d73
@ -2,6 +2,7 @@ require "parfait/value"
|
||||
require "parfait/integer"
|
||||
require "parfait/object"
|
||||
require "parfait/module"
|
||||
require "parfait/meta_class"
|
||||
require "parfait/class"
|
||||
require "parfait/list"
|
||||
require "parfait/word"
|
||||
|
@ -14,6 +14,8 @@ module Parfait
|
||||
super(0)
|
||||
@name = name
|
||||
end
|
||||
attr_reader :name
|
||||
|
||||
# this is a sof check if there are instance variables or "structure"
|
||||
# have to override false, as word answers true
|
||||
def is_value?
|
||||
|
@ -1,4 +1,4 @@
|
||||
module Virtual
|
||||
module Parfait
|
||||
|
||||
# TODO : rethink - possibly needs to be a module to be mixed into Object
|
||||
#
|
||||
|
@ -26,8 +26,8 @@ module Parfait
|
||||
@name = name
|
||||
@code = BinaryCode.new_object name
|
||||
@arg_names = arg_names
|
||||
@locals = []
|
||||
@tmps = []
|
||||
@locals = List.new
|
||||
@tmps = List.new
|
||||
end
|
||||
attr_reader :name , :arg_names , :for_class , :code
|
||||
|
||||
|
@ -19,7 +19,7 @@ module Parfait
|
||||
@instance_methods = List.new_object
|
||||
@name = name
|
||||
@super_class = superclass
|
||||
@meta_class = Virtual::MetaClass.new(self)
|
||||
@meta_class = MetaClass.new(self)
|
||||
end
|
||||
|
||||
def name
|
||||
@ -71,7 +71,7 @@ module Parfait
|
||||
|
||||
# get the method and if not found, try superclasses. raise error if not found
|
||||
def resolve_method m_name
|
||||
raise "uups #{m_name}.#{m_name.class}" unless m_name.is_a? Word
|
||||
raise "uups #{m_name}.#{m_name.class}" unless m_name.is_a?(Word) or m_name.is_a?(String)
|
||||
method = get_instance_method(m_name)
|
||||
return method if method
|
||||
if( @super_class )
|
||||
|
@ -27,7 +27,7 @@ module FakeMem
|
||||
#TODO, this is copied from module Positioned, maybe avoid duplication ?
|
||||
def position
|
||||
if @position == nil
|
||||
raise "position accessed but not set at #{mem_length} for #{self.inspect[0...1000]}"
|
||||
raise "position not set for #{self.class} at #{mem_length} for #{self.inspect[0...1000]}"
|
||||
end
|
||||
@position
|
||||
end
|
||||
|
@ -15,7 +15,7 @@ module Virtual
|
||||
object.init_layout
|
||||
end
|
||||
layout = object.get_layout
|
||||
puts "Layout #{layout.get_object_class.name} #{Machine.instance.objects.include?(layout)}"
|
||||
#puts "Layout #{layout.get_object_class.name} #{Machine.instance.objects.include?(layout)}"
|
||||
keep layout
|
||||
layout.each do |name|
|
||||
inst = object.instance_variable_get "@#{name}".to_sym
|
||||
|
@ -24,7 +24,7 @@ module Virtual
|
||||
elsif( me.is_a? Parfait::Object )
|
||||
# get the function from my class. easy peasy
|
||||
puts "Me is #{me.class}"
|
||||
method = me.get_class.get_instance_method(Virtual.new_word code.name)
|
||||
method = me.get_class.get_instance_method(code.name)
|
||||
raise "Method not implemented #{me.class}.#{code.name}" unless method
|
||||
new_codes << MethodCall.new( method )
|
||||
else
|
||||
@ -39,7 +39,7 @@ module Virtual
|
||||
if ref.type.is_a?(Reference) and ref.type.of_class
|
||||
#find method and call
|
||||
clazz = ref.type.of_class
|
||||
method = clazz.resolve_method Virtual.new_word(code.name)
|
||||
method = clazz.resolve_method code.name
|
||||
raise "No method found #{code.name}" unless method
|
||||
new_codes << MethodCall.new( method )
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user