Skip to content

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

@HoneyryderChuck

Description

@HoneyryderChuck

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions