add rewriting of operator assignment

foo += 1 becomes foo = foo + 1 in vool
This commit is contained in:
Torsten Ruger
2018-06-25 16:32:20 +03:00
parent 70d7e654c4
commit 67a6ef9f67
6 changed files with 56 additions and 3 deletions

View File

@ -1,7 +1,7 @@
require_relative "helper"
module Vool
class TestAssignment < MiniTest::Test
class TestIvarAssignment < MiniTest::Test
def test_local
lst = RubyCompiler.compile( "foo = bar")

View File

@ -1,7 +1,7 @@
require_relative "helper"
module Vool
class TestLocal < MiniTest::Test
class TestLocalAssignment < MiniTest::Test
def test_local
lst = RubyCompiler.compile( "foo = bar")

View File

@ -0,0 +1,39 @@
require_relative "helper"
module Vool
module OpAss
def test_local_name
assert_equal :foo , @lst.name
end
def test_local_value
assert_equal SendStatement , @lst.value.class
end
def test_local_method
assert_equal :+ , @lst.value.name
end
def test_local_receiver
assert_equal :foo , @lst.value.receiver.name
end
def test_local_receiver
assert_equal 5 , @lst.value.arguments.first.value
end
end
class TestLocalOpAssign < MiniTest::Test
include OpAss
def setup
@lst = RubyCompiler.compile( "foo += 5")
end
def test_local_ass
assert_equal LocalAssignment , @lst.class
end
end
class TestIvarOpAssign < MiniTest::Test
include OpAss
def setup
@lst = RubyCompiler.compile( "@foo += 5")
end
def test_ivar_ass
assert_equal IvarAssignment , @lst.class
end
end
end