Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/rbs/definition_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -936,7 +936,7 @@ def define_method(methods, definition, method, subst, self_type_methods, defined
raise InvalidOverloadMethodError.new(
type_name: definition.type_name,
method_name: method.name,
kind: :instance,
kind: definition.class_type? ? :singleton : :instance,
members: method.overloads
)
end
Expand Down
20 changes: 20 additions & 0 deletions test/rbs/definition_builder_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1727,6 +1727,26 @@ def foo: (Integer) -> String | ...
end
end

def test_definition_singleton_method_type_def_overload_from_super_no_super
SignatureManager.new do |manager|
manager.files.merge!(Pathname("foo.rbs") => <<-EOF)
class Hello
def self.foo: (Integer) -> String | ...
end
EOF
manager.build do |env|
builder = DefinitionBuilder.new(env: env)

assert_raises RBS::InvalidOverloadMethodError do
builder.build_singleton(type_name("::Hello"))
end.tap do |error|
assert_equal :singleton, error.kind
assert_include error.message, "Invalid method overloading: ::Hello.foo"
end
end
end
end

def test_new_from_included_initialize
SignatureManager.new do |manager|
manager.files.merge!(Pathname("foo.rbs") => <<-EOF)
Expand Down
Loading