rbs icon indicating copy to clipboard operation
rbs copied to clipboard

relative lookup failing when subclass has the same name as eval'ed class

Open HoneyryderChuck opened this issue 4 months ago • 0 comments

I have the following sig defined:

# resolver/resolver.rbs
module HTTPX
  module Resolver
    class Resolver
    end
  end
end

# resolver.rbs
module HTTPX
  module Resolver
    def self?.resolver_for: () -> singleton(Resolver::Resolver)
  end
end

runtime evaluation using runtime rbs/tester.rb fails though, because the parsed type for the method return is wrong, i.e. it evaluates to a RBS::Types::ClassSingleton instance with a namespace declaring @path=[:Resolver], which when evaluated to to_s, evaluates to Resolver::Resolver, instead of HTTPX::Resolver::Resolver.

I found two workarounds:

def self?.resolver_for: () -> singleton(HTTPX::Resolver::Resolver) #=> absolute namespace, bypasses issues
def self?.resolver_for: () -> singleton(Resolver) #=> resolves to class Resolver instead of module Resolver, which seems wrong

HoneyryderChuck avatar Sep 01 '25 10:09 HoneyryderChuck