adds super

with and without args
current thinking is to fill the name of the method later as we carry no
context currently, but this may change
This commit is contained in:
Torsten Ruger
2017-04-02 18:42:52 +03:00
parent ac7b9138ff
commit 443fd13980
4 changed files with 42 additions and 0 deletions

View File

@ -19,6 +19,8 @@ module Vool
end
class SelfStatement < Statement
end
class SuperStatement < Statement
end
class StringStatement < Statement
attr_accessor :value
def initialize(value)

View File

@ -161,6 +161,22 @@ module Vool
w
end
# this is a call to super without args (z = zero arity)
def on_zsuper exp
w = SendStatement.new( nil )
w.receiver = SuperStatement.new
w
end
# this is a call to super with args and
# same name as current method, which is set later
def on_super( statement )
w = SendStatement.new( nil )
w.receiver = SuperStatement.new
w.arguments = process_all(statement.children)
w
end
# def on_name statement
# NameStatement.new(statement.children.first)
# end

View File

@ -3,6 +3,7 @@ module Vool
attr_accessor :name , :receiver , :arguments
def initialize(name)
@name = name
@arguments = []
end
end
end