From b97357e6e4649c3e17d2770eb0866317e7602e0f Mon Sep 17 00:00:00 2001 From: Oskar Eichler <62393985+OskarEichler@users.noreply.github.com> Date: Sat, 29 Aug 2026 18:41:45 +0200 Subject: [PATCH 1/2] Handle coreless singleton definitions --- lib/rbs/definition_builder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rbs/definition_builder.rb b/lib/rbs/definition_builder.rb index fd6b61534..ab0f6067d 100644 --- a/lib/rbs/definition_builder.rb +++ b/lib/rbs/definition_builder.rb @@ -346,7 +346,7 @@ def build_singleton(type_name) if entry.is_a?(Environment::ClassEntry) new_method = definition.methods[:new] - if new_method.defs.all? {|d| d.defined_in == BuiltinNames::Class.name } + if new_method && new_method.defs.all? {|d| d.defined_in == BuiltinNames::Class.name } # The method is _untyped new_. alias_methods = definition.methods.each.with_object([]) do |entry, array| From b94521cb5bc164d4bcbdc234b64d3658c23edb95 Mon Sep 17 00:00:00 2001 From: Yusuke Endoh Date: Fri, 18 Sep 2026 14:45:40 +0900 Subject: [PATCH 2/2] Add a test for building singleton without Class#new Co-Authored-By: Claude Opus 5 --- test/rbs/definition_builder_test.rb | 33 +++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/test/rbs/definition_builder_test.rb b/test/rbs/definition_builder_test.rb index 936fd472e..b82a2d020 100644 --- a/test/rbs/definition_builder_test.rb +++ b/test/rbs/definition_builder_test.rb @@ -1313,6 +1313,39 @@ def initialize: (Integer) -> void end end + def test_initialize_new_without_class_new + SignatureManager.new do |manager| + manager.files[Pathname("builtin.rbs")] = < void +end +EOF + + manager.build do |env| + builder = DefinitionBuilder.new(env: env) + + builder.build_singleton(type_name("::C")).tap do |definition| + assert_instance_of Definition, definition + + refute_operator definition.methods, :key?, :new + end + end + end + end + def test_initialize_new_generic SignatureManager.new do |manager| manager.files[Pathname("foo.rbs")] = <