Skip to content

Commit

Permalink
Merge pull request #1774 from ksss/always-be-private
Browse files Browse the repository at this point in the history
Always be private
  • Loading branch information
soutaro authored Mar 26, 2024
2 parents 666d4ca + 1408243 commit 7084d83
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 6 deletions.
12 changes: 6 additions & 6 deletions lib/rbs/definition_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -630,12 +630,12 @@ def define_method(methods, definition, method, subst, defined_in:, implemented_i
end

# @type var accessibility: RBS::Definition::accessibility
accessibility = if method.name == :initialize
:private
else
method.accessibility
end

accessibility =
if original.instance? && [:initialize, :initialize_copy, :initialize_clone, :initialize_dup, :respond_to_missing?].include?(method.name)
:private
else
method.accessibility
end
# Skip setting up `super_method` if `implemented_in` is `nil`, that means the type doesn't have implementation.
# This typically happens if the type is an interface.
if implemented_in
Expand Down
21 changes: 21 additions & 0 deletions test/rbs/definition_builder_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1134,7 +1134,19 @@ def test_initialize_new
SignatureManager.new do |manager|
manager.files[Pathname("foo.rbs")] = <<EOF
class Hello
public
def initialize: (String) -> void
def initialize_copy: (self) -> self
def initialize_clone: (self) -> self
def initialize_dup: (self) -> self
def respond_to_missing?: () -> bool
def self.initialize: (String) -> void
def self.initialize_copy: (self) -> self
def self.initialize_clone: (self) -> self
def self.initialize_dup: (self) -> self
def self.respond_to_missing?: () -> bool
end
EOF

Expand All @@ -1144,11 +1156,20 @@ def initialize: (String) -> void
builder.build_instance(type_name("::Hello")).tap do |definition|
assert_instance_of Definition, definition
assert_method_definition definition.methods[:initialize], ["(::String) -> void"], accessibility: :private
assert_method_definition definition.methods[:initialize_copy], ["(self) -> self"], accessibility: :private
assert_method_definition definition.methods[:initialize_clone], ["(self) -> self"], accessibility: :private
assert_method_definition definition.methods[:initialize_dup], ["(self) -> self"], accessibility: :private
assert_method_definition definition.methods[:respond_to_missing?], ["() -> bool"], accessibility: :private
end

builder.build_singleton(type_name("::Hello")).yield_self do |definition|
assert_instance_of Definition, definition
assert_method_definition definition.methods[:new], ["(::String) -> ::Hello"], accessibility: :public
assert_method_definition definition.methods[:initialize], ["(::String) -> void"], accessibility: :public
assert_method_definition definition.methods[:initialize_copy], ["(self) -> self"], accessibility: :public
assert_method_definition definition.methods[:initialize_clone], ["(self) -> self"], accessibility: :public
assert_method_definition definition.methods[:initialize_dup], ["(self) -> self"], accessibility: :public
assert_method_definition definition.methods[:respond_to_missing?], ["() -> bool"], accessibility: :public
end
end
end
Expand Down

0 comments on commit 7084d83

Please sign in to comment.