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::Yit resolvesXtoclass X, which doesn't haveY.Use
::X::Yinstead, to force lookup from top level.