diff --git a/lib/ruby/signature/constant_table.rb b/lib/ruby/signature/constant_table.rb index cdc857f2f..bff7ef4c5 100644 --- a/lib/ruby/signature/constant_table.rb +++ b/lib/ruby/signature/constant_table.rb @@ -90,7 +90,7 @@ def constant_scopes_module(name, scopes:) decl.members.each do |member| case member when AST::Members::Include - constant_scopes_module absolute_type_name(name, namespace: namespace), + constant_scopes_module absolute_type_name(member.name, namespace: namespace), scopes: scopes end end diff --git a/test/ruby/signature/constant_table_test.rb b/test/ruby/signature/constant_table_test.rb index 3f109f9d8..1d019af0b 100644 --- a/test/ruby/signature/constant_table_test.rb +++ b/test/ruby/signature/constant_table_test.rb @@ -127,7 +127,12 @@ def test_reference_constant_inherit_module class Set end +module Baz +end +Baz::X: Integer + module Foo::Bar + include Baz end EOF manager.build do |env| @@ -139,6 +144,12 @@ module Foo::Bar assert_equal "::Set", constant.name.to_s assert_equal 'singleton(::Set)', constant.type.to_s end + + table.resolve_constant_reference(TypeName.new(name: :X, namespace: Namespace.empty), context: Namespace.parse("::Foo::Bar")).tap do |constant| + assert_instance_of Constant, constant + assert_equal "::Baz::X", constant.name.to_s + assert_equal '::Integer', constant.type.to_s + end end end end