Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backport for rbs-3.5 #1925

Merged
merged 3 commits into from
Jul 10, 2024
Merged
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
66 changes: 66 additions & 0 deletions core/rubygems/errors.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,72 @@
#
# -The RubyGems Team
#
# <!-- rdoc-file=lib/rubygems/deprecate.rb -->
# Provides 3 methods for declaring when something is going away.
#
# +deprecate(name, repl, year, month)+:
# Indicate something may be removed on/after a certain date.
#
# +rubygems_deprecate(name, replacement=:none)+:
# Indicate something will be removed in the next major RubyGems version,
# and (optionally) a replacement for it.
#
# `rubygems_deprecate_command`:
# Indicate a RubyGems command (in +lib/rubygems/commands/*.rb+) will be
# removed in the next RubyGems version.
#
# Also provides `skip_during` for temporarily turning off deprecation warnings.
# This is intended to be used in the test suite, so deprecation warnings don't
# cause test failures if you need to make sure stderr is otherwise empty.
#
# Example usage of `deprecate` and `rubygems_deprecate`:
#
# class Legacy
# def self.some_class_method
# # ...
# end
#
# def some_instance_method
# # ...
# end
#
# def some_old_method
# # ...
# end
#
# extend Gem::Deprecate
# deprecate :some_instance_method, "X.z", 2011, 4
# rubygems_deprecate :some_old_method, "Modern#some_new_method"
#
# class << self
# extend Gem::Deprecate
# deprecate :some_class_method, :none, 2011, 4
# end
# end
#
# Example usage of `rubygems_deprecate_command`:
#
# class Gem::Commands::QueryCommand < Gem::Command
# extend Gem::Deprecate
# rubygems_deprecate_command
#
# # ...
# end
#
# Example usage of `skip_during`:
#
# class TestSomething < Gem::Testcase
# def test_some_thing_with_deprecations
# Gem::Deprecate.skip_during do
# actual_stdout, actual_stderr = capture_output do
# Gem.something_deprecated
# end
# assert_empty actual_stdout
# assert_equal(expected, actual_stderr)
# end
# end
# end
#
module Gem
# <!-- rdoc-file=lib/rubygems/errors.rb -->
# Raised when RubyGems is unable to load or activate a gem. Contains the name
Expand Down
66 changes: 66 additions & 0 deletions core/rubygems/rubygems.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,72 @@
#
# -The RubyGems Team
#
# <!-- rdoc-file=lib/rubygems/deprecate.rb -->
# Provides 3 methods for declaring when something is going away.
#
# +deprecate(name, repl, year, month)+:
# Indicate something may be removed on/after a certain date.
#
# +rubygems_deprecate(name, replacement=:none)+:
# Indicate something will be removed in the next major RubyGems version,
# and (optionally) a replacement for it.
#
# `rubygems_deprecate_command`:
# Indicate a RubyGems command (in +lib/rubygems/commands/*.rb+) will be
# removed in the next RubyGems version.
#
# Also provides `skip_during` for temporarily turning off deprecation warnings.
# This is intended to be used in the test suite, so deprecation warnings don't
# cause test failures if you need to make sure stderr is otherwise empty.
#
# Example usage of `deprecate` and `rubygems_deprecate`:
#
# class Legacy
# def self.some_class_method
# # ...
# end
#
# def some_instance_method
# # ...
# end
#
# def some_old_method
# # ...
# end
#
# extend Gem::Deprecate
# deprecate :some_instance_method, "X.z", 2011, 4
# rubygems_deprecate :some_old_method, "Modern#some_new_method"
#
# class << self
# extend Gem::Deprecate
# deprecate :some_class_method, :none, 2011, 4
# end
# end
#
# Example usage of `rubygems_deprecate_command`:
#
# class Gem::Commands::QueryCommand < Gem::Command
# extend Gem::Deprecate
# rubygems_deprecate_command
#
# # ...
# end
#
# Example usage of `skip_during`:
#
# class TestSomething < Gem::Testcase
# def test_some_thing_with_deprecations
# Gem::Deprecate.skip_during do
# actual_stdout, actual_stderr = capture_output do
# Gem.something_deprecated
# end
# assert_empty actual_stdout
# assert_equal(expected, actual_stderr)
# end
# end
# end
#
module Gem
interface _HashLike[K, V]
def each_pair: () { ([ K, V ]) -> untyped } -> self
Expand Down
4 changes: 4 additions & 0 deletions core/string.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -699,6 +699,10 @@ class String
# String.new(capacity: 1)
# String.new('foo', capacity: 4096)
#
# Note that Ruby strings are null-terminated internally, so the internal buffer
# size will be one or more bytes larger than the requested capacity depending on
# the encoding.
#
# The `string`, `encoding`, and `capacity` arguments may all be used together:
#
# String.new('hello', encoding: 'UTF-8', capacity: 25)
Expand Down
2 changes: 1 addition & 1 deletion lib/rbs/types.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1267,7 +1267,7 @@ def has_classish_type?
return_type.has_classish_type?
end

def with_nonreturn_void
def with_nonreturn_void?
false
end

Expand Down
8 changes: 4 additions & 4 deletions stdlib/strscan/0/string_scanner.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -184,10 +184,10 @@ class StringScanner
# If nothing was priorly matched, it returns nil.
#
# s = StringScanner.new("Fri Dec 12 1975 14:39")
# s.scan(/(\w+) (\w+) (\d+) /) # -> "Fri Dec 12 "
# s.captures # -> ["Fri", "Dec", "12"]
# s.scan(/(\w+) (\w+) (\d+) /) # -> nil
# s.captures # -> nil
# s.scan(/(\w+) (\w+) (\d+) (1980)?/) # -> "Fri Dec 12 "
# s.captures # -> ["Fri", "Dec", "12", nil]
# s.scan(/(\w+) (\w+) (\d+) (1980)?/) # -> nil
# s.captures # -> nil
#
def captures: () -> Array[String]?

Expand Down