diff --git a/lib/decode/language/ruby/parser.rb b/lib/decode/language/ruby/parser.rb index 782bf85..9b43f01 100644 --- a/lib/decode/language/ruby/parser.rb +++ b/lib/decode/language/ruby/parser.rb @@ -202,20 +202,7 @@ def walk_definitions(node, parent = nil, source = nil, &block) if parent if node.arguments node.arguments.arguments.each do |arg| - mod_name = case arg.type - when :constant_read_node - # Qualify with enclosing namespace if available (e.g. Mixins::Greeting) - if parent.parent && parent.parent.respond_to?(:qualified_name) - "#{parent.parent.qualified_name}::#{arg.name}" - else - arg.name.to_s - end - when :constant_path_node - nested_name_for(arg) - else - # Skip unsupported argument types (e.g., dynamic expressions) - nil - end + mod_name = nested_name_for(arg) if mod_name case name when :include diff --git a/test/decode/language/ruby/.fixtures/mixins.rb b/test/decode/language/ruby/.fixtures/mixins.rb index 1bf0877..91435c5 100644 --- a/test/decode/language/ruby/.fixtures/mixins.rb +++ b/test/decode/language/ruby/.fixtures/mixins.rb @@ -12,7 +12,7 @@ def hello class Greeter include Greeting - extend Greeting - prepend Greeting + extend Mixins::Greeting + prepend ::Mixins::Greeting end end diff --git a/test/decode/language/ruby/includes.rb b/test/decode/language/ruby/includes.rb index 2e66e1a..e705292 100644 --- a/test/decode/language/ruby/includes.rb +++ b/test/decode/language/ruby/includes.rb @@ -19,8 +19,8 @@ my_class = definitions.find{|d| d.is_a?(Decode::Language::Ruby::Class) && d.qualified_name == "Mixins::Greeter"} expect(my_class).not.to be_nil - expect(my_class.includes).to be == ["Mixins::Greeting"] + expect(my_class.includes).to be == ["Greeting"] expect(my_class.extends).to be == ["Mixins::Greeting"] - expect(my_class.prepends).to be == ["Mixins::Greeting"] + expect(my_class.prepends).to be == ["::Mixins::Greeting"] end end