@@ -1156,6 +1156,14 @@ def self.initialize_clone: (self) -> self
11561156 def self.initialize_dup: (self) -> self
11571157 def self.respond_to_missing?: () -> bool
11581158end
1159+
1160+ class DirectPublic
1161+ public def initialize: () -> void
1162+ public def initialize_copy: (self) -> self
1163+ public def initialize_clone: (self) -> self
1164+ public def initialize_dup: (self) -> self
1165+ public def respond_to_missing?: () -> bool
1166+ end
11591167EOF
11601168
11611169 manager . build do |env |
@@ -1179,6 +1187,15 @@ def self.respond_to_missing?: () -> bool
11791187 assert_method_definition definition . methods [ :initialize_dup ] , [ "(self) -> self" ] , accessibility : :public
11801188 assert_method_definition definition . methods [ :respond_to_missing? ] , [ "() -> bool" ] , accessibility : :public
11811189 end
1190+
1191+ builder . build_instance ( type_name ( "::DirectPublic" ) ) . tap do |definition |
1192+ assert_instance_of Definition , definition
1193+ assert_method_definition definition . methods [ :initialize ] , [ "() -> void" ] , accessibility : :public
1194+ assert_method_definition definition . methods [ :initialize_copy ] , [ "(self) -> self" ] , accessibility : :public
1195+ assert_method_definition definition . methods [ :initialize_clone ] , [ "(self) -> self" ] , accessibility : :public
1196+ assert_method_definition definition . methods [ :initialize_dup ] , [ "(self) -> self" ] , accessibility : :public
1197+ assert_method_definition definition . methods [ :respond_to_missing? ] , [ "() -> bool" ] , accessibility : :public
1198+ end
11821199 end
11831200 end
11841201 end
@@ -2215,6 +2232,60 @@ def self?.a: () -> void
22152232 end
22162233 end
22172234
2235+ def test_alias_visibility_with_special_method
2236+ SignatureManager . new do |manager |
2237+ manager . files . merge! ( Pathname ( "foo.rbs" ) => <<-EOF )
2238+ class C
2239+ def original: () -> void
2240+ alias initialize original
2241+
2242+ def self.original: () -> void
2243+ alias self.initialize self.original
2244+ end
2245+ EOF
2246+ manager . build do |env |
2247+ builder = DefinitionBuilder . new ( env : env )
2248+
2249+ builder . build_instance ( type_name ( "::C" ) ) . tap do |definition |
2250+ assert_predicate definition . methods [ :original ] , :public?
2251+ assert_predicate definition . methods [ :initialize ] , :private?
2252+ end
2253+
2254+ builder . build_singleton ( type_name ( "::C" ) ) . tap do |definition |
2255+ assert_predicate definition . methods [ :original ] , :public?
2256+ assert_predicate definition . methods [ :initialize ] , :public?
2257+ end
2258+ end
2259+ end
2260+ end
2261+
2262+ def test_attribute_visibility_with_special_method
2263+ SignatureManager . new do |manager |
2264+ manager . files . merge! ( Pathname ( "foo.rbs" ) => <<-EOF )
2265+ class C
2266+ attr_reader initialize: String
2267+ public attr_reader initialize_copy: String
2268+
2269+ attr_reader self.initialize: String
2270+ public attr_reader self.initialize_copy: String
2271+ end
2272+ EOF
2273+ manager . build do |env |
2274+ builder = DefinitionBuilder . new ( env : env )
2275+
2276+ builder . build_instance ( type_name ( "::C" ) ) . tap do |definition |
2277+ assert_predicate definition . methods [ :initialize ] , :private?
2278+ assert_predicate definition . methods [ :initialize_copy ] , :public?
2279+ end
2280+
2281+ builder . build_singleton ( type_name ( "::C" ) ) . tap do |definition |
2282+ assert_predicate definition . methods [ :initialize ] , :public?
2283+ assert_predicate definition . methods [ :initialize_copy ] , :public?
2284+ end
2285+ end
2286+ end
2287+ end
2288+
22182289 def test_def_with_visibility_modifier
22192290 SignatureManager . new do |manager |
22202291 manager . files . merge! ( Pathname ( "foo.rbs" ) => <<-EOF )
0 commit comments