Given:
# typed: true
module X
class Y
end
end
module X
class X
def y
X::Y
end
end
end
Sorbet gives error :
editor.rb:6: Unable to resolve constant Y https://srb.help/5002
6 | X::Y
Why sorbet given error even though X::Y is defined?
Because this is how constant lookup works in ruby. Roughly, it tries to resolve the name starting from innermost nesting. Therefore, in a your
X::Y
it resolvesX
toclass X
, which doesn't haveY
.Use
::X::Y
instead, to force lookup from top level.