Fixing self type creation

When compiling a classs, we pick up all instance variables.
Now that conditions and returns can be calls, that was broken, now fixed
This commit is contained in:
2019-08-17 15:58:27 +03:00
parent d3f3c91ae5
commit ae7f31381b
6 changed files with 165 additions and 18 deletions

View File

@ -8,7 +8,8 @@ module Vool
end
def each(&block)
block.call(@return_value)
block.call(self)
@return_value.each(&block)
end
# Since the return is normalized to only allow simple values it is simple.

View File

@ -17,6 +17,9 @@ module Vool
def to_s
name.to_s
end
def each(&block)
block.call(self)
end
end
class InstanceVariable < Expression
@ -31,10 +34,16 @@ module Vool
def to_s(depth = 0)
at_depth(depth , "@#{name}")
end
def each(&block)
block.call(self)
end
end
class ClassVariable < Expression
include Named
def each(&block)
block.call(self)
end
end
class ModuleName < Expression
@ -48,5 +57,8 @@ module Vool
def get_named_class
Parfait.object_space.get_class_by_name(self.name)
end
def each(&block)
block.call(self)
end
end
end

View File

@ -23,7 +23,7 @@ module Vool
def each(&block)
block.call(self)
block.call(@condition)
@condition.each(&block)
@hoisted.each(&block) if @hoisted
@body.each(&block)
end