steep 0.16.0 → 0.17.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.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +0 -3
  3. data/CHANGELOG.md +24 -0
  4. data/Rakefile +0 -13
  5. data/bin/setup +0 -2
  6. data/bin/smoke_runner.rb +0 -1
  7. data/exe/steep +0 -1
  8. data/lib/steep.rb +1 -1
  9. data/lib/steep/drivers/check.rb +1 -12
  10. data/lib/steep/drivers/watch.rb +2 -2
  11. data/lib/steep/project/file.rb +1 -1
  12. data/lib/steep/project/hover_content.rb +1 -1
  13. data/lib/steep/project/options.rb +15 -0
  14. data/lib/steep/server/code_worker.rb +4 -4
  15. data/lib/steep/server/signature_worker.rb +4 -4
  16. data/lib/steep/type_construction.rb +13 -19
  17. data/lib/steep/type_inference/constant_env.rb +2 -10
  18. data/lib/steep/type_inference/context.rb +1 -0
  19. data/lib/steep/version.rb +1 -1
  20. data/steep.gemspec +6 -7
  21. metadata +23 -146
  22. data/exe/rbs +0 -3
  23. data/vendor/ruby-signature/.github/workflows/ruby.yml +0 -27
  24. data/vendor/ruby-signature/.gitignore +0 -12
  25. data/vendor/ruby-signature/.rubocop.yml +0 -15
  26. data/vendor/ruby-signature/BSDL +0 -22
  27. data/vendor/ruby-signature/COPYING +0 -56
  28. data/vendor/ruby-signature/Gemfile +0 -6
  29. data/vendor/ruby-signature/README.md +0 -93
  30. data/vendor/ruby-signature/Rakefile +0 -142
  31. data/vendor/ruby-signature/bin/annotate-with-rdoc +0 -157
  32. data/vendor/ruby-signature/bin/console +0 -14
  33. data/vendor/ruby-signature/bin/query-rdoc +0 -103
  34. data/vendor/ruby-signature/bin/setup +0 -10
  35. data/vendor/ruby-signature/bin/sort +0 -89
  36. data/vendor/ruby-signature/bin/test_runner.rb +0 -16
  37. data/vendor/ruby-signature/docs/CONTRIBUTING.md +0 -97
  38. data/vendor/ruby-signature/docs/sigs.md +0 -148
  39. data/vendor/ruby-signature/docs/stdlib.md +0 -152
  40. data/vendor/ruby-signature/docs/syntax.md +0 -528
  41. data/vendor/ruby-signature/exe/rbs +0 -7
  42. data/vendor/ruby-signature/lib/rbs.rb +0 -64
  43. data/vendor/ruby-signature/lib/rbs/ast/annotation.rb +0 -27
  44. data/vendor/ruby-signature/lib/rbs/ast/comment.rb +0 -27
  45. data/vendor/ruby-signature/lib/rbs/ast/declarations.rb +0 -395
  46. data/vendor/ruby-signature/lib/rbs/ast/members.rb +0 -362
  47. data/vendor/ruby-signature/lib/rbs/buffer.rb +0 -50
  48. data/vendor/ruby-signature/lib/rbs/builtin_names.rb +0 -55
  49. data/vendor/ruby-signature/lib/rbs/cli.rb +0 -558
  50. data/vendor/ruby-signature/lib/rbs/constant.rb +0 -26
  51. data/vendor/ruby-signature/lib/rbs/constant_table.rb +0 -150
  52. data/vendor/ruby-signature/lib/rbs/definition.rb +0 -170
  53. data/vendor/ruby-signature/lib/rbs/definition_builder.rb +0 -919
  54. data/vendor/ruby-signature/lib/rbs/environment.rb +0 -281
  55. data/vendor/ruby-signature/lib/rbs/environment_loader.rb +0 -136
  56. data/vendor/ruby-signature/lib/rbs/environment_walker.rb +0 -124
  57. data/vendor/ruby-signature/lib/rbs/errors.rb +0 -187
  58. data/vendor/ruby-signature/lib/rbs/location.rb +0 -102
  59. data/vendor/ruby-signature/lib/rbs/method_type.rb +0 -123
  60. data/vendor/ruby-signature/lib/rbs/namespace.rb +0 -91
  61. data/vendor/ruby-signature/lib/rbs/parser.y +0 -1344
  62. data/vendor/ruby-signature/lib/rbs/prototype/rb.rb +0 -553
  63. data/vendor/ruby-signature/lib/rbs/prototype/rbi.rb +0 -587
  64. data/vendor/ruby-signature/lib/rbs/prototype/runtime.rb +0 -381
  65. data/vendor/ruby-signature/lib/rbs/substitution.rb +0 -46
  66. data/vendor/ruby-signature/lib/rbs/test.rb +0 -26
  67. data/vendor/ruby-signature/lib/rbs/test/errors.rb +0 -61
  68. data/vendor/ruby-signature/lib/rbs/test/hook.rb +0 -294
  69. data/vendor/ruby-signature/lib/rbs/test/setup.rb +0 -58
  70. data/vendor/ruby-signature/lib/rbs/test/spy.rb +0 -325
  71. data/vendor/ruby-signature/lib/rbs/test/test_helper.rb +0 -183
  72. data/vendor/ruby-signature/lib/rbs/test/type_check.rb +0 -254
  73. data/vendor/ruby-signature/lib/rbs/type_name.rb +0 -70
  74. data/vendor/ruby-signature/lib/rbs/types.rb +0 -936
  75. data/vendor/ruby-signature/lib/rbs/variance_calculator.rb +0 -138
  76. data/vendor/ruby-signature/lib/rbs/vendorer.rb +0 -47
  77. data/vendor/ruby-signature/lib/rbs/version.rb +0 -3
  78. data/vendor/ruby-signature/lib/rbs/writer.rb +0 -269
  79. data/vendor/ruby-signature/lib/ruby/signature.rb +0 -7
  80. data/vendor/ruby-signature/rbs.gemspec +0 -46
  81. data/vendor/ruby-signature/stdlib/abbrev/abbrev.rbs +0 -60
  82. data/vendor/ruby-signature/stdlib/base64/base64.rbs +0 -71
  83. data/vendor/ruby-signature/stdlib/benchmark/benchmark.rbs +0 -372
  84. data/vendor/ruby-signature/stdlib/builtin/array.rbs +0 -1997
  85. data/vendor/ruby-signature/stdlib/builtin/basic_object.rbs +0 -280
  86. data/vendor/ruby-signature/stdlib/builtin/binding.rbs +0 -177
  87. data/vendor/ruby-signature/stdlib/builtin/builtin.rbs +0 -45
  88. data/vendor/ruby-signature/stdlib/builtin/class.rbs +0 -145
  89. data/vendor/ruby-signature/stdlib/builtin/comparable.rbs +0 -116
  90. data/vendor/ruby-signature/stdlib/builtin/complex.rbs +0 -400
  91. data/vendor/ruby-signature/stdlib/builtin/constants.rbs +0 -37
  92. data/vendor/ruby-signature/stdlib/builtin/data.rbs +0 -5
  93. data/vendor/ruby-signature/stdlib/builtin/deprecated.rbs +0 -2
  94. data/vendor/ruby-signature/stdlib/builtin/dir.rbs +0 -413
  95. data/vendor/ruby-signature/stdlib/builtin/encoding.rbs +0 -607
  96. data/vendor/ruby-signature/stdlib/builtin/enumerable.rbs +0 -404
  97. data/vendor/ruby-signature/stdlib/builtin/enumerator.rbs +0 -260
  98. data/vendor/ruby-signature/stdlib/builtin/errno.rbs +0 -781
  99. data/vendor/ruby-signature/stdlib/builtin/errors.rbs +0 -582
  100. data/vendor/ruby-signature/stdlib/builtin/exception.rbs +0 -194
  101. data/vendor/ruby-signature/stdlib/builtin/false_class.rbs +0 -40
  102. data/vendor/ruby-signature/stdlib/builtin/fiber.rbs +0 -68
  103. data/vendor/ruby-signature/stdlib/builtin/fiber_error.rbs +0 -12
  104. data/vendor/ruby-signature/stdlib/builtin/file.rbs +0 -1076
  105. data/vendor/ruby-signature/stdlib/builtin/file_test.rbs +0 -59
  106. data/vendor/ruby-signature/stdlib/builtin/float.rbs +0 -696
  107. data/vendor/ruby-signature/stdlib/builtin/gc.rbs +0 -243
  108. data/vendor/ruby-signature/stdlib/builtin/hash.rbs +0 -1029
  109. data/vendor/ruby-signature/stdlib/builtin/integer.rbs +0 -707
  110. data/vendor/ruby-signature/stdlib/builtin/io.rbs +0 -683
  111. data/vendor/ruby-signature/stdlib/builtin/kernel.rbs +0 -576
  112. data/vendor/ruby-signature/stdlib/builtin/marshal.rbs +0 -161
  113. data/vendor/ruby-signature/stdlib/builtin/match_data.rbs +0 -271
  114. data/vendor/ruby-signature/stdlib/builtin/math.rbs +0 -369
  115. data/vendor/ruby-signature/stdlib/builtin/method.rbs +0 -185
  116. data/vendor/ruby-signature/stdlib/builtin/module.rbs +0 -1104
  117. data/vendor/ruby-signature/stdlib/builtin/nil_class.rbs +0 -82
  118. data/vendor/ruby-signature/stdlib/builtin/numeric.rbs +0 -409
  119. data/vendor/ruby-signature/stdlib/builtin/object.rbs +0 -824
  120. data/vendor/ruby-signature/stdlib/builtin/proc.rbs +0 -429
  121. data/vendor/ruby-signature/stdlib/builtin/process.rbs +0 -1227
  122. data/vendor/ruby-signature/stdlib/builtin/random.rbs +0 -267
  123. data/vendor/ruby-signature/stdlib/builtin/range.rbs +0 -226
  124. data/vendor/ruby-signature/stdlib/builtin/rational.rbs +0 -424
  125. data/vendor/ruby-signature/stdlib/builtin/rb_config.rbs +0 -57
  126. data/vendor/ruby-signature/stdlib/builtin/regexp.rbs +0 -1083
  127. data/vendor/ruby-signature/stdlib/builtin/ruby_vm.rbs +0 -14
  128. data/vendor/ruby-signature/stdlib/builtin/signal.rbs +0 -55
  129. data/vendor/ruby-signature/stdlib/builtin/string.rbs +0 -1901
  130. data/vendor/ruby-signature/stdlib/builtin/string_io.rbs +0 -284
  131. data/vendor/ruby-signature/stdlib/builtin/struct.rbs +0 -40
  132. data/vendor/ruby-signature/stdlib/builtin/symbol.rbs +0 -228
  133. data/vendor/ruby-signature/stdlib/builtin/thread.rbs +0 -1108
  134. data/vendor/ruby-signature/stdlib/builtin/thread_group.rbs +0 -23
  135. data/vendor/ruby-signature/stdlib/builtin/time.rbs +0 -1047
  136. data/vendor/ruby-signature/stdlib/builtin/trace_point.rbs +0 -290
  137. data/vendor/ruby-signature/stdlib/builtin/true_class.rbs +0 -46
  138. data/vendor/ruby-signature/stdlib/builtin/unbound_method.rbs +0 -153
  139. data/vendor/ruby-signature/stdlib/builtin/warning.rbs +0 -17
  140. data/vendor/ruby-signature/stdlib/coverage/coverage.rbs +0 -62
  141. data/vendor/ruby-signature/stdlib/csv/csv.rbs +0 -773
  142. data/vendor/ruby-signature/stdlib/erb/erb.rbs +0 -392
  143. data/vendor/ruby-signature/stdlib/find/find.rbs +0 -40
  144. data/vendor/ruby-signature/stdlib/ipaddr/ipaddr.rbs +0 -247
  145. data/vendor/ruby-signature/stdlib/json/json.rbs +0 -335
  146. data/vendor/ruby-signature/stdlib/pathname/pathname.rbs +0 -1093
  147. data/vendor/ruby-signature/stdlib/prime/integer-extension.rbs +0 -23
  148. data/vendor/ruby-signature/stdlib/prime/prime.rbs +0 -188
  149. data/vendor/ruby-signature/stdlib/securerandom/securerandom.rbs +0 -9
  150. data/vendor/ruby-signature/stdlib/set/set.rbs +0 -301
  151. data/vendor/ruby-signature/stdlib/tmpdir/tmpdir.rbs +0 -53
@@ -1,37 +0,0 @@
1
- ::ARGF: Object
2
-
3
- ::ARGV: Array[String]
4
-
5
- ::CROSS_COMPILING: NilClass
6
-
7
- ::FALSE: FalseClass
8
-
9
- ::NIL: NilClass
10
-
11
- ::RUBY_COPYRIGHT: String
12
-
13
- ::RUBY_DESCRIPTION: String
14
-
15
- ::RUBY_ENGINE: String
16
-
17
- ::RUBY_ENGINE_VERSION: String
18
-
19
- ::RUBY_PATCHLEVEL: Integer
20
-
21
- ::RUBY_PLATFORM: String
22
-
23
- ::RUBY_RELEASE_DATE: String
24
-
25
- ::RUBY_REVISION: Integer
26
-
27
- ::RUBY_VERSION: String
28
-
29
- ::STDERR: IO
30
-
31
- ::STDIN: IO
32
-
33
- ::STDOUT: IO
34
-
35
- ::TOPLEVEL_BINDING: Binding
36
-
37
- ::TRUE: TrueClass
@@ -1,5 +0,0 @@
1
- # This is a deprecated class, base class for C extensions using Data_Make_Struct
2
- # or Data_Wrap_Struct.
3
- #
4
- class Data < Object
5
- end
@@ -1,2 +0,0 @@
1
- Fixnum: singleton(Integer)
2
- Bignum: singleton(Integer)
@@ -1,413 +0,0 @@
1
- # Objects of class Dir are directory streams representing directories in the
2
- # underlying file system. They provide a variety of ways to list directories and
3
- # their contents. See also File.
4
- #
5
- # The directory used in these examples contains the two regular files
6
- # (`config.h` and `main.rb`), the parent directory (`..`), and the directory
7
- # itself (`.`).
8
- #
9
- class Dir
10
- include Enumerable[String, Dir]
11
-
12
- # Returns a new directory object for the named directory.
13
- #
14
- # The optional *encoding* keyword argument specifies the encoding of the
15
- # directory. If not specified, the filesystem encoding is used.
16
- #
17
- def initialize: (string, ?encoding: Encoding | string | nil) -> void
18
-
19
- # Equivalent to calling `Dir.glob([string,...], 0)`.
20
- #
21
- def self.[]: (*string patterns, ?base: string) ?{ (String path) -> void } -> Array[String]
22
-
23
- # Changes the current working directory of the process to the given string. When
24
- # called without an argument, changes the directory to the value of the
25
- # environment variable `HOME`, or `LOGDIR`. SystemCallError (probably
26
- # Errno::ENOENT) if the target directory does not exist.
27
- #
28
- # If a block is given, it is passed the name of the new current directory, and
29
- # the block is executed with that as the current directory. The original working
30
- # directory is restored when the block exits. The return value of `chdir` is the
31
- # value of the block. `chdir` blocks can be nested, but in a multi-threaded
32
- # program an error will be raised if a thread attempts to open a `chdir` block
33
- # while another thread has one open.
34
- #
35
- # Dir.chdir("/var/spool/mail")
36
- # puts Dir.pwd
37
- # Dir.chdir("/tmp") do
38
- # puts Dir.pwd
39
- # Dir.chdir("/usr") do
40
- # puts Dir.pwd
41
- # end
42
- # puts Dir.pwd
43
- # end
44
- # puts Dir.pwd
45
- #
46
- # *produces:*
47
- #
48
- # /var/spool/mail
49
- # /tmp
50
- # /usr
51
- # /tmp
52
- # /var/spool/mail
53
- #
54
- def self.chdir: (?string) -> void
55
- | [U] (?string) { (String) -> U } -> U
56
-
57
- # Returns an array containing all of the filenames except for "." and ".." in
58
- # the given directory. Will raise a SystemCallError if the named directory
59
- # doesn't exist.
60
- #
61
- # The optional *encoding* keyword argument specifies the encoding of the
62
- # directory. If not specified, the filesystem encoding is used.
63
- #
64
- # Dir.children("testdir") #=> ["config.h", "main.rb"]
65
- #
66
- def self.children: (string dirname, ?encoding: string | Encoding | nil enc) -> Array[String]
67
-
68
- # Changes this process's idea of the file system root. Only a privileged process
69
- # may make this call. Not available on all platforms. On Unix systems, see
70
- # `chroot(2)` for more information.
71
- #
72
- def self.chroot: (string) -> void
73
-
74
- # Deletes the named directory. Raises a subclass of SystemCallError if the
75
- # directory isn't empty.
76
- #
77
- def self.delete: (string) -> void
78
-
79
- # Calls the block once for each entry except for "." and ".." in the named
80
- # directory, passing the filename of each entry as a parameter to the block.
81
- #
82
- # If no block is given, an enumerator is returned instead.
83
- #
84
- # Dir.each_child("testdir") {|x| puts "Got #{x}" }
85
- #
86
- # *produces:*
87
- #
88
- # Got config.h
89
- # Got main.rb
90
- #
91
- def self.each_child: (string dirname, ?encoding: string | Encoding | nil enc) -> Enumerator[String, void]
92
- | (string dirname, ?encoding: string | Encoding | nil enc) { (String filename) -> void } -> void
93
-
94
- # Returns `true` if the named file is an empty directory, `false` if it is not a
95
- # directory or non-empty.
96
- #
97
- def self.empty?: (string path_name) -> bool
98
-
99
- # Returns an array containing all of the filenames in the given directory. Will
100
- # raise a SystemCallError if the named directory doesn't exist.
101
- #
102
- # The optional *encoding* keyword argument specifies the encoding of the
103
- # directory. If not specified, the filesystem encoding is used.
104
- #
105
- # Dir.entries("testdir") #=> [".", "..", "config.h", "main.rb"]
106
- #
107
- def self.entries: (string dirname, ?encoding: Encoding | string | nil enc) -> ::Array[String]
108
-
109
- # Returns `true` if the named file is a directory, `false` otherwise.
110
- #
111
- def self.exist?: (string file) -> bool
112
-
113
- # Deprecated method. Don't use.
114
- #
115
- def self.exists?: (string file) -> bool
116
-
117
- # Calls the block once for each entry in the named directory, passing the
118
- # filename of each entry as a parameter to the block.
119
- #
120
- # If no block is given, an enumerator is returned instead.
121
- #
122
- # Dir.foreach("testdir") {|x| puts "Got #{x}" }
123
- #
124
- # *produces:*
125
- #
126
- # Got .
127
- # Got ..
128
- # Got config.h
129
- # Got main.rb
130
- #
131
- alias self.foreach self.each_child
132
-
133
- # Returns the path to the current working directory of this process as a string.
134
- #
135
- # Dir.chdir("/tmp") #=> 0
136
- # Dir.getwd #=> "/tmp"
137
- # Dir.pwd #=> "/tmp"
138
- #
139
- def self.getwd: () -> String
140
-
141
- # Expands `pattern`, which is a pattern string or an Array of pattern strings,
142
- # and returns an array containing the matching filenames. If a block is given,
143
- # calls the block once for each matching filename, passing the filename as a
144
- # parameter to the block.
145
- #
146
- # The optional `base` keyword argument specifies the base directory for
147
- # interpreting relative pathnames instead of the current working directory. As
148
- # the results are not prefixed with the base directory name in this case, you
149
- # will need to prepend the base directory name if you want real paths.
150
- #
151
- # Note that the pattern is not a regexp, it's closer to a shell glob. See
152
- # File::fnmatch for the meaning of the `flags` parameter. Case sensitivity
153
- # depends on your system (File::FNM_CASEFOLD is ignored), as does the order in
154
- # which the results are returned.
155
- #
156
- # `*`
157
- # : Matches any file. Can be restricted by other values in the glob.
158
- # Equivalent to `/ .* /mx` in regexp.
159
- #
160
- # `*`
161
- # : Matches all files
162
- # `c*`
163
- # : Matches all files beginning with `c`
164
- # `*c`
165
- # : Matches all files ending with `c`
166
- # `*c*`
167
- # : Match all files that have `c` in them (including at the beginning or
168
- # end).
169
- #
170
- #
171
- # Note, this will not match Unix-like hidden files (dotfiles). In order to
172
- # include those in the match results, you must use the File::FNM_DOTMATCH
173
- # flag or something like `"{*,.*}"`.
174
- #
175
- # `**`
176
- # : Matches directories recursively.
177
- #
178
- # `?`
179
- # : Matches any one character. Equivalent to `/.{1}/` in regexp.
180
- #
181
- # `[set]`
182
- # : Matches any one character in `set`. Behaves exactly like character sets
183
- # in Regexp, including set negation (`[^a-z]`).
184
- #
185
- # `{p,q}`
186
- # : Matches either literal `p` or literal `q`. Equivalent to pattern
187
- # alternation in regexp.
188
- #
189
- # Matching literals may be more than one character in length. More than two
190
- # literals may be specified.
191
- #
192
- # ` \\ `
193
- # : Escapes the next metacharacter.
194
- #
195
- # Note that this means you cannot use backslash on windows as part of a
196
- # glob, i.e. `Dir["c:\\foo*"]` will not work, use `Dir["c:/foo*"]` instead.
197
- #
198
- #
199
- # Examples:
200
- #
201
- # Dir["config.?"] #=> ["config.h"]
202
- # Dir.glob("config.?") #=> ["config.h"]
203
- # Dir.glob("*.[a-z][a-z]") #=> ["main.rb"]
204
- # Dir.glob("*.[^r]*") #=> ["config.h"]
205
- # Dir.glob("*.{rb,h}") #=> ["main.rb", "config.h"]
206
- # Dir.glob("*") #=> ["config.h", "main.rb"]
207
- # Dir.glob("*", File::FNM_DOTMATCH) #=> [".", "..", "config.h", "main.rb"]
208
- # Dir.glob(["*.rb", "*.h"]) #=> ["main.rb", "config.h"]
209
- #
210
- # rbfiles = File.join("**", "*.rb")
211
- # Dir.glob(rbfiles) #=> ["main.rb",
212
- # # "lib/song.rb",
213
- # # "lib/song/karaoke.rb"]
214
- #
215
- # Dir.glob(rbfiles, base: "lib") #=> ["song.rb",
216
- # # "song/karaoke.rb"]
217
- #
218
- # libdirs = File.join("**", "lib")
219
- # Dir.glob(libdirs) #=> ["lib"]
220
- #
221
- # librbfiles = File.join("**", "lib", "**", "*.rb")
222
- # Dir.glob(librbfiles) #=> ["lib/song.rb",
223
- # # "lib/song/karaoke.rb"]
224
- #
225
- # librbfiles = File.join("**", "lib", "*.rb")
226
- # Dir.glob(librbfiles) #=> ["lib/song.rb"]
227
- #
228
- def self.glob: (string | ::Array[string] pattern, ?Integer flags, ?base: string) -> ::Array[String]
229
- | (string | ::Array[string] pattern, ?Integer flags, ?base: string) { (String) -> void } -> void
230
-
231
- # Returns the home directory of the current user or the named user if given.
232
- #
233
- def self.home: (?string user) -> String
234
-
235
- # Makes a new directory named by *string*, with permissions specified by the
236
- # optional parameter *anInteger*. The permissions may be modified by the value
237
- # of File::umask, and are ignored on NT. Raises a SystemCallError if the
238
- # directory cannot be created. See also the discussion of permissions in the
239
- # class documentation for File.
240
- #
241
- # Dir.mkdir(File.join(Dir.home, ".foo"), 0700) #=> 0
242
- #
243
- def self.mkdir: (string, ?Integer permissions) -> void
244
-
245
- # The optional *encoding* keyword argument specifies the encoding of the
246
- # directory. If not specified, the filesystem encoding is used.
247
- #
248
- # With no block, `open` is a synonym for Dir::new. If a block is present, it is
249
- # passed *aDir* as a parameter. The directory is closed at the end of the block,
250
- # and Dir::open returns the value of the block.
251
- #
252
- def self.open: (string, ?encoding: Encoding | string | nil) -> Dir
253
- | [U] (string, ?encoding: Encoding | string | nil) { (Dir) -> U } -> U
254
-
255
- # Returns the path to the current working directory of this process as a string.
256
- #
257
- # Dir.chdir("/tmp") #=> 0
258
- # Dir.getwd #=> "/tmp"
259
- # Dir.pwd #=> "/tmp"
260
- #
261
- def self.pwd: () -> String
262
-
263
- # Deletes the named directory. Raises a subclass of SystemCallError if the
264
- # directory isn't empty.
265
- #
266
- alias self.rmdir self.delete
267
-
268
- # Deletes the named directory. Raises a subclass of SystemCallError if the
269
- # directory isn't empty.
270
- #
271
- alias self.unlink self.delete
272
-
273
- public
274
-
275
- # Returns an array containing all of the filenames except for "." and ".." in
276
- # this directory.
277
- #
278
- # d = Dir.new("testdir")
279
- # d.children #=> ["config.h", "main.rb"]
280
- #
281
- def children: () -> Array[String]
282
-
283
- # Closes the directory stream. Calling this method on closed Dir object is
284
- # ignored since Ruby 2.3.
285
- #
286
- # d = Dir.new("testdir")
287
- # d.close #=> nil
288
- #
289
- def close: () -> void
290
-
291
- # Calls the block once for each entry in this directory, passing the filename of
292
- # each entry as a parameter to the block.
293
- #
294
- # If no block is given, an enumerator is returned instead.
295
- #
296
- # d = Dir.new("testdir")
297
- # d.each {|x| puts "Got #{x}" }
298
- #
299
- # *produces:*
300
- #
301
- # Got .
302
- # Got ..
303
- # Got config.h
304
- # Got main.rb
305
- #
306
- def each: () { (String) -> void } -> self
307
- | () -> ::Enumerator[String, self]
308
-
309
- # Calls the block once for each entry except for "." and ".." in this directory,
310
- # passing the filename of each entry as a parameter to the block.
311
- #
312
- # If no block is given, an enumerator is returned instead.
313
- #
314
- # d = Dir.new("testdir")
315
- # d.each_child {|x| puts "Got #{x}" }
316
- #
317
- # *produces:*
318
- #
319
- # Got config.h
320
- # Got main.rb
321
- #
322
- def each_child: () { (String) -> void } -> self
323
- | () -> ::Enumerator[String, self]
324
-
325
- # Returns the file descriptor used in *dir*.
326
- #
327
- # d = Dir.new("..")
328
- # d.fileno #=> 8
329
- #
330
- # This method uses dirfd() function defined by POSIX 2008. NotImplementedError
331
- # is raised on other platforms, such as Windows, which doesn't provide the
332
- # function.
333
- #
334
- def fileno: () -> Integer
335
-
336
- # Return a string describing this Dir object.
337
- #
338
- def inspect: () -> String
339
-
340
- # Returns the path parameter passed to *dir*'s constructor.
341
- #
342
- # d = Dir.new("..")
343
- # d.path #=> ".."
344
- #
345
- def path: () -> String?
346
-
347
- # Returns the current position in *dir*. See also Dir#seek.
348
- #
349
- # d = Dir.new("testdir")
350
- # d.tell #=> 0
351
- # d.read #=> "."
352
- # d.tell #=> 12
353
- #
354
- def pos: () -> Integer
355
-
356
- # Synonym for Dir#seek, but returns the position parameter.
357
- #
358
- # d = Dir.new("testdir") #=> #<Dir:0x401b3c40>
359
- # d.read #=> "."
360
- # i = d.pos #=> 12
361
- # d.read #=> ".."
362
- # d.pos = i #=> 12
363
- # d.read #=> ".."
364
- #
365
- def pos=: (Integer pos) -> Integer
366
-
367
- # Reads the next entry from *dir* and returns it as a string. Returns `nil` at
368
- # the end of the stream.
369
- #
370
- # d = Dir.new("testdir")
371
- # d.read #=> "."
372
- # d.read #=> ".."
373
- # d.read #=> "config.h"
374
- #
375
- def read: () -> String?
376
-
377
- # Repositions *dir* to the first entry.
378
- #
379
- # d = Dir.new("testdir")
380
- # d.read #=> "."
381
- # d.rewind #=> #<Dir:0x401b3fb0>
382
- # d.read #=> "."
383
- #
384
- def rewind: () -> self
385
-
386
- # Seeks to a particular location in *dir*. *integer* must be a value returned by
387
- # Dir#tell.
388
- #
389
- # d = Dir.new("testdir") #=> #<Dir:0x401b3c40>
390
- # d.read #=> "."
391
- # i = d.tell #=> 12
392
- # d.read #=> ".."
393
- # d.seek(i) #=> #<Dir:0x401b3c40>
394
- # d.read #=> ".."
395
- #
396
- def seek: (Integer) -> self
397
-
398
- # Returns the current position in *dir*. See also Dir#seek.
399
- #
400
- # d = Dir.new("testdir")
401
- # d.tell #=> 0
402
- # d.read #=> "."
403
- # d.tell #=> 12
404
- #
405
- def tell: () -> Integer
406
-
407
- # Returns the path parameter passed to *dir*'s constructor.
408
- #
409
- # d = Dir.new("..")
410
- # d.path #=> ".."
411
- #
412
- alias to_path path
413
- end