diff --git a/lib/ruby/class_statement.rb b/lib/ruby/class_statement.rb index b5a73bf9..bd0e4c6f 100644 --- a/lib/ruby/class_statement.rb +++ b/lib/ruby/class_statement.rb @@ -39,13 +39,15 @@ module Ruby unless class_send.is_a?(SendStatement) raise "Other than methods, only class methods allowed, not #{class_send.class}" end - unless class_send.name == :attr - raise "Only remapping attr and cattr, not #{class_send.name}" + allowed = [:attr , :attr_reader] + attr_name = class_send.name + unless allowed.include?(attr_name) + raise "Only remapping #{allowed}, not #{attr_name}" end methods = [] class_send.arguments.each do |attr| methods << getter_for(attr.value) - methods << setter_for(attr.value) + methods << setter_for(attr.value) if attr_name == :attr end methods end diff --git a/test/ruby/helper.rb b/test/ruby/helper.rb index 6bcf3eea..097096fe 100644 --- a/test/ruby/helper.rb +++ b/test/ruby/helper.rb @@ -32,5 +32,20 @@ module Ruby def setter @vool.body.statements.last end + def test_class + assert_equal Vool::ClassStatement , @vool.class + end + def test_body + assert_equal Vool::Statements , @vool.body.class + end + def test_getter + assert_equal Vool::MethodStatement , getter.class + end + def test_getter_return + assert_equal Vool::ReturnStatement , getter.body.class + end + def test_getter_name + assert_equal :page , getter.name + end end end diff --git a/test/ruby/test_class_statement2.rb b/test/ruby/test_class_statement2.rb index 9cec264b..b71a458f 100644 --- a/test/ruby/test_class_statement2.rb +++ b/test/ruby/test_class_statement2.rb @@ -8,24 +8,9 @@ module Ruby "attr :page" end - def test_class - assert_equal Vool::ClassStatement , @vool.class - end - def test_body - assert_equal Vool::Statements , @vool.body.class - end def test_method_len assert_equal 2 , @vool.body.length , "setter, getter" end - def test_getter - assert_equal Vool::MethodStatement , getter.class - end - def test_getter_return - assert_equal Vool::ReturnStatement , getter.body.class - end - def test_getter_name - assert_equal :page , getter.name - end def test_setter assert_equal Vool::MethodStatement , setter.class end @@ -44,5 +29,15 @@ module Ruby assert_equal [:val] , setter.args end end + class TestClassStatementTransformReader < MiniTest::Test + include AttributeTests + def attr_def + "attr_reader :page" + end + def test_method_len + assert_equal 1 , @vool.body.length , "setter, getter" + end + + end end diff --git a/test/ruby/test_class_statement3.rb b/test/ruby/test_class_statement3.rb index 24e037d6..dab662aa 100644 --- a/test/ruby/test_class_statement3.rb +++ b/test/ruby/test_class_statement3.rb @@ -7,24 +7,9 @@ module Ruby def attr_def "attr :page , :size" end - def test_class - assert_equal Vool::ClassStatement , @vool.class - end - def test_body - assert_equal Vool::Statements , @vool.body.class - end def test_method_len assert_equal 4 , @vool.body.length , "2 setters, 2 getters" end - def test_getter - assert_equal Vool::MethodStatement , getter.class - end - def test_getter_return - assert_equal Vool::ReturnStatement , getter.body.class - end - def test_getter_name - assert_equal :page , getter.name - end def test_setter assert_equal Vool::MethodStatement , setter.class end