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,280 +0,0 @@
1
- # BasicObject is the parent class of all classes in Ruby. It's an explicit
2
- # blank class.
3
- #
4
- # BasicObject can be used for creating object hierarchies independent of Ruby's
5
- # object hierarchy, proxy objects like the Delegator class, or other uses where
6
- # namespace pollution from Ruby's methods and classes must be avoided.
7
- #
8
- # To avoid polluting BasicObject for other users an appropriately named subclass
9
- # of BasicObject should be created instead of directly modifying BasicObject:
10
- #
11
- # class MyObjectSystem < BasicObject
12
- # end
13
- #
14
- # BasicObject does not include Kernel (for methods like `puts`) and BasicObject
15
- # is outside of the namespace of the standard library so common classes will not
16
- # be found without using a full class path.
17
- #
18
- # A variety of strategies can be used to provide useful portions of the standard
19
- # library to subclasses of BasicObject. A subclass could `include Kernel` to
20
- # obtain `puts`, `exit`, etc. A custom Kernel-like module could be created and
21
- # included or delegation can be used via #method_missing:
22
- #
23
- # class MyObjectSystem < BasicObject
24
- # DELEGATE = [:puts, :p]
25
- #
26
- # def method_missing(name, *args, &block)
27
- # super unless DELEGATE.include? name
28
- # ::Kernel.send(name, *args, &block)
29
- # end
30
- #
31
- # def respond_to_missing?(name, include_private = false)
32
- # DELEGATE.include?(name) or super
33
- # end
34
- # end
35
- #
36
- # Access to classes and modules from the Ruby standard library can be obtained
37
- # in a BasicObject subclass by referencing the desired constant from the root
38
- # like `::File` or `::Enumerator`. Like #method_missing, #const_missing can be
39
- # used to delegate constant lookup to `Object`:
40
- #
41
- # class MyObjectSystem < BasicObject
42
- # def self.const_missing(name)
43
- # ::Object.const_get(name)
44
- # end
45
- # end
46
- #
47
- class BasicObject
48
- # Boolean negate.
49
- #
50
- def !: () -> bool
51
-
52
- # Returns true if two objects are not-equal, otherwise false.
53
- #
54
- def !=: (untyped other) -> bool
55
-
56
- # Equality --- At the `Object` level, `==` returns `true` only if `obj` and
57
- # `other` are the same object. Typically, this method is overridden in
58
- # descendant classes to provide class-specific meaning.
59
- #
60
- # Unlike `==`, the `equal?` method should never be overridden by subclasses as
61
- # it is used to determine object identity (that is, `a.equal?(b)` if and only if
62
- # `a` is the same object as `b`):
63
- #
64
- # obj = "a"
65
- # other = obj.dup
66
- #
67
- # obj == other #=> true
68
- # obj.equal? other #=> false
69
- # obj.equal? obj #=> true
70
- #
71
- # The `eql?` method returns `true` if `obj` and `other` refer to the same hash
72
- # key. This is used by Hash to test members for equality. For objects of class
73
- # `Object`, `eql?` is synonymous with `==`. Subclasses normally continue this
74
- # tradition by aliasing `eql?` to their overridden `==` method, but there are
75
- # exceptions. `Numeric` types, for example, perform type conversion across
76
- # `==`, but not across `eql?`, so:
77
- #
78
- # 1 == 1.0 #=> true
79
- # 1.eql? 1.0 #=> false
80
- #
81
- def ==: (untyped other) -> bool
82
-
83
- # Returns an integer identifier for `obj`.
84
- #
85
- # The same number will be returned on all calls to `object_id` for a given
86
- # object, and no two active objects will share an id.
87
- #
88
- # Note: that some objects of builtin classes are reused for optimization. This
89
- # is the case for immediate values and frozen string literals.
90
- #
91
- # Immediate values are not passed by reference but are passed by value: `nil`,
92
- # `true`, `false`, Fixnums, Symbols, and some Floats.
93
- #
94
- # Object.new.object_id == Object.new.object_id # => false
95
- # (21 * 2).object_id == (21 * 2).object_id # => true
96
- # "hello".object_id == "hello".object_id # => false
97
- # "hi".freeze.object_id == "hi".freeze.object_id # => true
98
- #
99
- def __id__: () -> Integer
100
-
101
- # Invokes the method identified by *symbol*, passing it any arguments specified.
102
- # You can use `__send__` if the name `send` clashes with an existing method in
103
- # *obj*. When the method is identified by a string, the string is converted to a
104
- # symbol.
105
- #
106
- # class Klass
107
- # def hello(*args)
108
- # "Hello " + args.join(' ')
109
- # end
110
- # end
111
- # k = Klass.new
112
- # k.send :hello, "gentle", "readers" #=> "Hello gentle readers"
113
- #
114
- def __send__: (String | Symbol arg0, *untyped args) -> untyped
115
-
116
- # Equality --- At the `Object` level, `==` returns `true` only if `obj` and
117
- # `other` are the same object. Typically, this method is overridden in
118
- # descendant classes to provide class-specific meaning.
119
- #
120
- # Unlike `==`, the `equal?` method should never be overridden by subclasses as
121
- # it is used to determine object identity (that is, `a.equal?(b)` if and only if
122
- # `a` is the same object as `b`):
123
- #
124
- # obj = "a"
125
- # other = obj.dup
126
- #
127
- # obj == other #=> true
128
- # obj.equal? other #=> false
129
- # obj.equal? obj #=> true
130
- #
131
- # The `eql?` method returns `true` if `obj` and `other` refer to the same hash
132
- # key. This is used by Hash to test members for equality. For objects of class
133
- # `Object`, `eql?` is synonymous with `==`. Subclasses normally continue this
134
- # tradition by aliasing `eql?` to their overridden `==` method, but there are
135
- # exceptions. `Numeric` types, for example, perform type conversion across
136
- # `==`, but not across `eql?`, so:
137
- #
138
- # 1 == 1.0 #=> true
139
- # 1.eql? 1.0 #=> false
140
- #
141
- def equal?: (untyped other) -> bool
142
-
143
- # Evaluates a string containing Ruby source code, or the given block, within the
144
- # context of the receiver (*obj*). In order to set the context, the variable
145
- # `self` is set to *obj* while the code is executing, giving the code access to
146
- # *obj*'s instance variables and private methods.
147
- #
148
- # When `instance_eval` is given a block, *obj* is also passed in as the block's
149
- # only argument.
150
- #
151
- # When `instance_eval` is given a `String`, the optional second and third
152
- # parameters supply a filename and starting line number that are used when
153
- # reporting compilation errors.
154
- #
155
- # class KlassWithSecret
156
- # def initialize
157
- # @secret = 99
158
- # end
159
- # private
160
- # def the_secret
161
- # "Ssssh! The secret is #{@secret}."
162
- # end
163
- # end
164
- # k = KlassWithSecret.new
165
- # k.instance_eval { @secret } #=> 99
166
- # k.instance_eval { the_secret } #=> "Ssssh! The secret is 99."
167
- # k.instance_eval {|obj| obj == self } #=> true
168
- #
169
- def instance_eval: (String, ?String filename, ?Integer lineno) -> untyped
170
- | [U] () { (self) -> U } -> U
171
-
172
- # Executes the given block within the context of the receiver (*obj*). In order
173
- # to set the context, the variable `self` is set to *obj* while the code is
174
- # executing, giving the code access to *obj*'s instance variables. Arguments
175
- # are passed as block parameters.
176
- #
177
- # class KlassWithSecret
178
- # def initialize
179
- # @secret = 99
180
- # end
181
- # end
182
- # k = KlassWithSecret.new
183
- # k.instance_exec(5) {|x| @secret+x } #=> 104
184
- #
185
- def instance_exec: [U, V] (*V args) { (*V args) -> U } -> U
186
-
187
- # Not documented
188
- #
189
- def initialize: () -> void
190
-
191
- private
192
-
193
- # Invoked by Ruby when *obj* is sent a message it cannot handle. *symbol* is the
194
- # symbol for the method called, and *args* are any arguments that were passed to
195
- # it. By default, the interpreter raises an error when this method is called.
196
- # However, it is possible to override the method to provide more dynamic
197
- # behavior. If it is decided that a particular method should not be handled,
198
- # then *super* should be called, so that ancestors can pick up the missing
199
- # method. The example below creates a class `Roman`, which responds to methods
200
- # with names consisting of roman numerals, returning the corresponding integer
201
- # values.
202
- #
203
- # class Roman
204
- # def roman_to_int(str)
205
- # # ...
206
- # end
207
- # def method_missing(methId)
208
- # str = methId.id2name
209
- # roman_to_int(str)
210
- # end
211
- # end
212
- #
213
- # r = Roman.new
214
- # r.iv #=> 4
215
- # r.xxiii #=> 23
216
- # r.mm #=> 2000
217
- #
218
- def method_missing: (Symbol, *untyped) -> untyped
219
-
220
- # Invoked as a callback whenever a singleton method is added to the receiver.
221
- #
222
- # module Chatty
223
- # def Chatty.singleton_method_added(id)
224
- # puts "Adding #{id.id2name}"
225
- # end
226
- # def self.one() end
227
- # def two() end
228
- # def Chatty.three() end
229
- # end
230
- #
231
- # *produces:*
232
- #
233
- # Adding singleton_method_added
234
- # Adding one
235
- # Adding three
236
- #
237
- def singleton_method_added: (Symbol) -> void
238
-
239
- # Invoked as a callback whenever a singleton method is removed from the
240
- # receiver.
241
- #
242
- # module Chatty
243
- # def Chatty.singleton_method_removed(id)
244
- # puts "Removing #{id.id2name}"
245
- # end
246
- # def self.one() end
247
- # def two() end
248
- # def Chatty.three() end
249
- # class << self
250
- # remove_method :three
251
- # remove_method :one
252
- # end
253
- # end
254
- #
255
- # *produces:*
256
- #
257
- # Removing three
258
- # Removing one
259
- #
260
- def singleton_method_removed: (Symbol) -> void
261
-
262
- # Invoked as a callback whenever a singleton method is undefined in the
263
- # receiver.
264
- #
265
- # module Chatty
266
- # def Chatty.singleton_method_undefined(id)
267
- # puts "Undefining #{id.id2name}"
268
- # end
269
- # def Chatty.one() end
270
- # class << self
271
- # undef_method(:one)
272
- # end
273
- # end
274
- #
275
- # *produces:*
276
- #
277
- # Undefining one
278
- #
279
- def singleton_method_undefined: (Symbol) -> void
280
- end
@@ -1,177 +0,0 @@
1
- # Objects of class Binding encapsulate the execution context at some particular
2
- # place in the code and retain this context for future use. The variables,
3
- # methods, value of `self`, and possibly an iterator block that can be accessed
4
- # in this context are all retained. Binding objects can be created using
5
- # Kernel#binding, and are made available to the callback of
6
- # Kernel#set_trace_func and instances of TracePoint.
7
- #
8
- # These binding objects can be passed as the second argument of the Kernel#eval
9
- # method, establishing an environment for the evaluation.
10
- #
11
- # class Demo
12
- # def initialize(n)
13
- # @secret = n
14
- # end
15
- # def get_binding
16
- # binding
17
- # end
18
- # end
19
- #
20
- # k1 = Demo.new(99)
21
- # b1 = k1.get_binding
22
- # k2 = Demo.new(-3)
23
- # b2 = k2.get_binding
24
- #
25
- # eval("@secret", b1) #=> 99
26
- # eval("@secret", b2) #=> -3
27
- # eval("@secret") #=> nil
28
- #
29
- # Binding objects have no class-specific methods.
30
- #
31
- class Binding
32
- public
33
-
34
- # Evaluates the Ruby expression(s) in *string*, in the *binding*'s context. If
35
- # the optional *filename* and *lineno* parameters are present, they will be used
36
- # when reporting syntax errors.
37
- #
38
- # def get_binding(param)
39
- # binding
40
- # end
41
- # b = get_binding("hello")
42
- # b.eval("param") #=> "hello"
43
- #
44
- def eval: (String arg0, ?String filename, ?Integer lineno) -> untyped
45
-
46
- # Opens an IRB session where `binding.irb` is called which allows for
47
- # interactive debugging. You can call any methods or variables available in the
48
- # current scope, and mutate state if you need to.
49
- #
50
- # Given a Ruby file called `potato.rb` containing the following code:
51
- #
52
- # class Potato
53
- # def initialize
54
- # @cooked = false
55
- # binding.irb
56
- # puts "Cooked potato: #{@cooked}"
57
- # end
58
- # end
59
- #
60
- # Potato.new
61
- #
62
- # Running `ruby potato.rb` will open an IRB session where `binding.irb` is
63
- # called, and you will see the following:
64
- #
65
- # $ ruby potato.rb
66
- #
67
- # From: potato.rb @ line 4 :
68
- #
69
- # 1: class Potato
70
- # 2: def initialize
71
- # 3: @cooked = false
72
- # => 4: binding.irb
73
- # 5: puts "Cooked potato: #{@cooked}"
74
- # 6: end
75
- # 7: end
76
- # 8:
77
- # 9: Potato.new
78
- #
79
- # irb(#<Potato:0x00007feea1916670>):001:0>
80
- #
81
- # You can type any valid Ruby code and it will be evaluated in the current
82
- # context. This allows you to debug without having to run your code repeatedly:
83
- #
84
- # irb(#<Potato:0x00007feea1916670>):001:0> @cooked
85
- # => false
86
- # irb(#<Potato:0x00007feea1916670>):002:0> self.class
87
- # => Potato
88
- # irb(#<Potato:0x00007feea1916670>):003:0> caller.first
89
- # => ".../2.5.1/lib/ruby/2.5.0/irb/workspace.rb:85:in `eval'"
90
- # irb(#<Potato:0x00007feea1916670>):004:0> @cooked = true
91
- # => true
92
- #
93
- # You can exit the IRB session with the `exit` command. Note that exiting will
94
- # resume execution where `binding.irb` had paused it, as you can see from the
95
- # output printed to standard output in this example:
96
- #
97
- # irb(#<Potato:0x00007feea1916670>):005:0> exit
98
- # Cooked potato: true
99
- #
100
- # See IRB@IRB+Usage for more information.
101
- #
102
- def irb: () -> void
103
-
104
- # Returns `true` if a local variable `symbol` exists.
105
- #
106
- # def foo
107
- # a = 1
108
- # binding.local_variable_defined?(:a) #=> true
109
- # binding.local_variable_defined?(:b) #=> false
110
- # end
111
- #
112
- # This method is the short version of the following code:
113
- #
114
- # binding.eval("defined?(#{symbol}) == 'local-variable'")
115
- #
116
- def local_variable_defined?: (String | Symbol symbol) -> bool
117
-
118
- # Returns the value of the local variable `symbol`.
119
- #
120
- # def foo
121
- # a = 1
122
- # binding.local_variable_get(:a) #=> 1
123
- # binding.local_variable_get(:b) #=> NameError
124
- # end
125
- #
126
- # This method is the short version of the following code:
127
- #
128
- # binding.eval("#{symbol}")
129
- #
130
- def local_variable_get: (String | Symbol symbol) -> untyped
131
-
132
- # Set local variable named `symbol` as `obj`.
133
- #
134
- # def foo
135
- # a = 1
136
- # bind = binding
137
- # bind.local_variable_set(:a, 2) # set existing local variable `a'
138
- # bind.local_variable_set(:b, 3) # create new local variable `b'
139
- # # `b' exists only in binding
140
- #
141
- # p bind.local_variable_get(:a) #=> 2
142
- # p bind.local_variable_get(:b) #=> 3
143
- # p a #=> 2
144
- # p b #=> NameError
145
- # end
146
- #
147
- # This method behaves similarly to the following code:
148
- #
149
- # binding.eval("#{symbol} = #{obj}")
150
- #
151
- # if `obj` can be dumped in Ruby code.
152
- #
153
- def local_variable_set: [U] (String | Symbol symbol, U obj) -> U
154
-
155
- # Returns the names of the binding's local variables as symbols.
156
- #
157
- # def foo
158
- # a = 1
159
- # 2.times do |n|
160
- # binding.local_variables #=> [:a, :n]
161
- # end
162
- # end
163
- #
164
- # This method is the short version of the following code:
165
- #
166
- # binding.eval("local_variables")
167
- #
168
- def local_variables: () -> Array[Symbol]
169
-
170
- # Returns the bound receiver of the binding object.
171
- #
172
- def receiver: () -> untyped
173
-
174
- # Returns the Ruby source filename and line number of the binding object.
175
- #
176
- def source_location: () -> [ String, Integer ]
177
- end