diff --git a/lib/rdoc/code_object/attr.rb b/lib/rdoc/code_object/attr.rb index 969b18346d..bfc981f7e8 100644 --- a/lib/rdoc/code_object/attr.rb +++ b/lib/rdoc/code_object/attr.rb @@ -43,7 +43,8 @@ def ==(other) # Add +an_alias+ as an attribute in +context+. def add_alias(an_alias, context) - new_attr = self.class.new(text, an_alias.new_name, rw, comment, singleton: singleton) + access_type = an_alias.new_name.end_with?('=') ? 'W' : 'R' + new_attr = self.class.new(text, an_alias.new_name, access_type, comment, singleton: singleton) new_attr.record_location an_alias.file new_attr.visibility = self.visibility new_attr.is_alias_for = self diff --git a/test/rdoc/code_object/attr_test.rb b/test/rdoc/code_object/attr_test.rb index 8626fb3022..712dbba7ed 100644 --- a/test/rdoc/code_object/attr_test.rb +++ b/test/rdoc/code_object/attr_test.rb @@ -187,4 +187,18 @@ def test_type assert_equal 'class', @a.type end + [ + ['bar', 'baz', 'R'], + ['bar=', 'baz=', 'W'] + ].each do |original_name, new_name, expected_rw| + define_method("test_add_alias_#{new_name}_for_an_attribute_accessor") do + context = RDoc::Context.new + attr = RDoc::Attr.new nil, 'bar', 'RW', '' + an_alias = RDoc::Alias.new nil, original_name, new_name, '' + + new_attr = attr.add_alias an_alias, context + + assert_equal expected_rw, new_attr.rw + end + end end