rbs 2.0.0 → 2.2.2

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.
Files changed (208) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +34 -0
  3. data/.github/workflows/ruby.yml +5 -0
  4. data/CHANGELOG.md +82 -0
  5. data/README.md +6 -1
  6. data/Rakefile +56 -21
  7. data/core/array.rbs +2866 -1086
  8. data/core/basic_object.rbs +150 -30
  9. data/core/binding.rbs +33 -0
  10. data/core/builtin.rbs +4 -4
  11. data/core/class.rbs +43 -5
  12. data/core/comparable.rbs +57 -0
  13. data/core/complex.rbs +170 -4
  14. data/core/constants.rbs +51 -0
  15. data/core/deprecated.rbs +7 -0
  16. data/core/dir.rbs +305 -20
  17. data/core/encoding.rbs +1214 -77
  18. data/core/enumerable.rbs +2173 -234
  19. data/core/enumerator.rbs +448 -182
  20. data/core/env.rbs +448 -1
  21. data/core/errno.rbs +1 -10
  22. data/core/errors.rbs +152 -2
  23. data/core/exception.rbs +201 -127
  24. data/core/false_class.rbs +27 -0
  25. data/core/fiber.rbs +118 -37
  26. data/core/fiber_error.rbs +8 -9
  27. data/core/file.rbs +1060 -142
  28. data/core/file_test.rbs +287 -32
  29. data/core/float.rbs +776 -300
  30. data/core/gc.rbs +185 -34
  31. data/core/global_variables.rbs +5 -1
  32. data/core/hash.rbs +1582 -649
  33. data/core/integer.rbs +974 -204
  34. data/core/io/buffer.rbs +710 -0
  35. data/core/io/wait.rbs +29 -8
  36. data/core/io.rbs +2438 -417
  37. data/core/kernel.rbs +2319 -318
  38. data/core/marshal.rbs +37 -2
  39. data/core/match_data.rbs +123 -6
  40. data/core/math.rbs +126 -6
  41. data/core/method.rbs +226 -102
  42. data/core/module.rbs +421 -45
  43. data/core/nil_class.rbs +64 -0
  44. data/core/numeric.rbs +620 -142
  45. data/core/object.rbs +453 -81
  46. data/core/object_space.rbs +92 -2
  47. data/core/proc.rbs +482 -285
  48. data/core/process.rbs +443 -34
  49. data/core/ractor.rbs +232 -9
  50. data/core/random.rbs +151 -52
  51. data/core/range.rbs +885 -160
  52. data/core/rational.rbs +122 -6
  53. data/core/rb_config.rbs +14 -4
  54. data/core/refinement.rbs +44 -0
  55. data/core/regexp.rbs +156 -14
  56. data/core/ruby_vm.rbs +42 -3
  57. data/core/signal.rbs +78 -39
  58. data/core/string.rbs +2123 -567
  59. data/core/string_io.rbs +204 -0
  60. data/core/struct.rbs +283 -28
  61. data/core/symbol.rbs +304 -30
  62. data/core/thread.rbs +1288 -688
  63. data/core/thread_group.rbs +66 -10
  64. data/core/time.rbs +643 -217
  65. data/core/trace_point.rbs +100 -12
  66. data/core/true_class.rbs +24 -0
  67. data/core/unbound_method.rbs +73 -7
  68. data/core/warning.rbs +37 -12
  69. data/docs/CONTRIBUTING.md +40 -34
  70. data/docs/stdlib.md +3 -102
  71. data/docs/syntax.md +54 -11
  72. data/ext/rbs_extension/extconf.rb +1 -0
  73. data/ext/rbs_extension/lexer.h +5 -0
  74. data/ext/rbs_extension/lexstate.c +6 -0
  75. data/ext/rbs_extension/parser.c +85 -10
  76. data/ext/rbs_extension/ruby_objs.c +4 -2
  77. data/ext/rbs_extension/ruby_objs.h +2 -2
  78. data/goodcheck.yml +0 -11
  79. data/lib/rbs/annotate/annotations.rb +197 -0
  80. data/lib/rbs/annotate/formatter.rb +80 -0
  81. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  82. data/lib/rbs/annotate/rdoc_source.rb +120 -0
  83. data/lib/rbs/annotate.rb +6 -0
  84. data/lib/rbs/ast/members.rb +21 -13
  85. data/lib/rbs/buffer.rb +17 -11
  86. data/lib/rbs/cli.rb +48 -1
  87. data/lib/rbs/definition_builder/method_builder.rb +28 -16
  88. data/lib/rbs/definition_builder.rb +6 -2
  89. data/lib/rbs/environment.rb +8 -4
  90. data/lib/rbs/location_aux.rb +12 -0
  91. data/lib/rbs/namespace.rb +1 -1
  92. data/lib/rbs/prototype/rb.rb +12 -0
  93. data/lib/rbs/type_alias_regularity.rb +6 -4
  94. data/lib/rbs/type_name.rb +1 -1
  95. data/lib/rbs/types.rb +1 -1
  96. data/lib/rbs/validator.rb +6 -0
  97. data/lib/rbs/version.rb +1 -1
  98. data/lib/rbs/writer.rb +54 -4
  99. data/lib/rbs.rb +0 -2
  100. data/schema/typeParam.json +3 -3
  101. data/sig/annotate/annotations.rbs +102 -0
  102. data/sig/annotate/formatter.rbs +24 -0
  103. data/sig/annotate/rdoc_annotater.rbs +82 -0
  104. data/sig/annotate/rdoc_source.rbs +30 -0
  105. data/sig/buffer.rbs +6 -2
  106. data/sig/cli.rbs +2 -0
  107. data/sig/collection/{collections.rbs → sources.rbs} +0 -0
  108. data/sig/location.rbs +6 -0
  109. data/sig/members.rbs +24 -18
  110. data/sig/method_builder.rbs +5 -4
  111. data/sig/method_types.rbs +5 -1
  112. data/sig/polyfill.rbs +78 -0
  113. data/sig/validator.rbs +3 -1
  114. data/sig/writer.rbs +79 -2
  115. data/stdlib/abbrev/0/abbrev.rbs +6 -0
  116. data/stdlib/abbrev/0/array.rbs +26 -0
  117. data/stdlib/base64/0/base64.rbs +31 -0
  118. data/stdlib/benchmark/0/benchmark.rbs +74 -3
  119. data/stdlib/bigdecimal/0/big_decimal.rbs +614 -165
  120. data/stdlib/bigdecimal-math/0/big_math.rbs +41 -64
  121. data/stdlib/cgi/0/core.rbs +649 -21
  122. data/stdlib/coverage/0/coverage.rbs +164 -2
  123. data/stdlib/csv/0/csv.rbs +2862 -398
  124. data/stdlib/date/0/date.rbs +483 -25
  125. data/stdlib/date/0/date_time.rbs +187 -12
  126. data/stdlib/dbm/0/dbm.rbs +152 -17
  127. data/stdlib/digest/0/digest.rbs +146 -0
  128. data/stdlib/erb/0/erb.rbs +65 -245
  129. data/stdlib/fiber/0/fiber.rbs +73 -91
  130. data/stdlib/fileutils/0/fileutils.rbs +301 -1
  131. data/stdlib/find/0/find.rbs +9 -0
  132. data/stdlib/forwardable/0/forwardable.rbs +65 -1
  133. data/stdlib/io-console/0/io-console.rbs +227 -15
  134. data/stdlib/ipaddr/0/ipaddr.rbs +161 -0
  135. data/stdlib/json/0/json.rbs +1147 -145
  136. data/stdlib/logger/0/formatter.rbs +24 -0
  137. data/stdlib/logger/0/log_device.rbs +64 -0
  138. data/stdlib/logger/0/logger.rbs +165 -13
  139. data/stdlib/logger/0/period.rbs +10 -0
  140. data/stdlib/logger/0/severity.rbs +26 -0
  141. data/stdlib/monitor/0/monitor.rbs +163 -0
  142. data/stdlib/mutex_m/0/mutex_m.rbs +35 -6
  143. data/stdlib/net-http/0/manifest.yaml +1 -0
  144. data/stdlib/net-http/0/net-http.rbs +1513 -683
  145. data/stdlib/nkf/0/nkf.rbs +372 -0
  146. data/stdlib/objspace/0/objspace.rbs +149 -90
  147. data/stdlib/openssl/0/openssl.rbs +8108 -71
  148. data/stdlib/optparse/0/optparse.rbs +487 -19
  149. data/stdlib/pathname/0/pathname.rbs +425 -124
  150. data/stdlib/prettyprint/0/prettyprint.rbs +120 -99
  151. data/stdlib/prime/0/integer-extension.rbs +20 -2
  152. data/stdlib/prime/0/prime.rbs +88 -21
  153. data/stdlib/pstore/0/pstore.rbs +102 -0
  154. data/stdlib/pty/0/pty.rbs +64 -14
  155. data/stdlib/resolv/0/resolv.rbs +420 -31
  156. data/stdlib/rubygems/0/basic_specification.rbs +4 -1
  157. data/stdlib/rubygems/0/config_file.rbs +33 -1
  158. data/stdlib/rubygems/0/dependency_installer.rbs +4 -3
  159. data/stdlib/rubygems/0/installer.rbs +13 -1
  160. data/stdlib/rubygems/0/path_support.rbs +4 -1
  161. data/stdlib/rubygems/0/platform.rbs +5 -1
  162. data/stdlib/rubygems/0/request_set.rbs +44 -2
  163. data/stdlib/rubygems/0/requirement.rbs +65 -2
  164. data/stdlib/rubygems/0/rubygems.rbs +407 -0
  165. data/stdlib/rubygems/0/source_list.rbs +13 -0
  166. data/stdlib/rubygems/0/specification.rbs +21 -1
  167. data/stdlib/rubygems/0/stream_ui.rbs +3 -1
  168. data/stdlib/rubygems/0/uninstaller.rbs +8 -1
  169. data/stdlib/rubygems/0/version.rbs +60 -157
  170. data/stdlib/securerandom/0/securerandom.rbs +44 -0
  171. data/stdlib/set/0/set.rbs +423 -109
  172. data/stdlib/shellwords/0/shellwords.rbs +55 -77
  173. data/stdlib/singleton/0/singleton.rbs +20 -0
  174. data/stdlib/socket/0/addrinfo.rbs +210 -9
  175. data/stdlib/socket/0/basic_socket.rbs +103 -11
  176. data/stdlib/socket/0/ip_socket.rbs +31 -9
  177. data/stdlib/socket/0/socket.rbs +586 -38
  178. data/stdlib/socket/0/tcp_server.rbs +22 -2
  179. data/stdlib/socket/0/tcp_socket.rbs +12 -1
  180. data/stdlib/socket/0/udp_socket.rbs +25 -2
  181. data/stdlib/socket/0/unix_server.rbs +22 -2
  182. data/stdlib/socket/0/unix_socket.rbs +45 -5
  183. data/stdlib/strscan/0/string_scanner.rbs +210 -9
  184. data/stdlib/tempfile/0/tempfile.rbs +58 -10
  185. data/stdlib/time/0/time.rbs +208 -116
  186. data/stdlib/timeout/0/timeout.rbs +10 -0
  187. data/stdlib/tmpdir/0/tmpdir.rbs +13 -4
  188. data/stdlib/tsort/0/cyclic.rbs +1 -0
  189. data/stdlib/tsort/0/interfaces.rbs +1 -0
  190. data/stdlib/tsort/0/tsort.rbs +42 -0
  191. data/stdlib/uri/0/common.rbs +57 -8
  192. data/stdlib/uri/0/file.rbs +55 -109
  193. data/stdlib/uri/0/ftp.rbs +6 -3
  194. data/stdlib/uri/0/generic.rbs +558 -329
  195. data/stdlib/uri/0/http.rbs +60 -114
  196. data/stdlib/uri/0/https.rbs +8 -102
  197. data/stdlib/uri/0/ldap.rbs +143 -137
  198. data/stdlib/uri/0/ldaps.rbs +8 -102
  199. data/stdlib/uri/0/mailto.rbs +3 -0
  200. data/stdlib/uri/0/rfc2396_parser.rbs +66 -26
  201. data/stdlib/uri/0/ws.rbs +6 -3
  202. data/stdlib/uri/0/wss.rbs +5 -3
  203. data/stdlib/yaml/0/dbm.rbs +151 -87
  204. data/stdlib/yaml/0/store.rbs +6 -0
  205. data/stdlib/zlib/0/zlib.rbs +90 -31
  206. metadata +18 -6
  207. data/lib/rbs/location.rb +0 -221
  208. data/sig/char_scanner.rbs +0 -9
data/core/file_test.rbs CHANGED
@@ -1,59 +1,314 @@
1
- # `FileTest` implements file test operations similar to those used in
2
- # `File::Stat` . It exists as a standalone module, and its methods are
3
- # also insinuated into the `File` class. (Note that this is not done by
4
- # inclusion: the interpreter cheats).
1
+ # <!-- rdoc-file=file.c -->
2
+ # FileTest implements file test operations similar to those used in File::Stat.
3
+ # It exists as a standalone module, and its methods are also insinuated into the
4
+ # File class. (Note that this is not done by inclusion: the interpreter cheats).
5
+ #
5
6
  module FileTest
6
- def self.blockdev?: (String | IO file_name) -> bool
7
+ # <!--
8
+ # rdoc-file=file.c
9
+ # - File.blockdev?(file_name) -> true or false
10
+ # -->
11
+ # Returns `true` if the named file is a block device.
12
+ #
13
+ # *file_name* can be an IO object.
14
+ #
15
+ def self?.blockdev?: (String | IO file_name) -> bool
7
16
 
8
- def self.chardev?: (String | IO file_name) -> bool
17
+ # <!--
18
+ # rdoc-file=file.c
19
+ # - File.chardev?(file_name) -> true or false
20
+ # -->
21
+ # Returns `true` if the named file is a character device.
22
+ #
23
+ # *file_name* can be an IO object.
24
+ #
25
+ def self?.chardev?: (String | IO file_name) -> bool
9
26
 
10
- def self.directory?: (String | IO file_name) -> bool
27
+ # <!--
28
+ # rdoc-file=file.c
29
+ # - File.directory?(file_name) -> true or false
30
+ # -->
31
+ # Returns `true` if the named file is a directory, or a symlink that points at a
32
+ # directory, and `false` otherwise.
33
+ #
34
+ # *file_name* can be an IO object.
35
+ #
36
+ # File.directory?(".")
37
+ #
38
+ def self?.directory?: (String | IO file_name) -> bool
11
39
 
12
- def self.empty?: (String | IO file_name) -> bool
40
+ # <!-- rdoc-file=file.c -->
41
+ # Returns `true` if the named file exists and has a zero size.
42
+ #
43
+ # *file_name* can be an IO object.
44
+ #
45
+ def self?.empty?: (String | IO file_name) -> bool
13
46
 
14
- def self.executable?: (String | IO file_name) -> bool
47
+ # <!--
48
+ # rdoc-file=file.c
49
+ # - File.executable?(file_name) -> true or false
50
+ # -->
51
+ # Returns `true` if the named file is executable by the effective user and group
52
+ # id of this process. See eaccess(3).
53
+ #
54
+ # Windows does not support execute permissions separately from read permissions.
55
+ # On Windows, a file is only considered executable if it ends in .bat, .cmd,
56
+ # .com, or .exe.
57
+ #
58
+ # Note that some OS-level security features may cause this to return true even
59
+ # though the file is not executable by the effective user/group.
60
+ #
61
+ def self?.executable?: (String file_name) -> bool
15
62
 
16
- def self.executable_real?: (String | IO file_name) -> bool
63
+ # <!--
64
+ # rdoc-file=file.c
65
+ # - File.executable_real?(file_name) -> true or false
66
+ # -->
67
+ # Returns `true` if the named file is executable by the real user and group id
68
+ # of this process. See access(3).
69
+ #
70
+ # Windows does not support execute permissions separately from read permissions.
71
+ # On Windows, a file is only considered executable if it ends in .bat, .cmd,
72
+ # .com, or .exe.
73
+ #
74
+ # Note that some OS-level security features may cause this to return true even
75
+ # though the file is not executable by the real user/group.
76
+ #
77
+ def self?.executable_real?: (String file_name) -> bool
17
78
 
18
- def self.exist?: (String | IO file_name) -> bool
79
+ # <!--
80
+ # rdoc-file=file.c
81
+ # - File.exist?(file_name) -> true or false
82
+ # -->
83
+ # Return `true` if the named file exists.
84
+ #
85
+ # *file_name* can be an IO object.
86
+ #
87
+ # "file exists" means that stat() or fstat() system call is successful.
88
+ #
89
+ def self?.exist?: (String | IO file_name) -> bool
19
90
 
20
- def self.exists?: (String | IO file_name) -> bool
91
+ # <!--
92
+ # rdoc-file=file.c
93
+ # - File.file?(file) -> true or false
94
+ # -->
95
+ # Returns `true` if the named `file` exists and is a regular file.
96
+ #
97
+ # `file` can be an IO object.
98
+ #
99
+ # If the `file` argument is a symbolic link, it will resolve the symbolic link
100
+ # and use the file referenced by the link.
101
+ #
102
+ def self?.file?: (String | IO file) -> bool
21
103
 
22
- def self.file?: (String | IO file) -> bool
104
+ # <!--
105
+ # rdoc-file=file.c
106
+ # - File.grpowned?(file_name) -> true or false
107
+ # -->
108
+ # Returns `true` if the named file exists and the effective group id of the
109
+ # calling process is the owner of the file. Returns `false` on Windows.
110
+ #
111
+ # *file_name* can be an IO object.
112
+ #
113
+ def self?.grpowned?: (String | IO file_name) -> bool
23
114
 
24
- def self.grpowned?: (String | IO file_name) -> bool
115
+ # <!--
116
+ # rdoc-file=file.c
117
+ # - File.identical?(file_1, file_2) -> true or false
118
+ # -->
119
+ # Returns `true` if the named files are identical.
120
+ #
121
+ # *file_1* and *file_2* can be an IO object.
122
+ #
123
+ # open("a", "w") {}
124
+ # p File.identical?("a", "a") #=> true
125
+ # p File.identical?("a", "./a") #=> true
126
+ # File.link("a", "b")
127
+ # p File.identical?("a", "b") #=> true
128
+ # File.symlink("a", "c")
129
+ # p File.identical?("a", "c") #=> true
130
+ # open("d", "w") {}
131
+ # p File.identical?("a", "d") #=> false
132
+ #
133
+ def self?.identical?: (String | IO file_1, String | IO file_2) -> bool
25
134
 
26
- def self.identical?: (String | IO file_1, String | IO file_2) -> bool
135
+ # <!--
136
+ # rdoc-file=file.c
137
+ # - File.owned?(file_name) -> true or false
138
+ # -->
139
+ # Returns `true` if the named file exists and the effective used id of the
140
+ # calling process is the owner of the file.
141
+ #
142
+ # *file_name* can be an IO object.
143
+ #
144
+ def self?.owned?: (String | IO file_name) -> bool
27
145
 
28
- def self.owned?: (String | IO file_name) -> bool
146
+ # <!--
147
+ # rdoc-file=file.c
148
+ # - File.pipe?(file_name) -> true or false
149
+ # -->
150
+ # Returns `true` if the named file is a pipe.
151
+ #
152
+ # *file_name* can be an IO object.
153
+ #
154
+ def self?.pipe?: (String | IO file_name) -> bool
29
155
 
30
- def self.pipe?: (String | IO file_name) -> bool
156
+ # <!--
157
+ # rdoc-file=file.c
158
+ # - File.readable?(file_name) -> true or false
159
+ # -->
160
+ # Returns `true` if the named file is readable by the effective user and group
161
+ # id of this process. See eaccess(3).
162
+ #
163
+ # Note that some OS-level security features may cause this to return true even
164
+ # though the file is not readable by the effective user/group.
165
+ #
166
+ def self?.readable?: (String file_name) -> bool
31
167
 
32
- def self.readable?: (String | IO file_name) -> bool
168
+ # <!--
169
+ # rdoc-file=file.c
170
+ # - File.readable_real?(file_name) -> true or false
171
+ # -->
172
+ # Returns `true` if the named file is readable by the real user and group id of
173
+ # this process. See access(3).
174
+ #
175
+ # Note that some OS-level security features may cause this to return true even
176
+ # though the file is not readable by the real user/group.
177
+ #
178
+ def self?.readable_real?: (String file_name) -> bool
33
179
 
34
- def self.readable_real?: (String | IO file_name) -> bool
180
+ # <!--
181
+ # rdoc-file=file.c
182
+ # - File.setgid?(file_name) -> true or false
183
+ # -->
184
+ # Returns `true` if the named file has the setgid bit set.
185
+ #
186
+ # *file_name* can be an IO object.
187
+ #
188
+ def self?.setgid?: (String | IO file_name) -> bool
35
189
 
36
- def self.setgid?: (String | IO file_name) -> bool
190
+ # <!--
191
+ # rdoc-file=file.c
192
+ # - File.setuid?(file_name) -> true or false
193
+ # -->
194
+ # Returns `true` if the named file has the setuid bit set.
195
+ #
196
+ # *file_name* can be an IO object.
197
+ #
198
+ def self?.setuid?: (String | IO file_name) -> bool
37
199
 
38
- def self.setuid?: (String | IO file_name) -> bool
200
+ # <!--
201
+ # rdoc-file=file.c
202
+ # - File.size(file_name) -> integer
203
+ # -->
204
+ # Returns the size of `file_name`.
205
+ #
206
+ # *file_name* can be an IO object.
207
+ #
208
+ def self?.size: (String | IO file_name) -> Integer
39
209
 
40
- def self.size: (String | IO file_name) -> Integer
210
+ # <!--
211
+ # rdoc-file=file.c
212
+ # - File.size?(file_name) -> Integer or nil
213
+ # -->
214
+ # Returns `nil` if `file_name` doesn't exist or has zero size, the size of the
215
+ # file otherwise.
216
+ #
217
+ # *file_name* can be an IO object.
218
+ #
219
+ def self?.size?: (String | IO file_name) -> Integer?
41
220
 
42
- def self.size?: (String | IO file_name) -> Integer?
221
+ # <!--
222
+ # rdoc-file=file.c
223
+ # - File.socket?(file_name) -> true or false
224
+ # -->
225
+ # Returns `true` if the named file is a socket.
226
+ #
227
+ # *file_name* can be an IO object.
228
+ #
229
+ def self?.socket?: (String | IO file_name) -> bool
43
230
 
44
- def self.socket?: (String | IO file_name) -> bool
231
+ # <!--
232
+ # rdoc-file=file.c
233
+ # - File.sticky?(file_name) -> true or false
234
+ # -->
235
+ # Returns `true` if the named file has the sticky bit set.
236
+ #
237
+ # *file_name* can be an IO object.
238
+ #
239
+ def self?.sticky?: (String | IO file_name) -> bool
45
240
 
46
- def self.sticky?: (String | IO file_name) -> bool
241
+ # <!--
242
+ # rdoc-file=file.c
243
+ # - File.symlink?(file_name) -> true or false
244
+ # -->
245
+ # Returns `true` if the named file is a symbolic link.
246
+ #
247
+ def self?.symlink?: (String file_name) -> bool
47
248
 
48
- def self.symlink?: (String | IO file_name) -> bool
249
+ # <!--
250
+ # rdoc-file=file.c
251
+ # - File.world_readable?(file_name) -> integer or nil
252
+ # -->
253
+ # If *file_name* is readable by others, returns an integer representing the file
254
+ # permission bits of *file_name*. Returns `nil` otherwise. The meaning of the
255
+ # bits is platform dependent; on Unix systems, see `stat(2)`.
256
+ #
257
+ # *file_name* can be an IO object.
258
+ #
259
+ # File.world_readable?("/etc/passwd") #=> 420
260
+ # m = File.world_readable?("/etc/passwd")
261
+ # sprintf("%o", m) #=> "644"
262
+ #
263
+ def self?.world_readable?: (String | IO file_name) -> Integer?
49
264
 
50
- def self.world_readable?: (String | IO file_name) -> Integer?
265
+ # <!--
266
+ # rdoc-file=file.c
267
+ # - File.world_writable?(file_name) -> integer or nil
268
+ # -->
269
+ # If *file_name* is writable by others, returns an integer representing the file
270
+ # permission bits of *file_name*. Returns `nil` otherwise. The meaning of the
271
+ # bits is platform dependent; on Unix systems, see `stat(2)`.
272
+ #
273
+ # *file_name* can be an IO object.
274
+ #
275
+ # File.world_writable?("/tmp") #=> 511
276
+ # m = File.world_writable?("/tmp")
277
+ # sprintf("%o", m) #=> "777"
278
+ #
279
+ def self?.world_writable?: (String | IO file_name) -> Integer?
51
280
 
52
- def self.world_writable?: (String | IO file_name) -> Integer?
281
+ # <!--
282
+ # rdoc-file=file.c
283
+ # - File.writable?(file_name) -> true or false
284
+ # -->
285
+ # Returns `true` if the named file is writable by the effective user and group
286
+ # id of this process. See eaccess(3).
287
+ #
288
+ # Note that some OS-level security features may cause this to return true even
289
+ # though the file is not writable by the effective user/group.
290
+ #
291
+ def self?.writable?: (String file_name) -> bool
53
292
 
54
- def self.writable?: (String | IO file_name) -> bool
293
+ # <!--
294
+ # rdoc-file=file.c
295
+ # - File.writable_real?(file_name) -> true or false
296
+ # -->
297
+ # Returns `true` if the named file is writable by the real user and group id of
298
+ # this process. See access(3).
299
+ #
300
+ # Note that some OS-level security features may cause this to return true even
301
+ # though the file is not writable by the real user/group.
302
+ #
303
+ def self?.writable_real?: (String file_name) -> bool
55
304
 
56
- def self.writable_real?: (String | IO file_name) -> bool
57
-
58
- def self.zero?: (String | IO file_name) -> bool
305
+ # <!--
306
+ # rdoc-file=file.c
307
+ # - File.zero?(file_name) -> true or false
308
+ # -->
309
+ # Returns `true` if the named file exists and has a zero size.
310
+ #
311
+ # *file_name* can be an IO object.
312
+ #
313
+ def self?.zero?: (String | IO file_name) -> bool
59
314
  end