rbs 1.7.1 → 2.0.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +104 -3
  3. data/core/array.rbs +3 -3
  4. data/core/builtin.rbs +4 -0
  5. data/core/enumerable.rbs +3 -3
  6. data/docs/collection.md +23 -1
  7. data/docs/syntax.md +117 -61
  8. data/ext/rbs_extension/constants.c +2 -6
  9. data/ext/rbs_extension/constants.h +1 -2
  10. data/ext/rbs_extension/parser.c +220 -184
  11. data/ext/rbs_extension/parserstate.c +6 -2
  12. data/ext/rbs_extension/parserstate.h +10 -0
  13. data/ext/rbs_extension/ruby_objs.c +17 -17
  14. data/ext/rbs_extension/ruby_objs.h +3 -4
  15. data/lib/rbs/ast/declarations.rb +6 -99
  16. data/lib/rbs/ast/type_param.rb +134 -0
  17. data/lib/rbs/cli.rb +33 -5
  18. data/lib/rbs/collection/config/lockfile_generator.rb +26 -18
  19. data/lib/rbs/collection/sources/git.rb +18 -7
  20. data/lib/rbs/collection/sources/rubygems.rb +7 -0
  21. data/lib/rbs/collection/sources/stdlib.rb +6 -0
  22. data/lib/rbs/definition.rb +9 -0
  23. data/lib/rbs/definition_builder.rb +78 -16
  24. data/lib/rbs/environment.rb +32 -8
  25. data/lib/rbs/environment_loader.rb +0 -2
  26. data/lib/rbs/environment_walker.rb +4 -1
  27. data/lib/rbs/errors.rb +31 -6
  28. data/lib/rbs/location_aux.rb +2 -0
  29. data/lib/rbs/method_type.rb +29 -6
  30. data/lib/rbs/prototype/rb.rb +3 -3
  31. data/lib/rbs/prototype/rbi.rb +8 -6
  32. data/lib/rbs/prototype/runtime.rb +4 -4
  33. data/lib/rbs/type_alias_regularity.rb +115 -0
  34. data/lib/rbs/types.rb +99 -22
  35. data/lib/rbs/validator.rb +99 -15
  36. data/lib/rbs/variance_calculator.rb +60 -31
  37. data/lib/rbs/version.rb +1 -1
  38. data/lib/rbs/writer.rb +2 -14
  39. data/lib/rbs.rb +2 -0
  40. data/schema/decls.json +19 -46
  41. data/schema/methodType.json +1 -1
  42. data/schema/typeParam.json +36 -0
  43. data/schema/types.json +8 -2
  44. data/sig/collection/collections.rbs +11 -2
  45. data/sig/collection/config.rbs +2 -2
  46. data/sig/declarations.rbs +15 -62
  47. data/sig/definition.rbs +11 -1
  48. data/sig/definition_builder.rbs +37 -1
  49. data/sig/environment.rbs +7 -1
  50. data/sig/environment_walker.rbs +26 -0
  51. data/sig/errors.rbs +28 -3
  52. data/sig/location.rbs +3 -1
  53. data/sig/locator.rbs +1 -1
  54. data/sig/method_types.rbs +25 -4
  55. data/sig/type_alias_regularity.rbs +92 -0
  56. data/sig/type_param.rbs +74 -0
  57. data/sig/types.rbs +37 -8
  58. data/sig/validator.rbs +38 -2
  59. data/sig/variance_calculator.rbs +50 -0
  60. data/sig/writer.rbs +1 -1
  61. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  62. data/stdlib/csv/0/manifest.yaml +2 -0
  63. data/stdlib/date/0/date.rbs +2 -2
  64. data/stdlib/logger/0/manifest.yaml +2 -0
  65. data/stdlib/net-http/0/manifest.yaml +2 -0
  66. data/stdlib/openssl/0/manifest.yaml +2 -0
  67. data/stdlib/prime/0/manifest.yaml +2 -0
  68. data/stdlib/resolv/0/manifest.yaml +3 -0
  69. data/stdlib/set/0/set.rbs +3 -3
  70. data/stdlib/uri/0/common.rbs +10 -5
  71. data/stdlib/uri/0/ftp.rbs +10 -0
  72. data/stdlib/uri/0/generic.rbs +34 -34
  73. data/stdlib/uri/0/mailto.rbs +5 -0
  74. data/stdlib/uri/0/ws.rbs +10 -0
  75. data/stdlib/uri/0/wss.rbs +7 -0
  76. data/stdlib/yaml/0/manifest.yaml +3 -0
  77. data/steep/Gemfile.lock +10 -10
  78. metadata +21 -4
data/sig/validator.rbs CHANGED
@@ -1,14 +1,50 @@
1
1
  module RBS
2
2
  class Validator
3
3
  attr_reader env: Environment
4
+
4
5
  attr_reader resolver: TypeNameResolver
5
6
 
6
- def initialize: (env: Environment, resolver: TypeNameResolver) -> void
7
+ attr_reader definition_builder: DefinitionBuilder
7
8
 
8
- def absolute_type: (Types::t, context: TypeNameResolver::context) { (Types::t) -> TypeName } -> Types::t
9
+ attr_reader type_alias_dependency: TypeAliasDependency
10
+
11
+ attr_reader type_alias_regularity: TypeAliasRegularity
12
+
13
+ def initialize: (env: Environment, resolver: TypeNameResolver) -> void
9
14
 
15
+ # Validates the presence of type names and type application arity match.
16
+ #
10
17
  def validate_type: (Types::t, context: TypeNameResolver::context) -> void
11
18
 
19
+ # Validates type alias definition:
20
+ #
21
+ # - There is no circular definition between aliases
22
+ # - The type alias is _regular_
23
+ # - The generics type parameter variance annotation is consistent with respect to their usage
24
+ # - There is no circular dependencies between the generics type parameter bounds
25
+ #
12
26
  def validate_type_alias: (entry: Environment::SingleEntry[TypeName, AST::Declarations::Alias]) -> void
27
+
28
+ # Validates the type parameters in generic methods.
29
+ #
30
+ def validate_method_definition: (AST::Members::MethodDefinition, type_name: TypeName) -> void
31
+
32
+ # Validates the type parameters if there is no circular dependencies between the bounds.
33
+ #
34
+ # ```rbs
35
+ # [X, Y] # OK
36
+ # [X, Y < _Foo[X]] # OK
37
+ # [X < _Foo[Y], Y] # OK
38
+ # [X < _Foo[Y], Y < _Foo[X]] # Error
39
+ # ```
40
+ #
41
+ def validate_type_params: (Array[AST::TypeParam] params, type_name: TypeName, ?method_name: Symbol?, location: Location[untyped, untyped]?) -> void
42
+
43
+ private
44
+
45
+ # Resolves relative type names to absolute type names in given context.
46
+ # Yields the type when the type name resolution using `#resolver` fails.
47
+ #
48
+ def absolute_type: (Types::t, context: TypeNameResolver::context) { (Types::t) -> TypeName } -> Types::t
13
49
  end
14
50
  end
@@ -1,7 +1,47 @@
1
1
  module RBS
2
+ # Calculate the use variances of type variables in declaration.
3
+ #
4
+ # ```rb
5
+ # calculator = VarianceCalculator.new(builder: builder)
6
+ #
7
+ # # Calculates variances in a method type
8
+ # result = calculator.in_method_type(method_type: method_type, variables: variables)
9
+ #
10
+ # # Calculates variances in a inheritance/mixin/...
11
+ # result = calculator.in_inherit(name: name, args: args, variables: variables)
12
+ #
13
+ # # Calculates variances in a type alias
14
+ # result = calculator.in_type_alias(name: name, args: args, variables: variables)
15
+ # ```
16
+ #
17
+ # See `RBS::VarianceCaluculator::Result` for information recorded in the `Result` object.
18
+ #
2
19
  class VarianceCalculator
3
20
  type variance = :unused | :covariant | :contravariant | :invariant
4
21
 
22
+ # Result contains the set of type variables and it's variance in a occurrence.
23
+ #
24
+ # ```rb
25
+ # # Enumerates recorded type variables
26
+ # result.each do |name, variance|
27
+ # # name is the name of a type variable
28
+ # # variance is one of :unused | :covariant | :contravariant | :invariant
29
+ # end
30
+ # ```
31
+ #
32
+ # You can test with `compatible?` method if the type variable occurrences are compatible with specified (annotated) variance.
33
+ #
34
+ # ```rb
35
+ # # When T is declared as `out T`
36
+ # result.compatible?(:T, with_annotation: :covariant)
37
+ #
38
+ # # When T is declared as `in T`
39
+ # result.compatible?(:T, with_annotation: :contravariant)
40
+ #
41
+ # # When T is declared as `T`
42
+ # result.compatible?(:T, with_annotation: :invariant)
43
+ # ```
44
+ #
5
45
  class Result
6
46
  attr_reader result: Hash[Symbol, variance]
7
47
 
@@ -18,6 +58,8 @@ module RBS
18
58
  def include?: (Symbol) -> bool
19
59
 
20
60
  def compatible?: (Symbol, with_annotation: variance) -> bool
61
+
62
+ def incompatible?: (Array[AST::TypeParam]) -> Set[Symbol]?
21
63
  end
22
64
 
23
65
  attr_reader builder: DefinitionBuilder
@@ -30,6 +72,14 @@ module RBS
30
72
 
31
73
  def in_inherit: (name: TypeName, args: Array[Types::t], variables: Array[Symbol]) -> Result
32
74
 
75
+ def in_type_alias: (name: TypeName) -> Result
76
+
77
+ private
78
+
33
79
  def type: (Types::t, result: Result, context: variance) -> void
80
+
81
+ def function: (Types::Function, result: Result, context: variance) -> void
82
+
83
+ def negate: (variance) -> variance
34
84
  end
35
85
  end
data/sig/writer.rbs CHANGED
@@ -27,7 +27,7 @@ module RBS
27
27
 
28
28
  def write_member: (AST::Declarations::Module::member) -> void
29
29
 
30
- def name_and_params: (TypeName, AST::Declarations::ModuleTypeParams) -> String?
30
+ def name_and_params: (TypeName, Array[AST::TypeParam]) -> String?
31
31
 
32
32
  def name_and_args: (TypeName, Array[Types::t]) -> String?
33
33
 
@@ -0,0 +1,2 @@
1
+ dependencies:
2
+ - name: bigdecimal
@@ -0,0 +1,2 @@
1
+ dependencies:
2
+ - name: forwardable
@@ -446,7 +446,7 @@ class Date
446
446
  # DateTime.jd(0,12) + DateTime.new(2001,2,3).ajd
447
447
  # #=> #<DateTime: 2001-02-03T00:00:00+00:00 ...>
448
448
  #
449
- def +: (Integer | Rational other) -> Date
449
+ def +: ((Numeric & _ToR) other) -> Date
450
450
 
451
451
  # Returns the difference between the two dates if the other is a date object.
452
452
  # If the other is a numeric value, returns a date object pointing `other` days
@@ -461,7 +461,7 @@ class Date
461
461
  # DateTime.new(2001,2,3) - DateTime.new(2001,2,2,12)
462
462
  # #=> (1/2)
463
463
  #
464
- def -: (Integer | Rational other) -> Date
464
+ def -: ((Numeric & _ToR) other) -> Date
465
465
  | (Date other) -> Rational
466
466
 
467
467
  # Returns a date object pointing `n` months before self. The argument `n` should
@@ -0,0 +1,2 @@
1
+ dependencies:
2
+ - name: monitor
@@ -0,0 +1,2 @@
1
+ dependencies:
2
+ - name: uri
@@ -0,0 +1,2 @@
1
+ dependencies:
2
+ - name: socket
@@ -0,0 +1,2 @@
1
+ dependencies:
2
+ - name: singleton
@@ -0,0 +1,3 @@
1
+ dependencies:
2
+ - name: socket
3
+ - name: timeout
data/stdlib/set/0/set.rbs CHANGED
@@ -122,7 +122,7 @@ class Set[A]
122
122
  #
123
123
  # See also Enumerable#include?
124
124
  #
125
- def include?: (untyped) -> bool
125
+ def include?: (A) -> bool
126
126
 
127
127
  alias member? include?
128
128
 
@@ -168,12 +168,12 @@ class Set[A]
168
168
  # Deletes the given object from the set and returns self. Use `subtract` to
169
169
  # delete many items at once.
170
170
  #
171
- def delete: (untyped) -> self
171
+ def delete: (A) -> self
172
172
 
173
173
  # Deletes the given object from the set and returns self. If the object is not
174
174
  # in the set, returns nil.
175
175
  #
176
- def delete?: (untyped) -> self?
176
+ def delete?: (A) -> self?
177
177
 
178
178
  # Deletes every element of the set for which block evaluates to true, and
179
179
  # returns self. Returns an enumerator if no block is given.
@@ -154,7 +154,7 @@ module URI
154
154
  #
155
155
  # See URI.encode_www_form_component, URI.decode_www_form.
156
156
  #
157
- def self.encode_www_form: (Enumerable[[ _ToS, _ToS ]] enum, ?encoding enc) -> String
157
+ def self.encode_www_form: (Enumerable[[ _ToS, _ToS ]] enum, ?encoding? enc) -> String
158
158
 
159
159
  # Encodes given `str` to URL-encoded form data.
160
160
  #
@@ -168,7 +168,7 @@ module URI
168
168
  #
169
169
  # See URI.decode_www_form_component, URI.encode_www_form.
170
170
  #
171
- def self.encode_www_form_component: (String str, ?encoding enc) -> String
171
+ def self.encode_www_form_component: (_ToS str, ?encoding? enc) -> String
172
172
 
173
173
  # ## Synopsis
174
174
  #
@@ -268,7 +268,7 @@ module URI
268
268
  # It's recommended to first ::escape the provided `uri_str` if there are any
269
269
  # invalid URI characters.
270
270
  #
271
- def self.parse: (String uri) -> URI::Generic
271
+ def self.parse: (_ToStr uri) -> (File | FTP | HTTP | HTTPS | LDAP | LDAPS | MailTo | WS | WSS | Generic)
272
272
 
273
273
  # ## Synopsis
274
274
  #
@@ -302,12 +302,17 @@ module URI
302
302
  # p $&
303
303
  # end
304
304
  #
305
- def self.regexp: (?Array[String] schemes) -> Regexp
305
+ def self.regexp: (?Array[String]? schemes) -> Regexp
306
306
 
307
307
  # Returns a Hash of the defined schemes.
308
308
  #
309
309
  def self.scheme_list: () -> Hash[String, Class]
310
310
 
311
+ # Construct a URI instance, using the scheme to detect the appropriate class
312
+ # from +URI.scheme_list+.
313
+ #
314
+ def self.for: (String scheme, *untyped arguments, ?default: Class) -> (File | FTP | HTTP | HTTPS | LDAP | LDAPS | MailTo | WS | WSS | Generic)
315
+
311
316
  # ## Synopsis
312
317
  #
313
318
  # URI::split(uri)
@@ -340,7 +345,7 @@ module URI
340
345
  # URI.split("http://www.ruby-lang.org/")
341
346
  # # => ["http", nil, "www.ruby-lang.org", nil, nil, "/", nil, nil, nil]
342
347
  #
343
- def self.split: (String uri) -> [ String?, String?, String?, String?, String?, String?, String?, String?, String? ]
348
+ def self.split: (_ToStr uri) -> [ String?, String?, String?, String?, nil, String?, String?, String?, String? ]
344
349
  end
345
350
 
346
351
  URI::ABS_PATH: Regexp
@@ -0,0 +1,10 @@
1
+ module URI
2
+ # FTP URI syntax is defined by RFC1738 section 3.2.
3
+ #
4
+ # This class will be redesigned because of difference of implementations;
5
+ # the structure of its path. draft-hoffman-ftp-uri-04 is a draft but it
6
+ # is a good summary about the de facto spec.
7
+ # http://tools.ietf.org/html/draft-hoffman-ftp-uri-04
8
+ class FTP < Generic
9
+ end
10
+ end
@@ -193,14 +193,14 @@ module URI
193
193
  #
194
194
  # Creates a new URI::Generic instance from ``generic'' components without check.
195
195
  #
196
- def initialize: (String scheme, String userinfo, String host, Integer port, String? registry, String path, String? opaque, String query, String fragment, ?untyped parser, ?boolish arg_check) -> URI::Generic
196
+ def initialize: (String? scheme, String? userinfo, String? host, (String | Integer)? port, nil registry, String? path, String? opaque, String? query, String? fragment, ?untyped parser, ?boolish arg_check) -> void
197
197
 
198
198
  #
199
199
  # Returns the scheme component of the URI.
200
200
  #
201
201
  # URI("http://foo/bar/baz").scheme #=> "http"
202
202
  #
203
- attr_reader scheme: String
203
+ attr_reader scheme: String?
204
204
 
205
205
  # Returns the host component of the URI.
206
206
  #
@@ -222,14 +222,14 @@ module URI
222
222
  # URI("http://[::1]/bar/baz").host #=> "[::1]"
223
223
  # URI("http://[::1]/bar/baz").hostname #=> "::1"
224
224
  #
225
- attr_reader host: String
225
+ attr_reader host: String?
226
226
 
227
227
  # Returns the port component of the URI.
228
228
  #
229
229
  # URI("http://foo/bar/baz").port #=> 80
230
230
  # URI("http://foo:8080/bar/baz").port #=> 8080
231
231
  #
232
- attr_reader port: Integer
232
+ attr_reader port: Integer?
233
233
 
234
234
  def registry: () -> nil
235
235
 
@@ -237,13 +237,13 @@ module URI
237
237
  #
238
238
  # URI("http://foo/bar/baz").path #=> "/bar/baz"
239
239
  #
240
- attr_reader path: String
240
+ attr_reader path: String?
241
241
 
242
242
  # Returns the query component of the URI.
243
243
  #
244
244
  # URI("http://foo/bar/baz?search=FooBar").query #=> "search=FooBar"
245
245
  #
246
- attr_reader query: String
246
+ attr_reader query: String?
247
247
 
248
248
  # Returns the opaque part of the URI.
249
249
  #
@@ -280,13 +280,13 @@ module URI
280
280
  #
281
281
  # Checks the scheme +v+ component against the URI::Parser Regexp for :SCHEME.
282
282
  #
283
- def check_scheme: (String v) -> true
283
+ def check_scheme: (String? v) -> true
284
284
 
285
285
  # Protected setter for the scheme component +v+.
286
286
  #
287
287
  # See also URI::Generic.scheme=.
288
288
  #
289
- def set_scheme: (String v) -> String
289
+ def set_scheme: (String? v) -> String?
290
290
 
291
291
  #
292
292
  # == Args
@@ -309,7 +309,7 @@ module URI
309
309
  # uri.scheme = "https"
310
310
  # uri.to_s #=> "https://my.example.com"
311
311
  #
312
- def scheme=: (String v) -> String
312
+ def scheme=: (String? v) -> String?
313
313
 
314
314
  #
315
315
  # Checks the +user+ and +password+.
@@ -338,12 +338,12 @@ module URI
338
338
  # Can not have a registry or opaque component defined,
339
339
  # with a user component defined.
340
340
  #
341
- def check_password: (String v, ?String user) -> (String | true)
341
+ def check_password: (String? v, ?String user) -> (String? | true)
342
342
 
343
343
  #
344
344
  # Sets userinfo, argument is string like 'name:pass'.
345
345
  #
346
- def userinfo=: (String? userinfo) -> Array[String | nil]?
346
+ def userinfo=: (String? userinfo) -> String?
347
347
 
348
348
  #
349
349
  # == Args
@@ -366,7 +366,7 @@ module URI
366
366
  # uri.user = "sam"
367
367
  # uri.to_s #=> "http://sam:V3ry_S3nsit1ve@my.example.com"
368
368
  #
369
- def user=: (String user) -> String
369
+ def user=: (String? user) -> String?
370
370
 
371
371
  #
372
372
  # == Args
@@ -389,26 +389,26 @@ module URI
389
389
  # uri.password = "V3ry_S3nsit1ve"
390
390
  # uri.to_s #=> "http://john:V3ry_S3nsit1ve@my.example.com"
391
391
  #
392
- def password=: (String password) -> String
392
+ def password=: (String? password) -> String?
393
393
 
394
394
  # Protected setter for the +user+ component, and +password+ if available
395
395
  # (with validation).
396
396
  #
397
397
  # See also URI::Generic.userinfo=.
398
398
  #
399
- def set_userinfo: (String user, ?String? password) -> Array[String | nil]
399
+ def set_userinfo: (String? user, ?String? password) -> [String?, String?]
400
400
 
401
401
  # Protected setter for the user component +v+.
402
402
  #
403
403
  # See also URI::Generic.user=.
404
404
  #
405
- def set_user: (String v) -> String
405
+ def set_user: (String? v) -> String?
406
406
 
407
407
  # Protected setter for the password component +v+.
408
408
  #
409
409
  # See also URI::Generic.password=.
410
410
  #
411
- def set_password: (String v) -> String
411
+ def set_password: (String? v) -> String?
412
412
 
413
413
  # Returns the userinfo +ui+ as <code>[user, password]</code>
414
414
  # if properly formatted as 'user:password'.
@@ -421,10 +421,10 @@ module URI
421
421
  def userinfo: () -> String?
422
422
 
423
423
  # Returns the user component.
424
- def user: () -> String
424
+ def user: () -> String?
425
425
 
426
426
  # Returns the password component.
427
- def password: () -> String
427
+ def password: () -> String?
428
428
 
429
429
  #
430
430
  # Checks the host +v+ component for RFC2396 compliance
@@ -433,13 +433,13 @@ module URI
433
433
  # Can not have a registry or opaque component defined,
434
434
  # with a host component defined.
435
435
  #
436
- def check_host: (String v) -> (String | true)
436
+ def check_host: (String? v) -> true?
437
437
 
438
438
  # Protected setter for the host component +v+.
439
439
  #
440
440
  # See also URI::Generic.host=.
441
441
  #
442
- def set_host: (String v) -> String
442
+ def set_host: (String? v) -> String?
443
443
 
444
444
  #
445
445
  # == Args
@@ -462,7 +462,7 @@ module URI
462
462
  # uri.host = "foo.com"
463
463
  # uri.to_s #=> "http://foo.com"
464
464
  #
465
- def host=: (String v) -> String
465
+ def host=: (String? v) -> String?
466
466
 
467
467
  # Extract the host part of the URI and unwrap brackets for IPv6 addresses.
468
468
  #
@@ -473,7 +473,7 @@ module URI
473
473
  # uri.hostname #=> "::1"
474
474
  # uri.host #=> "[::1]"
475
475
  #
476
- def hostname: () -> String
476
+ def hostname: () -> String?
477
477
 
478
478
  # Sets the host part of the URI as the argument with brackets for IPv6 addresses.
479
479
  #
@@ -487,7 +487,7 @@ module URI
487
487
  # If the argument seems to be an IPv6 address,
488
488
  # it is wrapped with brackets.
489
489
  #
490
- def hostname=: (String v) -> String
490
+ def hostname=: (String? v) -> String?
491
491
 
492
492
  #
493
493
  # Checks the port +v+ component for RFC2396 compliance
@@ -496,13 +496,13 @@ module URI
496
496
  # Can not have a registry or opaque component defined,
497
497
  # with a port component defined.
498
498
  #
499
- def check_port: (Integer v) -> (Integer | true)
499
+ def check_port: ((String | Integer)? v) -> true?
500
500
 
501
501
  # Protected setter for the port component +v+.
502
502
  #
503
503
  # See also URI::Generic.port=.
504
504
  #
505
- def set_port: (Integer v) -> Integer
505
+ def set_port: ((String | Integer)? v) -> (String | Integer)?
506
506
 
507
507
  #
508
508
  # == Args
@@ -525,7 +525,7 @@ module URI
525
525
  # uri.port = 8080
526
526
  # uri.to_s #=> "http://my.example.com:8080"
527
527
  #
528
- def port=: (Integer v) -> Integer
528
+ def port=: ((String | Integer)? v) -> (String | Integer)?
529
529
 
530
530
  def check_registry: (String v) -> nil
531
531
 
@@ -541,13 +541,13 @@ module URI
541
541
  # Can not have a opaque component defined,
542
542
  # with a path component defined.
543
543
  #
544
- def check_path: (String v) -> true
544
+ def check_path: (String? v) -> true
545
545
 
546
546
  # Protected setter for the path component +v+.
547
547
  #
548
548
  # See also URI::Generic.path=.
549
549
  #
550
- def set_path: (String v) -> String
550
+ def set_path: (String? v) -> String?
551
551
 
552
552
  #
553
553
  # == Args
@@ -570,7 +570,7 @@ module URI
570
570
  # uri.path = "/faq/"
571
571
  # uri.to_s #=> "http://my.example.com/faq/"
572
572
  #
573
- def path=: (String v) -> String
573
+ def path=: (String? v) -> String?
574
574
 
575
575
  #
576
576
  # == Args
@@ -590,7 +590,7 @@ module URI
590
590
  # uri.query = "id=1"
591
591
  # uri.to_s #=> "http://my.example.com/?id=1"
592
592
  #
593
- def query=: (String v) -> String
593
+ def query=: (String? v) -> String?
594
594
 
595
595
  #
596
596
  # Checks the opaque +v+ component for RFC2396 compliance and
@@ -599,13 +599,13 @@ module URI
599
599
  # Can not have a host, port, user, or path component defined,
600
600
  # with an opaque component defined.
601
601
  #
602
- def check_opaque: (String v) -> (String | true)
602
+ def check_opaque: (String? v) -> true?
603
603
 
604
604
  # Protected setter for the opaque component +v+.
605
605
  #
606
606
  # See also URI::Generic.opaque=.
607
607
  #
608
- def set_opaque: (String v) -> String
608
+ def set_opaque: (String? v) -> String?
609
609
 
610
610
  #
611
611
  # == Args
@@ -620,7 +620,7 @@ module URI
620
620
  #
621
621
  # See also URI::Generic.check_opaque.
622
622
  #
623
- def opaque=: (String v) -> String
623
+ def opaque=: (String? v) -> String?
624
624
 
625
625
  #
626
626
  # Checks the fragment +v+ component against the URI::Parser Regexp for :FRAGMENT.
@@ -644,7 +644,7 @@ module URI
644
644
  # uri.fragment = "time=1305212086"
645
645
  # uri.to_s #=> "http://my.example.com/?id=25#time=1305212086"
646
646
  #
647
- def fragment=: (String v) -> String
647
+ def fragment=: (String? v) -> String?
648
648
 
649
649
  #
650
650
  # Returns true if URI is hierarchical.
@@ -0,0 +1,5 @@
1
+ module URI
2
+ # RFC6068, the mailto URL scheme.
3
+ class MailTo < Generic
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ module URI
2
+ # The syntax of WS URIs is defined in RFC6455 section 3.
3
+ #
4
+ # Note that the Ruby URI library allows WS URLs containing usernames and
5
+ # passwords. This is not legal as per the RFC, but used to be
6
+ # supported in Internet Explorer 5 and 6, before the MS04-004 security
7
+ # update. See <URL:http://support.microsoft.com/kb/834489>.
8
+ class WS < Generic
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ module URI
2
+ # The default port for WSS URIs is 443, and the scheme is 'wss:' rather
3
+ # than 'ws:'. Other than that, WSS URIs are identical to WS URIs;
4
+ # see URI::WS.
5
+ class WSS < WS
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ dependencies:
2
+ - name: dbm
3
+ - name: pstore
data/steep/Gemfile.lock CHANGED
@@ -9,37 +9,37 @@ GEM
9
9
  zeitwerk (~> 2.3)
10
10
  ast (2.4.2)
11
11
  concurrent-ruby (1.1.9)
12
- ffi (1.15.3)
13
- i18n (1.8.10)
12
+ ffi (1.15.4)
13
+ i18n (1.8.11)
14
14
  concurrent-ruby (~> 1.0)
15
15
  language_server-protocol (3.16.0.3)
16
16
  listen (3.7.0)
17
17
  rb-fsevent (~> 0.10, >= 0.10.3)
18
18
  rb-inotify (~> 0.9, >= 0.9.10)
19
19
  minitest (5.14.4)
20
- parallel (1.20.1)
21
- parser (3.0.2.0)
20
+ parallel (1.21.0)
21
+ parser (3.0.3.1)
22
22
  ast (~> 2.4.1)
23
23
  rainbow (3.0.0)
24
24
  rb-fsevent (0.11.0)
25
25
  rb-inotify (0.10.1)
26
26
  ffi (~> 1.0)
27
- rbs (1.5.1)
28
- steep (0.46.0)
27
+ rbs (1.7.1)
28
+ steep (0.47.0)
29
29
  activesupport (>= 5.1)
30
30
  language_server-protocol (>= 3.15, < 4.0)
31
31
  listen (~> 3.0)
32
32
  parallel (>= 1.0.0)
33
33
  parser (>= 3.0)
34
34
  rainbow (>= 2.2.2, < 4.0)
35
- rbs (>= 1.2.0)
35
+ rbs (~> 1.7.0)
36
36
  terminal-table (>= 2, < 4)
37
- terminal-table (3.0.1)
37
+ terminal-table (3.0.2)
38
38
  unicode-display_width (>= 1.1.1, < 3)
39
39
  tzinfo (2.0.4)
40
40
  concurrent-ruby (~> 1.0)
41
- unicode-display_width (2.0.0)
42
- zeitwerk (2.4.2)
41
+ unicode-display_width (2.1.0)
42
+ zeitwerk (2.5.1)
43
43
 
44
44
  PLATFORMS
45
45
  ruby