rbs 3.6.0.dev.1 → 3.6.0.pre.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +28 -1
  3. data/CHANGELOG.md +87 -0
  4. data/Rakefile +8 -2
  5. data/core/basic_object.rbs +1 -1
  6. data/core/builtin.rbs +4 -4
  7. data/core/dir.rbs +1 -1
  8. data/core/enumerable.rbs +12 -12
  9. data/core/enumerator/product.rbs +1 -1
  10. data/core/enumerator.rbs +3 -3
  11. data/core/errors.rbs +1 -1
  12. data/core/exception.rbs +1 -1
  13. data/core/file.rbs +1 -1
  14. data/core/integer.rbs +4 -4
  15. data/core/kernel.rbs +3 -3
  16. data/core/module.rbs +1 -1
  17. data/core/random.rbs +1 -1
  18. data/core/rbs/unnamed/env_class.rbs +7 -7
  19. data/core/rbs/unnamed/random.rbs +14 -14
  20. data/core/regexp.rbs +2 -2
  21. data/core/thread.rbs +6 -5
  22. data/core/trace_point.rbs +2 -2
  23. data/docs/syntax.md +5 -3
  24. data/ext/rbs_extension/lexer.c +1 -1
  25. data/ext/rbs_extension/lexer.h +5 -0
  26. data/ext/rbs_extension/lexer.re +1 -1
  27. data/ext/rbs_extension/lexstate.c +16 -0
  28. data/ext/rbs_extension/location.c +27 -39
  29. data/ext/rbs_extension/location.h +7 -2
  30. data/ext/rbs_extension/parser.c +1 -1
  31. data/lib/rbs/buffer.rb +5 -0
  32. data/lib/rbs/cli/validate.rb +41 -1
  33. data/lib/rbs/errors.rb +1 -1
  34. data/lib/rbs/location_aux.rb +2 -6
  35. data/lib/rbs/prototype/rb.rb +2 -2
  36. data/lib/rbs/test/type_check.rb +7 -0
  37. data/lib/rbs/version.rb +1 -1
  38. data/sig/location.rbs +0 -3
  39. data/sig/types.rbs +12 -5
  40. data/stdlib/csv/0/csv.rbs +17 -6
  41. data/stdlib/digest/0/digest.rbs +22 -28
  42. data/stdlib/ipaddr/0/ipaddr.rbs +1 -1
  43. data/stdlib/kconv/0/kconv.rbs +166 -0
  44. data/stdlib/net-http/0/net-http.rbs +1 -1
  45. data/stdlib/psych/0/store.rbs +1 -1
  46. data/stdlib/uri/0/ldap.rbs +1 -1
  47. data/stdlib/zlib/0/deflate.rbs +1 -1
  48. metadata +4 -3
@@ -129,6 +129,22 @@ token next_token(lexstate *state, enum TokenType type) {
129
129
  return t;
130
130
  }
131
131
 
132
+ token next_eof_token(lexstate *state) {
133
+ if (state->current.byte_pos == RSTRING_LEN(state->string)+1) {
134
+ // End of String
135
+ token t;
136
+ t.type = pEOF;
137
+ t.range.start = state->start;
138
+ t.range.end = state->start;
139
+ state->start = state->current;
140
+
141
+ return t;
142
+ } else {
143
+ // NULL byte in the middle of the string
144
+ return next_token(state, pEOF);
145
+ }
146
+ }
147
+
132
148
  void rbs_skip(lexstate *state) {
133
149
  if (!state->last_char) {
134
150
  peek(state);
@@ -3,7 +3,9 @@
3
3
  #define RBS_LOC_REQUIRED_P(loc, i) ((loc)->children->required_p & (1 << (i)))
4
4
  #define RBS_LOC_OPTIONAL_P(loc, i) (!RBS_LOC_REQUIRED_P((loc), (i)))
5
5
  #define RBS_LOC_CHILDREN_SIZE(cap) (sizeof(rbs_loc_children) + sizeof(rbs_loc_entry) * ((cap) - 1))
6
+ #define NULL_LOC_RANGE_P(rg) ((rg).start == -1)
6
7
 
8
+ rbs_loc_range RBS_LOC_NULL_RANGE = { -1, -1 };
7
9
  VALUE RBS_Location;
8
10
 
9
11
  position rbs_loc_position(int char_pos) {
@@ -16,6 +18,11 @@ position rbs_loc_position3(int char_pos, int line, int column) {
16
18
  return pos;
17
19
  }
18
20
 
21
+ rbs_loc_range rbs_new_loc_range(range rg) {
22
+ rbs_loc_range r = { rg.start.char_pos, rg.end.char_pos };
23
+ return r;
24
+ }
25
+
19
26
  static void check_children_max(unsigned short n) {
20
27
  size_t max = sizeof(rbs_loc_entry_bitmap) * 8;
21
28
  if (n > max) {
@@ -51,7 +58,7 @@ void rbs_loc_add_required_child(rbs_loc *loc, ID name, range r) {
51
58
 
52
59
  unsigned short i = loc->children->len++;
53
60
  loc->children->entries[i].name = name;
54
- loc->children->entries[i].rg = r;
61
+ loc->children->entries[i].rg = rbs_new_loc_range(r);
55
62
 
56
63
  loc->children->required_p |= 1 << i;
57
64
  }
@@ -61,10 +68,10 @@ void rbs_loc_add_optional_child(rbs_loc *loc, ID name, range r) {
61
68
 
62
69
  unsigned short i = loc->children->len++;
63
70
  loc->children->entries[i].name = name;
64
- loc->children->entries[i].rg = r;
71
+ loc->children->entries[i].rg = rbs_new_loc_range(r);
65
72
  }
66
73
 
67
- void rbs_loc_init(rbs_loc *loc, VALUE buffer, range rg) {
74
+ void rbs_loc_init(rbs_loc *loc, VALUE buffer, rbs_loc_range rg) {
68
75
  loc->buffer = buffer;
69
76
  loc->rg = rg;
70
77
  loc->children = NULL;
@@ -100,7 +107,7 @@ static VALUE location_s_allocate(VALUE klass) {
100
107
  rbs_loc *loc;
101
108
  VALUE obj = TypedData_Make_Struct(klass, rbs_loc, &location_type, loc);
102
109
 
103
- rbs_loc_init(loc, Qnil, NULL_RANGE);
110
+ rbs_loc_init(loc, Qnil, RBS_LOC_NULL_RANGE);
104
111
 
105
112
  return obj;
106
113
  }
@@ -112,8 +119,8 @@ rbs_loc *rbs_check_location(VALUE obj) {
112
119
  static VALUE location_initialize(VALUE self, VALUE buffer, VALUE start_pos, VALUE end_pos) {
113
120
  rbs_loc *loc = rbs_check_location(self);
114
121
 
115
- position start = rbs_loc_position(FIX2INT(start_pos));
116
- position end = rbs_loc_position(FIX2INT(end_pos));
122
+ int start = FIX2INT(start_pos);
123
+ int end = FIX2INT(end_pos);
117
124
 
118
125
  loc->buffer = buffer;
119
126
  loc->rg.start = start;
@@ -143,38 +150,12 @@ static VALUE location_buffer(VALUE self) {
143
150
 
144
151
  static VALUE location_start_pos(VALUE self) {
145
152
  rbs_loc *loc = rbs_check_location(self);
146
- return INT2FIX(loc->rg.start.char_pos);
153
+ return INT2FIX(loc->rg.start);
147
154
  }
148
155
 
149
156
  static VALUE location_end_pos(VALUE self) {
150
157
  rbs_loc *loc = rbs_check_location(self);
151
- return INT2FIX(loc->rg.end.char_pos);
152
- }
153
-
154
- static VALUE location_start_loc(VALUE self) {
155
- rbs_loc *loc = rbs_check_location(self);
156
-
157
- if (loc->rg.start.line >= 0) {
158
- VALUE pair = rb_ary_new_capa(2);
159
- rb_ary_push(pair, INT2FIX(loc->rg.start.line));
160
- rb_ary_push(pair, INT2FIX(loc->rg.start.column));
161
- return pair;
162
- } else {
163
- return Qnil;
164
- }
165
- }
166
-
167
- static VALUE location_end_loc(VALUE self) {
168
- rbs_loc *loc = rbs_check_location(self);
169
-
170
- if (loc->rg.end.line >= 0) {
171
- VALUE pair = rb_ary_new_capa(2);
172
- rb_ary_push(pair, INT2FIX(loc->rg.end.line));
173
- rb_ary_push(pair, INT2FIX(loc->rg.end.column));
174
- return pair;
175
- } else {
176
- return Qnil;
177
- }
158
+ return INT2FIX(loc->rg.end);
178
159
  }
179
160
 
180
161
  static VALUE location_add_required_child(VALUE self, VALUE name, VALUE start, VALUE end) {
@@ -213,6 +194,15 @@ VALUE rbs_new_location(VALUE buffer, range rg) {
213
194
  rbs_loc *loc;
214
195
  VALUE obj = TypedData_Make_Struct(RBS_Location, rbs_loc, &location_type, loc);
215
196
 
197
+ rbs_loc_init(loc, buffer, rbs_new_loc_range(rg));
198
+
199
+ return obj;
200
+ }
201
+
202
+ static VALUE rbs_new_location_from_loc_range(VALUE buffer, rbs_loc_range rg) {
203
+ rbs_loc *loc;
204
+ VALUE obj = TypedData_Make_Struct(RBS_Location, rbs_loc, &location_type, loc);
205
+
216
206
  rbs_loc_init(loc, buffer, rg);
217
207
 
218
208
  return obj;
@@ -226,12 +216,12 @@ static VALUE location_aref(VALUE self, VALUE name) {
226
216
  if (loc->children != NULL) {
227
217
  for (unsigned short i = 0; i < loc->children->len; i++) {
228
218
  if (loc->children->entries[i].name == id) {
229
- range result = loc->children->entries[i].rg;
219
+ rbs_loc_range result = loc->children->entries[i].rg;
230
220
 
231
- if (RBS_LOC_OPTIONAL_P(loc, i) && null_range_p(result)) {
221
+ if (RBS_LOC_OPTIONAL_P(loc, i) && NULL_LOC_RANGE_P(result)) {
232
222
  return Qnil;
233
223
  } else {
234
- return rbs_new_location(loc->buffer, result);
224
+ return rbs_new_location_from_loc_range(loc->buffer, result);
235
225
  }
236
226
  }
237
227
  }
@@ -294,8 +284,6 @@ void rbs__init_location(void) {
294
284
  rb_define_method(RBS_Location, "buffer", location_buffer, 0);
295
285
  rb_define_method(RBS_Location, "start_pos", location_start_pos, 0);
296
286
  rb_define_method(RBS_Location, "end_pos", location_end_pos, 0);
297
- rb_define_private_method(RBS_Location, "_start_loc", location_start_loc, 0);
298
- rb_define_private_method(RBS_Location, "_end_loc", location_end_loc, 0);
299
287
  rb_define_method(RBS_Location, "_add_required_child", location_add_required_child, 3);
300
288
  rb_define_method(RBS_Location, "_add_optional_child", location_add_optional_child, 3);
301
289
  rb_define_method(RBS_Location, "_add_optional_no_child", location_add_optional_no_child, 1);
@@ -9,9 +9,14 @@
9
9
  * */
10
10
  extern VALUE RBS_Location;
11
11
 
12
+ typedef struct {
13
+ int start;
14
+ int end;
15
+ } rbs_loc_range;
16
+
12
17
  typedef struct {
13
18
  ID name;
14
- range rg;
19
+ rbs_loc_range rg;
15
20
  } rbs_loc_entry;
16
21
 
17
22
  typedef unsigned int rbs_loc_entry_bitmap;
@@ -27,7 +32,7 @@ typedef struct {
27
32
 
28
33
  typedef struct {
29
34
  VALUE buffer;
30
- range rg;
35
+ rbs_loc_range rg;
31
36
  rbs_loc_children *children; // NULL when no children is allocated
32
37
  } rbs_loc;
33
38
 
@@ -1194,7 +1194,7 @@ VALUE parse_type_params(parserstate *state, range *rg, bool module_type_params)
1194
1194
 
1195
1195
  default_type_range.start = state->current_token.range.start;
1196
1196
  default_type = parse_type(state);
1197
- default_type_range.start = state->current_token.range.end;
1197
+ default_type_range.end = state->current_token.range.end;
1198
1198
 
1199
1199
  required_param_allowed = false;
1200
1200
  } else {
data/lib/rbs/buffer.rb CHANGED
@@ -25,6 +25,11 @@ module RBS
25
25
  @ranges << range
26
26
  offset += size
27
27
  end
28
+
29
+ if !content.end_with?("\n") && content.size > 0
30
+ @ranges[-1] = @ranges[-1].begin...(@ranges[-1].end+1)
31
+ end
32
+
28
33
  @ranges
29
34
  end
30
35
  end
@@ -164,7 +164,7 @@ EOU
164
164
  end
165
165
 
166
166
  if dt = param.default_type
167
- void_type_context_validator(dt)
167
+ void_type_context_validator(dt, true)
168
168
  no_self_type_validator(dt)
169
169
  no_classish_type_validator(dt)
170
170
  @validator.validate_type(dt, context: nil)
@@ -232,6 +232,22 @@ EOU
232
232
  location: decl.decl.location&.aref(:type_params)
233
233
  )
234
234
 
235
+ decl.decl.type_params.each do |param|
236
+ if ub = param.upper_bound_type
237
+ void_type_context_validator(ub)
238
+ no_self_type_validator(ub)
239
+ no_classish_type_validator(ub)
240
+ @validator.validate_type(ub, context: nil)
241
+ end
242
+
243
+ if dt = param.default_type
244
+ void_type_context_validator(dt, true)
245
+ no_self_type_validator(dt)
246
+ no_classish_type_validator(dt)
247
+ @validator.validate_type(dt, context: nil)
248
+ end
249
+ end
250
+
235
251
  decl.decl.members.each do |member|
236
252
  case member
237
253
  when AST::Members::MethodDefinition
@@ -278,7 +294,31 @@ EOU
278
294
  @builder.expand_alias1(name).tap do |type|
279
295
  @validator.validate_type type, context: nil
280
296
  end
297
+
281
298
  @validator.validate_type_alias(entry: decl)
299
+
300
+ @validator.validate_type_params(
301
+ decl.decl.type_params,
302
+ type_name: name,
303
+ location: decl.decl.location&.aref(:type_params)
304
+ )
305
+
306
+ decl.decl.type_params.each do |param|
307
+ if ub = param.upper_bound_type
308
+ void_type_context_validator(ub)
309
+ no_self_type_validator(ub)
310
+ no_classish_type_validator(ub)
311
+ @validator.validate_type(ub, context: nil)
312
+ end
313
+
314
+ if dt = param.default_type
315
+ void_type_context_validator(dt, true)
316
+ no_self_type_validator(dt)
317
+ no_classish_type_validator(dt)
318
+ @validator.validate_type(dt, context: nil)
319
+ end
320
+ end
321
+
282
322
  no_self_type_validator(decl.decl.type)
283
323
  no_classish_type_validator(decl.decl.type)
284
324
  void_type_context_validator(decl.decl.type)
data/lib/rbs/errors.rb CHANGED
@@ -35,7 +35,7 @@ module RBS
35
35
  return msg unless location.start_line == location.end_line
36
36
 
37
37
  indent = " " * location.start_column
38
- marker = "^" * (location.end_column - location.start_column)
38
+ marker = "^" * ([location.end_column - location.start_column, 1].max or raise)
39
39
 
40
40
  io = StringIO.new
41
41
  io.puts msg
@@ -49,15 +49,11 @@ module RBS
49
49
  end
50
50
 
51
51
  def start_loc
52
- @start_loc ||= begin
53
- _start_loc || buffer.pos_to_loc(start_pos)
54
- end
52
+ @start_loc ||= buffer.pos_to_loc(start_pos)
55
53
  end
56
54
 
57
55
  def end_loc
58
- @end_loc ||= begin
59
- _end_loc || buffer.pos_to_loc(end_pos)
60
- end
56
+ @end_loc ||= buffer.pos_to_loc(end_pos)
61
57
  end
62
58
 
63
59
  def range
@@ -694,7 +694,7 @@ module RBS
694
694
 
695
695
  types = types.map do |t|
696
696
  if t.is_a?(Types::Literal)
697
- type_name = TypeName.new(name: t.literal.class.name.to_sym, namespace: Namespace.root)
697
+ type_name = TypeName.new(name: t.literal.class.name&.to_sym || raise, namespace: Namespace.root)
698
698
  Types::ClassInstance.new(name: type_name, args: [], location: nil)
699
699
  else
700
700
  t
@@ -825,7 +825,7 @@ module RBS
825
825
  AST::Members::ClassVariable => -3,
826
826
  AST::Members::ClassInstanceVariable => -2,
827
827
  AST::Members::InstanceVariable => -1,
828
- }
828
+ } #: Hash[Class, Integer]
829
829
  decls.sort_by! { |decl| [orders.fetch(decl.class, 0), i += 1] }
830
830
  end
831
831
  end
@@ -260,6 +260,13 @@ module RBS
260
260
  Test.call(val, IS_AP, instance_class)
261
261
  when Types::ClassInstance
262
262
  klass = get_class(type.name) or return false
263
+ if params = builder.env.normalized_module_class_entry(type.name.absolute!)&.type_params
264
+ args = AST::TypeParam.normalize_args(params, type.args)
265
+ unless args == type.args
266
+ type = Types::ClassInstance.new(name: type.name, args: args, location: type.location)
267
+ end
268
+ end
269
+
263
270
  case
264
271
  when klass == ::Array
265
272
  Test.call(val, IS_AP, klass) && each_sample(val).all? {|v| value(v, type.args[0]) }
data/lib/rbs/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RBS
4
- VERSION = "3.6.0.dev.1"
4
+ VERSION = "3.6.0.pre.2"
5
5
  end
data/sig/location.rbs CHANGED
@@ -99,9 +99,6 @@ module RBS
99
99
 
100
100
  private
101
101
 
102
- def _start_loc: () -> Buffer::loc?
103
- def _end_loc: () -> Buffer::loc?
104
-
105
102
  def _add_required_child: (RequiredChildKeys name, Integer start_pos, Integer end_pos) -> void
106
103
  def _add_optional_child: (OptionalChildKeys name, Integer start_pos, Integer end_pos) -> void
107
104
  def _add_optional_no_child: (OptionalChildKeys name) -> void
data/sig/types.rbs CHANGED
@@ -301,16 +301,23 @@ module RBS
301
301
  end
302
302
 
303
303
  class Record
304
- attr_reader all_fields: Hash[Symbol, [t, bool]]
304
+ type key = Symbol | String | Integer | bool
305
305
 
306
- attr_reader fields: Hash[Symbol, t]
306
+ # All types of all files
307
+ #
308
+ # If the key is *required*, the second value of the tuple is `true`.
309
+ # If the key is *optional*, the second value of the tuple is `false`.
310
+ #
311
+ attr_reader all_fields: Hash[key, [t, bool]]
312
+
313
+ attr_reader fields: Hash[key, t]
307
314
 
308
- attr_reader optional_fields: Hash[Symbol, t]
315
+ attr_reader optional_fields: Hash[key, t]
309
316
 
310
317
  type loc = Location[bot, bot]
311
318
 
312
- def initialize: (fields: Hash[Symbol, t], location: loc?) -> void
313
- | (all_fields: Hash[Symbol, [t, bool]], location: loc?) -> void
319
+ def initialize: (fields: Hash[key, t], location: loc?) -> void
320
+ | (all_fields: Hash[key, [t, bool]], location: loc?) -> void
314
321
 
315
322
  include _TypeBase
316
323
 
data/stdlib/csv/0/csv.rbs CHANGED
@@ -1722,8 +1722,8 @@ class CSV < Object
1722
1722
  # would read `UTF-32BE` data from the file but transcode it to `UTF-8`
1723
1723
  # before parsing.
1724
1724
  #
1725
- def self.foreach: (String | IO path, ?String mode, headers: true, **untyped options) { (::CSV::Row arg0) -> void } -> void
1726
- | (String | IO path, ?String mode, headers: true, **untyped options) -> Enumerator[::CSV::Row, void]
1725
+ def self.foreach: (String | IO path, ?String mode, headers: true | :first_row | Array[untyped] | String, **untyped options) { (::CSV::Row arg0) -> void } -> void
1726
+ | (String | IO path, ?String mode, headers: true | :first_row | Array[untyped] | String, **untyped options) -> Enumerator[::CSV::Row, void]
1727
1727
  | (String | IO path, ?String mode, **untyped options) { (::Array[String?] arg0) -> void } -> void
1728
1728
  | (String | IO path, ?String mode, **untyped options) -> Enumerator[::Array[String?], void]
1729
1729
 
@@ -2031,7 +2031,8 @@ class CSV < Object
2031
2031
  # File.write(path, string)
2032
2032
  # CSV.read(path, headers: true) # => #<CSV::Table mode:col_or_row row_count:4>
2033
2033
  #
2034
- def self.read: (String path, ?::Hash[Symbol, untyped] options) -> ::Array[::Array[String?]]
2034
+ def self.read: (String | IO path, headers: true | :first_row | Array[untyped] | String, **untyped options) -> ::CSV::Table[CSV::Row]
2035
+ | (String | IO path, ?::Hash[Symbol, untyped] options) -> ::Array[::Array[String?]]
2035
2036
 
2036
2037
  # <!--
2037
2038
  # rdoc-file=lib/csv.rb
@@ -2195,6 +2196,16 @@ class CSV < Object
2195
2196
  #
2196
2197
  def each: () -> Enumerator[untyped, Integer]
2197
2198
  | () { (untyped) -> void } -> Integer
2199
+
2200
+ # <!--
2201
+ # rdoc-file=lib/csv.rb
2202
+ # - csv.headers -> object
2203
+ # -->
2204
+ # Returns the value that determines whether headers are used; used for parsing;
2205
+ # see {Option `headers`[}](#class-CSV-label-Option+headers):
2206
+ # CSV.new('').headers # => nil
2207
+ #
2208
+ def headers: () -> (Array[String] | true | nil)
2198
2209
  end
2199
2210
 
2200
2211
  # <!-- rdoc-file=lib/csv.rb -->
@@ -3002,7 +3013,7 @@ end
3002
3013
  # table['Name'] # => ["Foo", "Bar", "Baz"]
3003
3014
  #
3004
3015
  class CSV::Table[out Elem] < Object
3005
- include Enumerable[untyped]
3016
+ include Enumerable[Elem]
3006
3017
  extend Forwardable
3007
3018
 
3008
3019
  # <!--
@@ -3633,8 +3644,8 @@ class CSV::Table[out Elem] < Object
3633
3644
  # Returns a new Enumerator if no block is given:
3634
3645
  # table.each # => #<Enumerator: #<CSV::Table mode:col row_count:4>:each>
3635
3646
  #
3636
- def each: () -> Enumerator[untyped, self]
3637
- | () { (untyped) -> void } -> self
3647
+ def each: () -> Enumerator[Elem, self]
3648
+ | () { (Elem) -> void } -> self
3638
3649
  | () { (*untyped) -> void } -> self
3639
3650
 
3640
3651
  def empty?: (*untyped args) { (*untyped) -> untyped } -> untyped
@@ -74,7 +74,7 @@ module Digest
74
74
  # -->
75
75
  # Returns a BubbleBabble encoded version of a given *string*.
76
76
  #
77
- def self.bubblebabble: (String) -> String
77
+ def self.bubblebabble: (string) -> String
78
78
 
79
79
  def self.const_missing: (Symbol name) -> singleton(::Digest::Base)
80
80
 
@@ -84,13 +84,13 @@ module Digest
84
84
  # -->
85
85
  # Generates a hex-encoded version of a given *string*.
86
86
  #
87
- def self.hexencode: (String) -> String
87
+ def self.hexencode: (string) -> String
88
88
 
89
89
  private
90
90
 
91
- def bubblebabble: (String) -> String
91
+ def bubblebabble: (string) -> String
92
92
 
93
- def hexencode: (String) -> String
93
+ def hexencode: (string) -> String
94
94
  end
95
95
 
96
96
  # <!-- rdoc-file=ext/digest/lib/digest.rb -->
@@ -111,7 +111,7 @@ module Digest::Instance
111
111
  # The update() method and the left-shift operator are overridden by each
112
112
  # implementation subclass. (One should be an alias for the other)
113
113
  #
114
- def <<: (String) -> self
114
+ def <<: (string) -> self
115
115
 
116
116
  # <!--
117
117
  # rdoc-file=ext/digest/digest.c
@@ -122,7 +122,7 @@ module Digest::Instance
122
122
  # of the digest object. If another digest instance is given, checks whether
123
123
  # they have the same hash value. Otherwise returns false.
124
124
  #
125
- def ==: (::Digest::Instance | String) -> bool
125
+ def ==: (instance | string) -> bool
126
126
 
127
127
  # <!--
128
128
  # rdoc-file=ext/digest/lib/digest.rb
@@ -138,7 +138,7 @@ module Digest::Instance
138
138
  # In either case, the return value is properly padded with '=' and contains no
139
139
  # line feeds.
140
140
  #
141
- def base64digest: (?String? str) -> String
141
+ def base64digest: (?string? str) -> String
142
142
 
143
143
  # <!--
144
144
  # rdoc-file=ext/digest/lib/digest.rb
@@ -177,7 +177,7 @@ module Digest::Instance
177
177
  # If a *string* is given, returns the hash value for the given *string*,
178
178
  # resetting the digest to the initial state before and after the process.
179
179
  #
180
- def digest: (?String) -> String
180
+ def digest: (?string) -> String
181
181
 
182
182
  # <!--
183
183
  # rdoc-file=ext/digest/digest.c
@@ -204,7 +204,7 @@ module Digest::Instance
204
204
  # -->
205
205
  # Updates the digest with the contents of a given file *name* and returns self.
206
206
  #
207
- def file: (String name) -> self
207
+ def file: (string name) -> instance
208
208
 
209
209
  # <!--
210
210
  # rdoc-file=ext/digest/digest.c
@@ -218,7 +218,7 @@ module Digest::Instance
218
218
  # hex-encoded form, resetting the digest to the initial state before and after
219
219
  # the process.
220
220
  #
221
- def hexdigest: (?String) -> String
221
+ def hexdigest: (?string) -> String
222
222
 
223
223
  # <!--
224
224
  # rdoc-file=ext/digest/digest.c
@@ -253,7 +253,7 @@ module Digest::Instance
253
253
  # Returns a new, initialized copy of the digest object. Equivalent to
254
254
  # digest_obj.clone().reset().
255
255
  #
256
- def new: () -> ::Digest::Base
256
+ def new: () -> instance
257
257
 
258
258
  # <!--
259
259
  # rdoc-file=ext/digest/digest.c
@@ -288,7 +288,7 @@ module Digest::Instance
288
288
  # The update() method and the left-shift operator are overridden by each
289
289
  # implementation subclass. (One should be an alias for the other)
290
290
  #
291
- def update: (String) -> self
291
+ def update: (string) -> self
292
292
 
293
293
  private
294
294
 
@@ -319,7 +319,7 @@ class Digest::Class
319
319
  # Returns the base64 encoded hash value of a given *string*. The return value
320
320
  # is properly padded with '=' and contains no line feeds.
321
321
  #
322
- def self.base64digest: (String str, *untyped) -> String
322
+ def self.base64digest: (string str) -> String
323
323
 
324
324
  # <!--
325
325
  # rdoc-file=ext/digest/bubblebabble/bubblebabble.c
@@ -327,7 +327,7 @@ class Digest::Class
327
327
  # -->
328
328
  # Returns the BubbleBabble encoded hash value of a given *string*.
329
329
  #
330
- def self.bubblebabble: (String, *untyped) -> String
330
+ def self.bubblebabble: (string) -> String
331
331
 
332
332
  # <!--
333
333
  # rdoc-file=ext/digest/digest.c
@@ -338,7 +338,7 @@ class Digest::Class
338
338
  # any, are passed through to the constructor and the *string* is passed to
339
339
  # #digest().
340
340
  #
341
- def self.digest: (String, *untyped) -> String
341
+ def self.digest: (string) -> String
342
342
 
343
343
  # <!--
344
344
  # rdoc-file=ext/digest/lib/digest.rb
@@ -350,7 +350,7 @@ class Digest::Class
350
350
  # p Digest::SHA256.file("X11R6.8.2-src.tar.bz2").hexdigest
351
351
  # # => "f02e3c85572dc9ad7cb77c2a638e3be24cc1b5bea9fdbb0b0299c9668475c534"
352
352
  #
353
- def self.file: (String name, *untyped) -> ::Digest::Class
353
+ def self.file: (string name) -> instance
354
354
 
355
355
  # <!--
356
356
  # rdoc-file=ext/digest/digest.c
@@ -359,11 +359,11 @@ class Digest::Class
359
359
  # Returns the hex-encoded hash value of a given *string*. This is almost
360
360
  # equivalent to Digest.hexencode(Digest::Class.new(*parameters).digest(string)).
361
361
  #
362
- def self.hexdigest: (String, *untyped) -> String
362
+ def self.hexdigest: (string) -> String
363
363
 
364
364
  private
365
365
 
366
- def initialize: () -> self
366
+ def initialize: () -> void
367
367
  end
368
368
 
369
369
  # <!-- rdoc-file=ext/digest/digest.c -->
@@ -408,7 +408,7 @@ class Digest::Base < Digest::Class
408
408
  # <!-- rdoc-file=ext/digest/digest.c -->
409
409
  # Update the digest using given *string* and return `self`.
410
410
  #
411
- def <<: (String) -> self
411
+ def <<: (string) -> self
412
412
 
413
413
  # <!--
414
414
  # rdoc-file=ext/digest/digest.c
@@ -434,20 +434,14 @@ class Digest::Base < Digest::Class
434
434
  #
435
435
  def reset: () -> self
436
436
 
437
- # <!--
438
- # rdoc-file=ext/digest/digest.c
439
- # - digest_base.update(string) -> digest_base
440
- # - digest_base << string -> digest_base
441
- # -->
442
- # Update the digest using given *string* and return `self`.
443
- #
444
- def update: (String) -> self
437
+ %a{annotate:rdoc:skip}
438
+ alias update <<
445
439
 
446
440
  private
447
441
 
448
442
  def finish: () -> String
449
443
 
450
- def initialize_copy: (::Digest::Base) -> self
444
+ def initialize_copy: (self) -> self
451
445
  end
452
446
 
453
447
  # <!-- rdoc-file=ext/digest/sha1/sha1init.c -->
@@ -63,7 +63,7 @@ class IPAddr
63
63
  # as &, |, include? and ==, accept a string, or a packed in_addr value instead
64
64
  # of an IPAddr object.
65
65
  #
66
- def initialize: (?String addr, ?untyped family) -> IPAddr
66
+ def initialize: (?String addr, ?untyped family) -> void
67
67
 
68
68
  # <!--
69
69
  # rdoc-file=lib/ipaddr.rb