50
50
if node . receiver . nil? && node . name == :prepend && definitions . current_node_type == "class" && !node . arguments . nil? && %i[ constant_read_node constant_path_node ] . include? ( node . arguments . arguments . first . type )
51
51
definitions . add_prepend_module ( node . arguments . arguments . first . to_source )
52
52
end
53
+ if node . receiver . nil? && node . name == :extend && definitions . current_node_type == "class" && !node . arguments . nil? && %i[ constant_read_node constant_path_node ] . include? ( node . arguments . arguments . first . type )
54
+ definitions . add_extend_module ( node . arguments . arguments . first . to_source )
55
+ end
53
56
end
54
57
55
58
add_callback :call_node , at : 'start' do |node |
@@ -142,6 +145,10 @@ def add_prepend_module(name)
142
145
@node . prepend_modules . push ( name )
143
146
end
144
147
148
+ def add_extend_module ( name )
149
+ @node . extend_modules . push ( name )
150
+ end
151
+
145
152
def add_method ( name )
146
153
method_definition = MethodDefinition . new ( parent : @node , name : name )
147
154
@node . methods . push ( method_definition )
@@ -286,7 +293,7 @@ def to_h
286
293
end
287
294
288
295
class ClassDefinition < BaseDefinition
289
- attr_reader :parent , :name , :superclass , :modules , :classes , :methods , :static_methods , :constants , :include_modules , :prepend_modules
296
+ attr_reader :parent , :name , :superclass , :modules , :classes , :methods , :static_methods , :constants , :include_modules , :prepend_modules , :extend_modules
290
297
attr_accessor :singleton , :ancestors
291
298
292
299
def initialize ( parent :, name :, superclass :)
@@ -300,6 +307,7 @@ def initialize(parent:, name:, superclass:)
300
307
@constants = [ ]
301
308
@include_modules = [ ]
302
309
@prepend_modules = [ ]
310
+ @extend_modules = [ ]
303
311
@ansestors = [ ]
304
312
end
305
313
@@ -314,6 +322,7 @@ def to_h
314
322
constants : @constants ,
315
323
include_modules : @include_modules ,
316
324
prepend_modules : @prepend_modules ,
325
+ extend_modules : @extend_modules ,
317
326
singleton : @singleton &.to_h ,
318
327
ancestors : @ancestors
319
328
}
0 commit comments