Skip to content

Commit

Permalink
Merge pull request #1925 from ruby/backport
Browse files Browse the repository at this point in the history
Backport for rbs-3.5
  • Loading branch information
soutaro authored Jul 10, 2024
2 parents 45b34bd + fc24518 commit af72da8
Show file tree
Hide file tree
Showing 5 changed files with 141 additions and 5 deletions.
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

0 comments on commit af72da8

Please sign in to comment.