diff --git a/lib/syntax_tree/rbs/members.rb b/lib/syntax_tree/rbs/members.rb index cd3a8b9..99f64d4 100644 --- a/lib/syntax_tree/rbs/members.rb +++ b/lib/syntax_tree/rbs/members.rb @@ -16,6 +16,10 @@ def initialize(type, node) def format(q) q.group do + if node.respond_to?(:visibility) && node.visibility + q.text("#{node.visibility} ") + end + q.text("attr_#{type} ") q.text("self.") if node.kind == :singleton q.text(node.name) @@ -43,6 +47,12 @@ def pretty_print(q) q.text("name=") q.pp(node.name) + if node.respond_to?(:visibility) && node.visibility + q.breakable + q.text("visibility=") + q.pp(node.visibility) + end + unless node.ivar_name.nil? q.breakable q.text("ivar_name=") @@ -281,6 +291,10 @@ def format(q) SyntaxTree::RBS::Annotations.maybe_format(q, annotations) q.group do + if respond_to?(:visibility) && visibility + q.text("#{visibility} ") + end + q.text("def ") if kind == :singleton @@ -332,6 +346,12 @@ def pretty_print(q) q.text("name=") q.pp(name) + if respond_to?(:visibility) && visibility + q.breakable + q.text("visibility=") + q.pp(visibility) + end + if overload? q.breakable q.text("overload") diff --git a/test/fixtures/member.txt b/test/fixtures/member.txt index b6233f3..2fe8932 100644 --- a/test/fixtures/member.txt +++ b/test/fixtures/member.txt @@ -26,3 +26,7 @@ prepend Foo extend Foo private public +private attr_accessor foo: Foo +private attr_accessor foo(@bar): Foo +public attr_accessor foo(): Foo +public attr_writer self.foo(@bar): Foo \ No newline at end of file diff --git a/test/fixtures/method.txt b/test/fixtures/method.txt index dfd4dd6..abef82f 100644 --- a/test/fixtures/method.txt +++ b/test/fixtures/method.txt @@ -15,3 +15,7 @@ def t: ?{ -> void } -> void def `self`: -> void def `: -> void def t: (untyped `untyped`) -> void +private def t: -> ("a" | "b" | "c") +private def self.t: -> void | ... +public def t: -> ("a" & ("b" | "c"))? +public def t: (untyped `untyped`) -> void \ No newline at end of file diff --git a/test/rbs_test.rb b/test/rbs_test.rb index 26373cd..2f8c071 100644 --- a/test/rbs_test.rb +++ b/test/rbs_test.rb @@ -85,7 +85,9 @@ class T "include Foo", "@foo: String", "def t: (T t) -> void", - "prepend Foo" + "prepend Foo", + "private def t: (T t) -> void", + "public attr_accessor foo: Foo", ] test_fixtures("members_with_comments", fixtures) do |fixture| @@ -127,7 +129,9 @@ class T "extend Foo", "include Foo", "def t: (T t) -> void", - "prepend Foo" + "prepend Foo", + "private def t: (T t) -> void", + "public attr_accessor foo: Foo", ] test_fixtures("members_with_annotations", fixtures) do |fixture|