rbs 3.7.0 → 3.8.0.pre.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/comments.yml +3 -3
- data/.github/workflows/ruby.yml +7 -7
- data/CHANGELOG.md +52 -0
- data/core/array.rbs +1743 -1580
- data/core/basic_object.rbs +38 -35
- data/core/comparable.rbs +1 -1
- data/core/complex.rbs +165 -93
- data/core/data.rbs +1 -1
- data/core/dir.rbs +1 -17
- data/core/encoding.rbs +12 -6
- data/core/enumerable.rbs +270 -266
- data/core/enumerator.rbs +0 -2
- data/core/env.rbs +1 -1
- data/core/errno.rbs +33 -16
- data/core/errors.rbs +2 -2
- data/core/exception.rbs +236 -170
- data/core/fiber.rbs +3 -2
- data/core/file.rbs +32 -74
- data/core/float.rbs +125 -72
- data/core/gc.rbs +138 -40
- data/core/hash.rbs +120 -141
- data/core/integer.rbs +79 -50
- data/core/io/buffer.rbs +49 -43
- data/core/io.rbs +97 -144
- data/core/kernel.rbs +290 -200
- data/core/match_data.rbs +76 -2
- data/core/math.rbs +0 -36
- data/core/module.rbs +28 -23
- data/core/nil_class.rbs +0 -3
- data/core/numeric.rbs +100 -103
- data/core/object.rbs +0 -4
- data/core/object_space/weak_key_map.rbs +3 -4
- data/core/object_space.rbs +3 -3
- data/core/proc.rbs +0 -2
- data/core/process.rbs +109 -57
- data/core/ractor.rbs +37 -4
- data/core/range.rbs +114 -87
- data/core/rational.rbs +0 -2
- data/core/rbs/unnamed/argf.rbs +234 -33
- data/core/rbs/unnamed/env_class.rbs +35 -53
- data/core/rbs/unnamed/random.rbs +1 -2
- data/core/regexp.rbs +4 -52
- data/core/ruby_vm.rbs +88 -9
- data/core/rubygems/config_file.rbs +3 -0
- data/core/rubygems/errors.rbs +0 -5
- data/core/rubygems/platform.rbs +0 -9
- data/core/rubygems/rubygems.rbs +0 -5
- data/core/rubygems/version.rbs +6 -6
- data/core/set.rbs +3 -15
- data/core/string.rbs +130 -136
- data/core/struct.rbs +6 -18
- data/core/symbol.rbs +14 -21
- data/core/thread.rbs +32 -35
- data/core/time.rbs +127 -50
- data/core/trace_point.rbs +16 -0
- data/core/true_class.rbs +0 -1
- data/core/warning.rbs +9 -2
- data/docs/architecture.md +1 -1
- data/docs/syntax.md +1 -1
- data/ext/rbs_extension/location.c +29 -19
- data/ext/rbs_extension/parser.c +267 -292
- data/ext/rbs_extension/parserstate.c +56 -22
- data/lib/rbs/annotate/annotations.rb +3 -3
- data/lib/rbs/annotate/rdoc_source.rb +2 -2
- data/lib/rbs/cli/diff.rb +3 -3
- data/lib/rbs/cli/validate.rb +1 -1
- data/lib/rbs/cli.rb +13 -13
- data/lib/rbs/collection/config.rb +3 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +3 -3
- data/lib/rbs/environment_loader.rb +1 -1
- data/lib/rbs/namespace.rb +1 -0
- data/lib/rbs/parser_aux.rb +2 -2
- data/lib/rbs/prototype/rb.rb +11 -8
- data/lib/rbs/prototype/rbi.rb +9 -5
- data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
- data/lib/rbs/prototype/runtime.rb +4 -5
- data/lib/rbs/type_name.rb +14 -9
- data/lib/rbs/unit_test/type_assertions.rb +2 -2
- data/lib/rbs/validator.rb +3 -1
- data/lib/rbs/version.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +2 -2
- data/rbs.gemspec +4 -0
- data/sig/ancestor_graph.rbs +4 -4
- data/sig/namespace.rbs +2 -3
- data/sig/resolver/constant_resolver.rbs +2 -2
- data/sig/resolver/context.rbs +1 -1
- data/sig/type_alias_regularity.rbs +5 -5
- data/sig/typename.rbs +8 -5
- data/sig/use_map.rbs +1 -1
- data/sig/validator.rbs +2 -2
- data/stdlib/base64/0/base64.rbs +0 -9
- data/stdlib/benchmark/0/benchmark.rbs +11 -2
- data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
- data/stdlib/cgi/0/core.rbs +47 -0
- data/stdlib/coverage/0/coverage.rbs +0 -3
- data/stdlib/csv/0/csv.rbs +18 -58
- data/stdlib/date/0/date.rbs +4 -19
- data/stdlib/did_you_mean/0/did_you_mean.rbs +0 -5
- data/stdlib/digest/0/digest.rbs +25 -2
- data/stdlib/erb/0/erb.rbs +0 -1
- data/stdlib/etc/0/etc.rbs +51 -34
- data/stdlib/fileutils/0/fileutils.rbs +3 -44
- data/stdlib/io-console/0/io-console.rbs +69 -15
- data/stdlib/ipaddr/0/ipaddr.rbs +8 -4
- data/stdlib/json/0/json.rbs +56 -71
- data/stdlib/logger/0/log_device.rbs +1 -1
- data/stdlib/logger/0/logger.rbs +3 -18
- data/stdlib/net-http/0/net-http.rbs +19 -77
- data/stdlib/nkf/0/nkf.rbs +30 -0
- data/stdlib/objspace/0/objspace.rbs +1 -2
- data/stdlib/observable/0/observable.rbs +1 -1
- data/stdlib/open-uri/0/open-uri.rbs +52 -0
- data/stdlib/open3/0/open3.rbs +0 -8
- data/stdlib/openssl/0/openssl.rbs +136 -69
- data/stdlib/optparse/0/optparse.rbs +58 -18
- data/stdlib/pathname/0/pathname.rbs +2 -8
- data/stdlib/pp/0/pp.rbs +3 -1
- data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
- data/stdlib/pstore/0/pstore.rbs +0 -6
- data/stdlib/psych/0/psych.rbs +15 -4
- data/stdlib/pty/0/pty.rbs +46 -4
- data/stdlib/rdoc/0/code_object.rbs +0 -4
- data/stdlib/rdoc/0/markup.rbs +10 -12
- data/stdlib/rdoc/0/rdoc.rbs +1 -2
- data/stdlib/resolv/0/resolv.rbs +8 -3
- data/stdlib/ripper/0/ripper.rbs +0 -2
- data/stdlib/securerandom/0/securerandom.rbs +0 -2
- data/stdlib/shellwords/0/shellwords.rbs +11 -12
- data/stdlib/singleton/0/singleton.rbs +0 -1
- data/stdlib/socket/0/addrinfo.rbs +0 -1
- data/stdlib/socket/0/basic_socket.rbs +0 -5
- data/stdlib/socket/0/socket.rbs +49 -25
- data/stdlib/socket/0/tcp_server.rbs +0 -3
- data/stdlib/socket/0/tcp_socket.rbs +58 -3
- data/stdlib/socket/0/udp_socket.rbs +0 -1
- data/stdlib/socket/0/unix_server.rbs +0 -3
- data/stdlib/strscan/0/string_scanner.rbs +1265 -422
- data/stdlib/tempfile/0/tempfile.rbs +135 -28
- data/stdlib/time/0/time.rbs +48 -35
- data/stdlib/timeout/0/timeout.rbs +11 -8
- data/stdlib/tmpdir/0/tmpdir.rbs +8 -1
- data/stdlib/tsort/0/tsort.rbs +0 -4
- data/stdlib/uri/0/common.rbs +11 -30
- data/stdlib/uri/0/ftp.rbs +1 -1
- data/stdlib/uri/0/generic.rbs +22 -18
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
- data/stdlib/zlib/0/buf_error.rbs +1 -70
- data/stdlib/zlib/0/data_error.rbs +1 -70
- data/stdlib/zlib/0/deflate.rbs +8 -72
- data/stdlib/zlib/0/error.rbs +1 -70
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
- data/stdlib/zlib/0/gzip_file.rbs +1 -71
- data/stdlib/zlib/0/gzip_reader.rbs +3 -74
- data/stdlib/zlib/0/gzip_writer.rbs +1 -70
- data/stdlib/zlib/0/inflate.rbs +4 -71
- data/stdlib/zlib/0/mem_error.rbs +1 -70
- data/stdlib/zlib/0/need_dict.rbs +1 -70
- data/stdlib/zlib/0/stream_end.rbs +1 -70
- data/stdlib/zlib/0/stream_error.rbs +1 -70
- data/stdlib/zlib/0/version_error.rbs +1 -70
- data/stdlib/zlib/0/zlib.rbs +0 -2
- data/stdlib/zlib/0/zstream.rbs +4 -72
- metadata +4 -6
data/core/time.rbs
CHANGED
|
@@ -45,6 +45,42 @@
|
|
|
45
45
|
# A `Time` object derived from the system clock (for example, by method
|
|
46
46
|
# Time.now) has the resolution supported by the system.
|
|
47
47
|
#
|
|
48
|
+
# ## Time Internal Representation
|
|
49
|
+
#
|
|
50
|
+
# Time implementation uses a signed 63 bit integer, Integer, or Rational. It is
|
|
51
|
+
# a number of nanoseconds since the *Epoch*. The signed 63 bit integer can
|
|
52
|
+
# represent 1823-11-12 to 2116-02-20. When Integer or Rational is used (before
|
|
53
|
+
# 1823, after 2116, under nanosecond), Time works slower than when the signed 63
|
|
54
|
+
# bit integer is used.
|
|
55
|
+
#
|
|
56
|
+
# Ruby uses the C function `localtime` and `gmtime` to map between the number
|
|
57
|
+
# and 6-tuple (year,month,day,hour,minute,second). `localtime` is used for local
|
|
58
|
+
# time and "gmtime" is used for UTC.
|
|
59
|
+
#
|
|
60
|
+
# Integer and Rational has no range limit, but the localtime and gmtime has
|
|
61
|
+
# range limits due to the C types `time_t` and `struct tm`. If that limit is
|
|
62
|
+
# exceeded, Ruby extrapolates the localtime function.
|
|
63
|
+
#
|
|
64
|
+
# The Time class always uses the Gregorian calendar. I.e. the proleptic
|
|
65
|
+
# Gregorian calendar is used. Other calendars, such as Julian calendar, are not
|
|
66
|
+
# supported.
|
|
67
|
+
#
|
|
68
|
+
# `time_t` can represent 1901-12-14 to 2038-01-19 if it is 32 bit signed
|
|
69
|
+
# integer, -292277022657-01-27 to 292277026596-12-05 if it is 64 bit signed
|
|
70
|
+
# integer. However `localtime` on some platforms doesn't supports negative
|
|
71
|
+
# `time_t` (before 1970).
|
|
72
|
+
#
|
|
73
|
+
# `struct tm` has *tm_year* member to represent years. (`tm_year = 0` means the
|
|
74
|
+
# year 1900.) It is defined as `int` in the C standard. *tm_year* can represent
|
|
75
|
+
# between -2147481748 to 2147485547 if `int` is 32 bit.
|
|
76
|
+
#
|
|
77
|
+
# Ruby supports leap seconds as far as if the C function `localtime` and
|
|
78
|
+
# `gmtime` supports it. They use the tz database in most Unix systems. The tz
|
|
79
|
+
# database has timezones which supports leap seconds. For example, "Asia/Tokyo"
|
|
80
|
+
# doesn't support leap seconds but "right/Asia/Tokyo" supports leap seconds. So,
|
|
81
|
+
# Ruby supports leap seconds if the TZ environment variable is set to
|
|
82
|
+
# "right/Asia/Tokyo" in most Unix systems.
|
|
83
|
+
#
|
|
48
84
|
# ## Examples
|
|
49
85
|
#
|
|
50
86
|
# All of these examples were done using the EST timezone which is GMT-5.
|
|
@@ -127,16 +163,14 @@
|
|
|
127
163
|
# * Inherits from [class Object](rdoc-ref:Object@What-27s+Here).
|
|
128
164
|
# * Includes [module Comparable](rdoc-ref:Comparable@What-27s+Here).
|
|
129
165
|
#
|
|
130
|
-
#
|
|
131
166
|
# Here, class `Time` provides methods that are useful for:
|
|
132
167
|
#
|
|
133
|
-
# *
|
|
134
|
-
# *
|
|
135
|
-
# *
|
|
136
|
-
# *
|
|
137
|
-
# *
|
|
138
|
-
# *
|
|
139
|
-
#
|
|
168
|
+
# * [Creating Time objects](rdoc-ref:Time@Methods+for+Creating).
|
|
169
|
+
# * [Fetching Time values](rdoc-ref:Time@Methods+for+Fetching).
|
|
170
|
+
# * [Querying a Time object](rdoc-ref:Time@Methods+for+Querying).
|
|
171
|
+
# * [Comparing Time objects](rdoc-ref:Time@Methods+for+Comparing).
|
|
172
|
+
# * [Converting a Time object](rdoc-ref:Time@Methods+for+Converting).
|
|
173
|
+
# * [Rounding a Time](rdoc-ref:Time@Methods+for+Rounding).
|
|
140
174
|
#
|
|
141
175
|
# ### Methods for Creating
|
|
142
176
|
#
|
|
@@ -150,7 +184,6 @@
|
|
|
150
184
|
# * #+ (plus): Returns a new time increased by the given number of seconds.
|
|
151
185
|
# * #- (minus): Returns a new time decreased by the given number of seconds.
|
|
152
186
|
#
|
|
153
|
-
#
|
|
154
187
|
# ### Methods for Fetching
|
|
155
188
|
#
|
|
156
189
|
# * #year: Returns the year of the time.
|
|
@@ -175,7 +208,6 @@
|
|
|
175
208
|
# * #to_r: Returns the Rational number of seconds since epoch for the time.
|
|
176
209
|
# * #zone: Returns a string representation of the timezone of the time.
|
|
177
210
|
#
|
|
178
|
-
#
|
|
179
211
|
# ### Methods for Querying
|
|
180
212
|
#
|
|
181
213
|
# * #utc? (aliased as #gmt?): Returns whether the time is UTC.
|
|
@@ -189,13 +221,11 @@
|
|
|
189
221
|
# * #friday?: Returns whether time is a Friday.
|
|
190
222
|
# * #saturday?: Returns whether the time is a Saturday.
|
|
191
223
|
#
|
|
192
|
-
#
|
|
193
224
|
# ### Methods for Comparing
|
|
194
225
|
#
|
|
195
226
|
# * #<=>: Compares `self` to another time.
|
|
196
227
|
# * #eql?: Returns whether the time is equal to another time.
|
|
197
228
|
#
|
|
198
|
-
#
|
|
199
229
|
# ### Methods for Converting
|
|
200
230
|
#
|
|
201
231
|
# * #asctime (aliased as #ctime): Returns the time as a string.
|
|
@@ -210,14 +240,12 @@
|
|
|
210
240
|
# * #deconstruct_keys: Returns a hash of time components used in
|
|
211
241
|
# pattern-matching.
|
|
212
242
|
#
|
|
213
|
-
#
|
|
214
243
|
# ### Methods for Rounding
|
|
215
244
|
#
|
|
216
245
|
# * #round:Returns a new time with subseconds rounded.
|
|
217
246
|
# * #ceil: Returns a new time with subseconds raised to a ceiling.
|
|
218
247
|
# * #floor: Returns a new time with subseconds lowered to a floor.
|
|
219
248
|
#
|
|
220
|
-
#
|
|
221
249
|
# For the forms of argument `zone`, see [Timezone
|
|
222
250
|
# Specifiers](rdoc-ref:Time@Timezone+Specifiers).
|
|
223
251
|
#
|
|
@@ -231,7 +259,6 @@
|
|
|
231
259
|
# * Time#getlocal: positional argument `zone`.
|
|
232
260
|
# * Time#localtime: positional argument `zone`.
|
|
233
261
|
#
|
|
234
|
-
#
|
|
235
262
|
# The value given with any of these must be one of the following (each detailed
|
|
236
263
|
# below):
|
|
237
264
|
#
|
|
@@ -241,7 +268,6 @@
|
|
|
241
268
|
# * [Timezone object](rdoc-ref:Time@Timezone+Objects).
|
|
242
269
|
# * [Timezone name](rdoc-ref:Time@Timezone+Names).
|
|
243
270
|
#
|
|
244
|
-
#
|
|
245
271
|
# ### Hours/Minutes Offsets
|
|
246
272
|
#
|
|
247
273
|
# The zone value may be a string offset from UTC in the form `'+HH:MM'` or
|
|
@@ -250,7 +276,6 @@
|
|
|
250
276
|
# * `HH` is the 2-digit hour in the range `0..23`.
|
|
251
277
|
# * `MM` is the 2-digit minute in the range `0..59`.
|
|
252
278
|
#
|
|
253
|
-
#
|
|
254
279
|
# Examples:
|
|
255
280
|
#
|
|
256
281
|
# t = Time.utc(2000, 1, 1, 20, 15, 1) # => 2000-01-01 20:15:01 UTC
|
|
@@ -289,22 +314,29 @@
|
|
|
289
314
|
#
|
|
290
315
|
# * `local_to_utc`:
|
|
291
316
|
#
|
|
292
|
-
#
|
|
293
|
-
#
|
|
294
|
-
#
|
|
295
|
-
#
|
|
296
|
-
#
|
|
317
|
+
# Called when Time.new is invoked with `tz` as the value of positional
|
|
318
|
+
# argument `zone` or keyword argument `in:`.
|
|
319
|
+
#
|
|
320
|
+
# Argument
|
|
321
|
+
# : a [Time-like object](rdoc-ref:Time@Time-Like+Objects).
|
|
322
|
+
#
|
|
323
|
+
# Returns
|
|
324
|
+
# : a [Time-like object](rdoc-ref:Time@Time-Like+Objects) in the UTC
|
|
325
|
+
# timezone.
|
|
297
326
|
#
|
|
298
327
|
#
|
|
299
328
|
# * `utc_to_local`:
|
|
300
329
|
#
|
|
301
|
-
#
|
|
302
|
-
#
|
|
303
|
-
#
|
|
304
|
-
#
|
|
305
|
-
#
|
|
306
|
-
#
|
|
330
|
+
# Called when Time.at or Time.now is invoked with `tz` as the value for
|
|
331
|
+
# keyword argument `in:`, and when Time#getlocal or Time#localtime is called
|
|
332
|
+
# with `tz` as the value for positional argument `zone`.
|
|
333
|
+
#
|
|
334
|
+
# Argument
|
|
335
|
+
# : a [Time-like object](rdoc-ref:Time@Time-Like+Objects).
|
|
307
336
|
#
|
|
337
|
+
# Returns
|
|
338
|
+
# : a [Time-like object](rdoc-ref:Time@Time-Like+Objects) in the local
|
|
339
|
+
# timezone.
|
|
308
340
|
#
|
|
309
341
|
#
|
|
310
342
|
# A custom timezone class may have these instance methods, which will be called
|
|
@@ -312,26 +344,37 @@
|
|
|
312
344
|
#
|
|
313
345
|
# * `abbr`:
|
|
314
346
|
#
|
|
315
|
-
#
|
|
316
|
-
#
|
|
317
|
-
#
|
|
347
|
+
# Called when Time#strftime is invoked with a format involving `%Z`.
|
|
348
|
+
#
|
|
349
|
+
# Argument
|
|
350
|
+
# : a [Time-like object](rdoc-ref:Time@Time-Like+Objects).
|
|
351
|
+
#
|
|
352
|
+
# Returns
|
|
353
|
+
# : a string abbreviation for the timezone name.
|
|
318
354
|
#
|
|
319
355
|
#
|
|
320
356
|
# * `dst?`:
|
|
321
357
|
#
|
|
322
|
-
#
|
|
323
|
-
#
|
|
324
|
-
#
|
|
325
|
-
#
|
|
326
|
-
#
|
|
358
|
+
# Called when Time.at or Time.now is invoked with `tz` as the value for
|
|
359
|
+
# keyword argument `in:`, and when Time#getlocal or Time#localtime is called
|
|
360
|
+
# with `tz` as the value for positional argument `zone`.
|
|
361
|
+
#
|
|
362
|
+
# Argument
|
|
363
|
+
# : a [Time-like object](rdoc-ref:Time@Time-Like+Objects).
|
|
364
|
+
#
|
|
365
|
+
# Returns
|
|
366
|
+
# : whether the time is daylight saving time.
|
|
327
367
|
#
|
|
328
368
|
#
|
|
329
369
|
# * `name`:
|
|
330
370
|
#
|
|
331
|
-
#
|
|
332
|
-
# * Argument: none.
|
|
333
|
-
# * Returns: the string name of the timezone.
|
|
371
|
+
# Called when `Marshal.dump(t)` is invoked
|
|
334
372
|
#
|
|
373
|
+
# Argument
|
|
374
|
+
# : none.
|
|
375
|
+
#
|
|
376
|
+
# Returns
|
|
377
|
+
# : the string name of the timezone.
|
|
335
378
|
#
|
|
336
379
|
#
|
|
337
380
|
# #### `Time`-Like Objects
|
|
@@ -358,7 +401,6 @@
|
|
|
358
401
|
# * `isdst`
|
|
359
402
|
# * `to_i`
|
|
360
403
|
#
|
|
361
|
-
#
|
|
362
404
|
# For a returned `Integer`, its components, decomposed in UTC, are interpreted
|
|
363
405
|
# as times in the specified timezone.
|
|
364
406
|
#
|
|
@@ -424,7 +466,6 @@ class Time < Object
|
|
|
424
466
|
# * A numeric number of [Epoch seconds](rdoc-ref:Time@Epoch+Seconds) for the
|
|
425
467
|
# returned time.
|
|
426
468
|
#
|
|
427
|
-
#
|
|
428
469
|
# Examples:
|
|
429
470
|
#
|
|
430
471
|
# t = Time.new(2000, 12, 31, 23, 59, 59) # => 2000-12-31 23:59:59 -0600
|
|
@@ -460,7 +501,6 @@ class Time < Object
|
|
|
460
501
|
# Time.at(secs, 1000000000, :nanosecond) # => 2001-01-01 00:00:00 -0600
|
|
461
502
|
# Time.at(secs, -1000000000, :nanosecond) # => 2000-12-31 23:59:58 -0600
|
|
462
503
|
#
|
|
463
|
-
#
|
|
464
504
|
# Optional keyword argument `in: zone` specifies the timezone for the returned
|
|
465
505
|
# time:
|
|
466
506
|
#
|
|
@@ -527,7 +567,6 @@ class Time < Object
|
|
|
527
567
|
# Time.utc(2000, 1, 1, 0, 0, 0, 0) # => 2000-01-01 00:00:00 UTC
|
|
528
568
|
# Time.utc(2000, 1, 1, 0, 0, 0, 999999) # => 2000-01-01 00:00:00.999999 UTC
|
|
529
569
|
#
|
|
530
|
-
#
|
|
531
570
|
# The values may be:
|
|
532
571
|
#
|
|
533
572
|
# * Integers, as above.
|
|
@@ -542,7 +581,6 @@ class Time < Object
|
|
|
542
581
|
# # => ["0", "1", "1", "0", "0", "0", "0", "0"]
|
|
543
582
|
# Time.utc(*a) # => 0000-01-01 00:00:00 UTC
|
|
544
583
|
#
|
|
545
|
-
#
|
|
546
584
|
# When exactly ten arguments are given, the arguments are interpreted as in the
|
|
547
585
|
# second calling sequence above:
|
|
548
586
|
#
|
|
@@ -659,7 +697,6 @@ class Time < Object
|
|
|
659
697
|
# Time.utc(2000, 1, 1, 0, 0, 0, 0) # => 2000-01-01 00:00:00 UTC
|
|
660
698
|
# Time.utc(2000, 1, 1, 0, 0, 0, 999999) # => 2000-01-01 00:00:00.999999 UTC
|
|
661
699
|
#
|
|
662
|
-
#
|
|
663
700
|
# The values may be:
|
|
664
701
|
#
|
|
665
702
|
# * Integers, as above.
|
|
@@ -674,7 +711,6 @@ class Time < Object
|
|
|
674
711
|
# # => ["0", "1", "1", "0", "0", "0", "0", "0"]
|
|
675
712
|
# Time.utc(*a) # => 0000-01-01 00:00:00 UTC
|
|
676
713
|
#
|
|
677
|
-
#
|
|
678
714
|
# When exactly ten arguments are given, the arguments are interpreted as in the
|
|
679
715
|
# second calling sequence above:
|
|
680
716
|
#
|
|
@@ -756,7 +792,6 @@ class Time < Object
|
|
|
756
792
|
# * `1`, if `self` is greater then `other_time`.
|
|
757
793
|
# * `nil`, if `self` and `other_time` are incomparable.
|
|
758
794
|
#
|
|
759
|
-
#
|
|
760
795
|
# Examples:
|
|
761
796
|
#
|
|
762
797
|
# t = Time.now # => 2007-11-19 08:12:12 -0600
|
|
@@ -1066,7 +1101,6 @@ class Time < Object
|
|
|
1066
1101
|
# Time.new(2000, 1, 1, 0, 0, 59.5) # => 2000-12-31 23:59:59.5 +0900
|
|
1067
1102
|
# Time.new(2000, 1, 1, 0, 0, 59.7r) # => 2000-12-31 23:59:59.7 +0900
|
|
1068
1103
|
#
|
|
1069
|
-
#
|
|
1070
1104
|
# These values may be:
|
|
1071
1105
|
#
|
|
1072
1106
|
# * Integers, as above.
|
|
@@ -1081,7 +1115,6 @@ class Time < Object
|
|
|
1081
1115
|
# # => ["0", "1", "1", "0", "0", "0"]
|
|
1082
1116
|
# Time.new(*a) # => 0000-01-01 00:00:00 -0600
|
|
1083
1117
|
#
|
|
1084
|
-
#
|
|
1085
1118
|
# When positional argument `zone` or keyword argument `in:` is given, the new
|
|
1086
1119
|
# `Time` object is in the specified timezone. For the forms of argument `zone`,
|
|
1087
1120
|
# see [Timezone Specifiers](rdoc-ref:Time@Timezone+Specifiers):
|
|
@@ -1138,6 +1171,25 @@ class Time < Object
|
|
|
1138
1171
|
#
|
|
1139
1172
|
def isdst: () -> bool
|
|
1140
1173
|
|
|
1174
|
+
# <!-- rdoc-file=lib/time.rb -->
|
|
1175
|
+
# Parses `time` as a dateTime defined by the XML Schema and converts it to a
|
|
1176
|
+
# Time object. The format is a restricted version of the format defined by ISO
|
|
1177
|
+
# 8601.
|
|
1178
|
+
#
|
|
1179
|
+
# ArgumentError is raised if `time` is not compliant with the format or if the
|
|
1180
|
+
# Time class cannot represent the specified time.
|
|
1181
|
+
#
|
|
1182
|
+
# See #xmlschema for more information on this format.
|
|
1183
|
+
#
|
|
1184
|
+
# require 'time'
|
|
1185
|
+
#
|
|
1186
|
+
# Time.xmlschema("2011-10-05T22:26:12-04:00")
|
|
1187
|
+
# #=> 2011-10-05 22:26:12-04:00
|
|
1188
|
+
#
|
|
1189
|
+
# You must require 'time' to use this method.
|
|
1190
|
+
#
|
|
1191
|
+
alias iso8601 xmlschema
|
|
1192
|
+
|
|
1141
1193
|
# <!--
|
|
1142
1194
|
# rdoc-file=time.c
|
|
1143
1195
|
# - localtime -> self or new_time
|
|
@@ -1151,7 +1203,6 @@ class Time < Object
|
|
|
1151
1203
|
# t = Time.utc(2000, 1, 1, 20, 15, 1) # => 2000-01-01 20:15:01 UTC
|
|
1152
1204
|
# t.localtime # => 2000-01-01 14:15:01 -0600
|
|
1153
1205
|
#
|
|
1154
|
-
#
|
|
1155
1206
|
# With argument `zone` given, returns the new `Time` object created by
|
|
1156
1207
|
# converting `self` to the given time zone:
|
|
1157
1208
|
#
|
|
@@ -1550,6 +1601,32 @@ class Time < Object
|
|
|
1550
1601
|
#
|
|
1551
1602
|
def wednesday?: () -> bool
|
|
1552
1603
|
|
|
1604
|
+
# <!--
|
|
1605
|
+
# rdoc-file=lib/time.rb
|
|
1606
|
+
# - xmlschema(fraction_digits=0)
|
|
1607
|
+
# -->
|
|
1608
|
+
# Returns a string which represents the time as a dateTime defined by XML
|
|
1609
|
+
# Schema:
|
|
1610
|
+
#
|
|
1611
|
+
# CCYY-MM-DDThh:mm:ssTZD
|
|
1612
|
+
# CCYY-MM-DDThh:mm:ss.sssTZD
|
|
1613
|
+
#
|
|
1614
|
+
# where TZD is Z or [+-]hh:mm.
|
|
1615
|
+
#
|
|
1616
|
+
# If self is a UTC time, Z is used as TZD. [+-]hh:mm is used otherwise.
|
|
1617
|
+
#
|
|
1618
|
+
# `fraction_digits` specifies a number of digits to use for fractional seconds.
|
|
1619
|
+
# Its default value is 0.
|
|
1620
|
+
#
|
|
1621
|
+
# require 'time'
|
|
1622
|
+
#
|
|
1623
|
+
# t = Time.now
|
|
1624
|
+
# t.iso8601 # => "2011-10-05T22:26:12-04:00"
|
|
1625
|
+
#
|
|
1626
|
+
# You must require 'time' to use this method.
|
|
1627
|
+
#
|
|
1628
|
+
def xmlschema: () -> String
|
|
1629
|
+
|
|
1553
1630
|
# <!--
|
|
1554
1631
|
# rdoc-file=time.c
|
|
1555
1632
|
# - yday -> integer
|
data/core/trace_point.rbs
CHANGED
|
@@ -30,36 +30,52 @@
|
|
|
30
30
|
#
|
|
31
31
|
# `:line`
|
|
32
32
|
# : execute an expression or statement on a new line
|
|
33
|
+
#
|
|
33
34
|
# `:class`
|
|
34
35
|
# : start a class or module definition
|
|
36
|
+
#
|
|
35
37
|
# `:end`
|
|
36
38
|
# : finish a class or module definition
|
|
39
|
+
#
|
|
37
40
|
# `:call`
|
|
38
41
|
# : call a Ruby method
|
|
42
|
+
#
|
|
39
43
|
# `:return`
|
|
40
44
|
# : return from a Ruby method
|
|
45
|
+
#
|
|
41
46
|
# `:c_call`
|
|
42
47
|
# : call a C-language routine
|
|
48
|
+
#
|
|
43
49
|
# `:c_return`
|
|
44
50
|
# : return from a C-language routine
|
|
51
|
+
#
|
|
45
52
|
# `:raise`
|
|
46
53
|
# : raise an exception
|
|
54
|
+
#
|
|
47
55
|
# `:rescue`
|
|
48
56
|
# : rescue an exception
|
|
57
|
+
#
|
|
49
58
|
# `:b_call`
|
|
50
59
|
# : event hook at block entry
|
|
60
|
+
#
|
|
51
61
|
# `:b_return`
|
|
52
62
|
# : event hook at block ending
|
|
63
|
+
#
|
|
53
64
|
# `:a_call`
|
|
54
65
|
# : event hook at all calls (`call`, `b_call`, and `c_call`)
|
|
66
|
+
#
|
|
55
67
|
# `:a_return`
|
|
56
68
|
# : event hook at all returns (`return`, `b_return`, and `c_return`)
|
|
69
|
+
#
|
|
57
70
|
# `:thread_begin`
|
|
58
71
|
# : event hook at thread beginning
|
|
72
|
+
#
|
|
59
73
|
# `:thread_end`
|
|
60
74
|
# : event hook at thread ending
|
|
75
|
+
#
|
|
61
76
|
# `:fiber_switch`
|
|
62
77
|
# : event hook at fiber switch
|
|
78
|
+
#
|
|
63
79
|
# `:script_compiled`
|
|
64
80
|
# : new Ruby code compiled (with `eval`, `load` or `require`)
|
|
65
81
|
#
|
data/core/true_class.rbs
CHANGED
data/core/warning.rbs
CHANGED
|
@@ -45,12 +45,11 @@ module Warning
|
|
|
45
45
|
# : deprecation warnings
|
|
46
46
|
# * assignment of non-nil value to `$,` and `$;`
|
|
47
47
|
# * keyword arguments
|
|
48
|
-
#
|
|
49
48
|
# etc.
|
|
50
49
|
#
|
|
50
|
+
#
|
|
51
51
|
# `:experimental`
|
|
52
52
|
# : experimental features
|
|
53
|
-
# * Pattern matching
|
|
54
53
|
#
|
|
55
54
|
#
|
|
56
55
|
# `:performance`
|
|
@@ -67,6 +66,14 @@ module Warning
|
|
|
67
66
|
#
|
|
68
67
|
def self.[]=: [T] (category, T flag) -> T
|
|
69
68
|
|
|
69
|
+
# <!--
|
|
70
|
+
# rdoc-file=error.c
|
|
71
|
+
# - categories -> array
|
|
72
|
+
# -->
|
|
73
|
+
# Returns a list of the supported category symbols.
|
|
74
|
+
#
|
|
75
|
+
def self.categories: () -> Array[Symbol]
|
|
76
|
+
|
|
70
77
|
# <!--
|
|
71
78
|
# rdoc-file=error.c
|
|
72
79
|
# - warn(msg, category: nil) -> nil
|
data/docs/architecture.md
CHANGED
|
@@ -92,7 +92,7 @@ The `#build_singleton` calculates the type of `.new` methods based on the defini
|
|
|
92
92
|
`DefinitionBuilder#expand_alias` and its variants provide one step *unfold* operation of type aliases.
|
|
93
93
|
|
|
94
94
|
```ruby
|
|
95
|
-
builder.expand_alias2(TypeName("::int"), []) # => returns `::Integer | ::_ToInt`
|
|
95
|
+
builder.expand_alias2(RBS::TypeName.parse("::int"), []) # => returns `::Integer | ::_ToInt`
|
|
96
96
|
```
|
|
97
97
|
|
|
98
98
|
We don't have *normalize* operation for type aliases, because RBS allows recursive type alias definition, which cannot be *fully* unfolded.
|
data/docs/syntax.md
CHANGED
|
@@ -36,9 +36,12 @@ void rbs_loc_alloc_children(rbs_loc *loc, unsigned short cap) {
|
|
|
36
36
|
size_t s = RBS_LOC_CHILDREN_SIZE(cap);
|
|
37
37
|
loc->children = malloc(s);
|
|
38
38
|
|
|
39
|
-
loc->children
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
*loc->children = (rbs_loc_children) {
|
|
40
|
+
.len = 0,
|
|
41
|
+
.required_p = 0,
|
|
42
|
+
.cap = cap,
|
|
43
|
+
.entries = {{ 0 }},
|
|
44
|
+
};
|
|
42
45
|
}
|
|
43
46
|
|
|
44
47
|
static void check_children_cap(rbs_loc *loc) {
|
|
@@ -54,27 +57,28 @@ static void check_children_cap(rbs_loc *loc) {
|
|
|
54
57
|
}
|
|
55
58
|
|
|
56
59
|
void rbs_loc_add_required_child(rbs_loc *loc, ID name, range r) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
unsigned short i = loc->children->len++;
|
|
60
|
-
loc->children->entries[i].name = name;
|
|
61
|
-
loc->children->entries[i].rg = rbs_new_loc_range(r);
|
|
60
|
+
rbs_loc_add_optional_child(loc, name, r);
|
|
62
61
|
|
|
63
|
-
loc->children->
|
|
62
|
+
unsigned short last_index = loc->children->len - 1;
|
|
63
|
+
loc->children->required_p |= 1 << last_index;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
void rbs_loc_add_optional_child(rbs_loc *loc, ID name, range r) {
|
|
67
67
|
check_children_cap(loc);
|
|
68
68
|
|
|
69
69
|
unsigned short i = loc->children->len++;
|
|
70
|
-
loc->children->entries[i]
|
|
71
|
-
|
|
70
|
+
loc->children->entries[i] = (rbs_loc_entry) {
|
|
71
|
+
.name = name,
|
|
72
|
+
.rg = rbs_new_loc_range(r),
|
|
73
|
+
};
|
|
72
74
|
}
|
|
73
75
|
|
|
74
76
|
void rbs_loc_init(rbs_loc *loc, VALUE buffer, rbs_loc_range rg) {
|
|
75
|
-
loc
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
*loc = (rbs_loc) {
|
|
78
|
+
.buffer = buffer,
|
|
79
|
+
.rg = rg,
|
|
80
|
+
.children = NULL,
|
|
81
|
+
};
|
|
78
82
|
}
|
|
79
83
|
|
|
80
84
|
void rbs_loc_free(rbs_loc *loc) {
|
|
@@ -122,9 +126,11 @@ static VALUE location_initialize(VALUE self, VALUE buffer, VALUE start_pos, VALU
|
|
|
122
126
|
int start = FIX2INT(start_pos);
|
|
123
127
|
int end = FIX2INT(end_pos);
|
|
124
128
|
|
|
125
|
-
loc
|
|
126
|
-
|
|
127
|
-
|
|
129
|
+
*loc = (rbs_loc) {
|
|
130
|
+
.buffer = buffer,
|
|
131
|
+
.rg = (rbs_loc_range) { start, end },
|
|
132
|
+
.children = NULL,
|
|
133
|
+
};
|
|
128
134
|
|
|
129
135
|
return Qnil;
|
|
130
136
|
}
|
|
@@ -133,8 +139,12 @@ static VALUE location_initialize_copy(VALUE self, VALUE other) {
|
|
|
133
139
|
rbs_loc *self_loc = rbs_check_location(self);
|
|
134
140
|
rbs_loc *other_loc = rbs_check_location(other);
|
|
135
141
|
|
|
136
|
-
self_loc
|
|
137
|
-
|
|
142
|
+
*self_loc = (rbs_loc) {
|
|
143
|
+
.buffer = other_loc->buffer,
|
|
144
|
+
.rg = other_loc->rg,
|
|
145
|
+
.children = NULL,
|
|
146
|
+
};
|
|
147
|
+
|
|
138
148
|
if (other_loc->children != NULL) {
|
|
139
149
|
rbs_loc_alloc_children(self_loc, other_loc->children->cap);
|
|
140
150
|
memcpy(self_loc->children, other_loc->children, RBS_LOC_CHILDREN_SIZE(other_loc->children->cap));
|