@@ -53,8 +53,12 @@ def self.load_rbs_builder
5353 end
5454
5555 def self . class_name_of ( klass )
56- klass = klass . superclass if klass . singleton_class?
57- Methods ::MODULE_NAME_METHOD . bind_call klass
56+ while true
57+ name = Methods ::MODULE_NAME_METHOD . bind_call klass
58+ return name if name
59+
60+ klass = klass . superclass
61+ end
5862 end
5963
6064 if RBS ::TypeName . respond_to? ( :parse ) # RBS >= 3.8.0
@@ -69,9 +73,11 @@ def self.rbs_absolute_type_name(name)
6973 end
7074
7175 def self . rbs_search_method ( klass , method_name , singleton )
76+ return unless rbs_builder
77+
7278 klass . ancestors . each do |ancestor |
73- name = class_name_of ancestor
74- next unless name && rbs_builder
79+ next unless ( name = Methods :: MODULE_NAME_METHOD . bind_call ( ancestor ) )
80+
7581 type_name = rbs_absolute_type_name ( name )
7682 definition = ( singleton ? rbs_builder . build_singleton ( type_name ) : rbs_builder . build_instance ( type_name ) ) rescue nil
7783 method = definition . methods [ method_name ] if definition
@@ -219,9 +225,9 @@ def types() = [self]
219225 def nillable? ( ) = ( @klass == NilClass )
220226 def nonnillable ( ) = self
221227 def rbs_methods
222- name = Types . class_name_of ( @klass )
223- return { } unless name && Types . rbs_builder
228+ return { } unless Types . rbs_builder
224229
230+ name = Types . class_name_of ( @klass )
225231 type_name = Types . rbs_absolute_type_name ( name )
226232 Types . rbs_builder . build_instance ( type_name ) . methods rescue { }
227233 end
0 commit comments