File tree Expand file tree Collapse file tree 2 files changed +20
-0
lines changed Expand file tree Collapse file tree 2 files changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -907,6 +907,9 @@ def resolve_alias(entry, seen_names)
907907 target = resolve ( entry . target , entry . nesting , seen_names )
908908 return entry unless target
909909
910+ # Self referential alias can be unresolved we should bail out from resolving
911+ return entry if target . first == entry
912+
910913 target_name = target . first #: as !nil
911914 . name
912915 resolved_alias = Entry ::ConstantAlias . new ( target_name , entry )
Original file line number Diff line number Diff line change @@ -1175,6 +1175,23 @@ module D
11751175 assert_equal ( "A::B::C" , entry . target )
11761176 end
11771177
1178+ def test_resolving_non_existing_self_referential_constant_alias
1179+ index ( <<~RUBY )
1180+ module Foo
1181+ SomeClass = ::SomeClass
1182+ UNRESOLVED = SomeClass::CONSTANT
1183+ end
1184+ RUBY
1185+
1186+ entry = @index . resolve ( "Foo::UNRESOLVED" , [ ] ) &.first #: as Entry::UnresolvedConstantAlias
1187+ assert_kind_of ( Entry ::UnresolvedConstantAlias , entry )
1188+ assert_equal ( 3 , entry . location . start_line )
1189+ assert_equal ( "SomeClass::CONSTANT" , entry . target )
1190+
1191+ entry = @index . resolve ( "SomeClass::CONSTANT" , [ "Foo" ] )
1192+ refute ( entry )
1193+ end
1194+
11781195 def test_resolving_qualified_references
11791196 index ( <<~RUBY )
11801197 module Namespace
You can’t perform that action at this time.
0 commit comments