diff --git a/stdlib/openssl/0/openssl.rbs b/stdlib/openssl/0/openssl.rbs index 1c94c7fcf..ebcf0b9bf 100644 --- a/stdlib/openssl/0/openssl.rbs +++ b/stdlib/openssl/0/openssl.rbs @@ -2028,7 +2028,7 @@ module OpenSSL def check_key: () -> true - def dh_compute_key: (instance public_key) -> String + def dh_compute_key: (Point public_key) -> String def dsa_sign_asn1: (String digest) -> String diff --git a/stdlib/tempfile/0/tempfile.rbs b/stdlib/tempfile/0/tempfile.rbs index e7e164ca6..304eec969 100644 --- a/stdlib/tempfile/0/tempfile.rbs +++ b/stdlib/tempfile/0/tempfile.rbs @@ -96,6 +96,7 @@ class Tempfile < File # end # def self.create: (?String basename, ?String? tmpdir, ?mode: Integer, **untyped) -> File + | [A] (?String basename, ?String? tmpdir, ?mode: Integer, **untyped) { (File) -> A } -> A # Creates a new Tempfile. # @@ -135,6 +136,7 @@ class Tempfile < File # end # def self.open: (*untyped args, **untyped) -> Tempfile + | [A] (*untyped args, **untyped) { (Tempfile) -> A } -> A public @@ -263,5 +265,6 @@ class Tempfile < File # If Tempfile.new cannot find a unique filename within a limited number of # tries, then it will raise an exception. # - def initialize: (?String basename, ?String? tmpdir, ?mode: Integer, **untyped) -> void + def self.new: (?String basename, ?String? tmpdir, ?mode: Integer, **untyped) -> instance + | [A] (?String basename, ?String? tmpdir, ?mode: Integer, **untyped) { (instance) -> A } -> A end diff --git a/test/stdlib/OpenSSL_test.rb b/test/stdlib/OpenSSL_test.rb index a6ad77e39..497748434 100644 --- a/test/stdlib/OpenSSL_test.rb +++ b/test/stdlib/OpenSSL_test.rb @@ -799,8 +799,10 @@ class OpenSSLECTest < Test::Unit::TestCase testing "::OpenSSL::PKey::EC" def test_dh_compute_key - assert_send_type "(OpenSSL::PKey::EC::Point) -> String", + assert_send_type( + "(OpenSSL::PKey::EC::Point) -> String", pkey, :dh_compute_key, OpenSSL::PKey::EC.generate("prime256v1").public_key + ) end def test_dsa_sign_verify_asn1 @@ -1083,4 +1085,4 @@ def test_to_a def name OpenSSL::X509::Name.parse('/CN=nobody/DC=example') end -end \ No newline at end of file +end diff --git a/test/stdlib/tempfile/Tempfile_test.rb b/test/stdlib/tempfile/Tempfile_test.rb index 45b1c60a5..f14655ec6 100644 --- a/test/stdlib/tempfile/Tempfile_test.rb +++ b/test/stdlib/tempfile/Tempfile_test.rb @@ -9,8 +9,12 @@ class TempfileSingletonTest < Test::Unit::TestCase def test_open - assert_send_type "(*untyped args, **untyped) -> ::Tempfile", + assert_send_type "(String) -> ::Tempfile", Tempfile, :open, 'README.md' + + assert_send_type "() { (::Tempfile) -> ::Integer } -> ::Integer", + Tempfile, :open do 123 end + end def test_new @@ -19,9 +23,14 @@ def test_new end def test_create - assert_send_type "(?::String basename, ?::String? tmpdir, ?mode: ::Integer, **untyped) -> ::File", + assert_send_type "(::String basename, ::String? tmpdir, mode: ::Integer) -> ::File", Tempfile, :create, 'README.md', '/tmp', mode: 0 - end + + assert_send_type "() { (::File) -> Integer } -> Integer", + Tempfile, :create do |file| + 123 + end +end def test_initialize assert_send_type "(?::String basename, ?::String? tmpdir, ?mode: ::Integer, **untyped) -> void", diff --git a/test/stdlib/test_helper.rb b/test/stdlib/test_helper.rb index 4ff6fc4fd..cfeae24c0 100644 --- a/test/stdlib/test_helper.rb +++ b/test/stdlib/test_helper.rb @@ -260,7 +260,9 @@ def class_class self_class: receiver.class, builder: builder, sample_size: 100, - unchecked_classes: [] + unchecked_classes: [], + instance_class: instance_class, + class_class: class_class ) errors = typecheck.method_call(method, mt, trace.last, errors: [])