steep 0.16.0 → 0.16.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +0 -3
  3. data/CHANGELOG.md +6 -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/project/file.rb +1 -1
  9. data/lib/steep/project/hover_content.rb +1 -1
  10. data/lib/steep/server/code_worker.rb +1 -1
  11. data/lib/steep/server/signature_worker.rb +4 -4
  12. data/lib/steep/type_construction.rb +10 -16
  13. data/lib/steep/type_inference/constant_env.rb +2 -10
  14. data/lib/steep/type_inference/context.rb +1 -0
  15. data/lib/steep/version.rb +1 -1
  16. data/steep.gemspec +1 -5
  17. metadata +17 -135
  18. data/exe/rbs +0 -3
  19. data/vendor/ruby-signature/.github/workflows/ruby.yml +0 -27
  20. data/vendor/ruby-signature/.gitignore +0 -12
  21. data/vendor/ruby-signature/.rubocop.yml +0 -15
  22. data/vendor/ruby-signature/BSDL +0 -22
  23. data/vendor/ruby-signature/COPYING +0 -56
  24. data/vendor/ruby-signature/Gemfile +0 -6
  25. data/vendor/ruby-signature/README.md +0 -93
  26. data/vendor/ruby-signature/Rakefile +0 -142
  27. data/vendor/ruby-signature/bin/annotate-with-rdoc +0 -157
  28. data/vendor/ruby-signature/bin/console +0 -14
  29. data/vendor/ruby-signature/bin/query-rdoc +0 -103
  30. data/vendor/ruby-signature/bin/setup +0 -10
  31. data/vendor/ruby-signature/bin/sort +0 -89
  32. data/vendor/ruby-signature/bin/test_runner.rb +0 -16
  33. data/vendor/ruby-signature/docs/CONTRIBUTING.md +0 -97
  34. data/vendor/ruby-signature/docs/sigs.md +0 -148
  35. data/vendor/ruby-signature/docs/stdlib.md +0 -152
  36. data/vendor/ruby-signature/docs/syntax.md +0 -528
  37. data/vendor/ruby-signature/exe/rbs +0 -7
  38. data/vendor/ruby-signature/lib/rbs.rb +0 -64
  39. data/vendor/ruby-signature/lib/rbs/ast/annotation.rb +0 -27
  40. data/vendor/ruby-signature/lib/rbs/ast/comment.rb +0 -27
  41. data/vendor/ruby-signature/lib/rbs/ast/declarations.rb +0 -395
  42. data/vendor/ruby-signature/lib/rbs/ast/members.rb +0 -362
  43. data/vendor/ruby-signature/lib/rbs/buffer.rb +0 -50
  44. data/vendor/ruby-signature/lib/rbs/builtin_names.rb +0 -55
  45. data/vendor/ruby-signature/lib/rbs/cli.rb +0 -558
  46. data/vendor/ruby-signature/lib/rbs/constant.rb +0 -26
  47. data/vendor/ruby-signature/lib/rbs/constant_table.rb +0 -150
  48. data/vendor/ruby-signature/lib/rbs/definition.rb +0 -170
  49. data/vendor/ruby-signature/lib/rbs/definition_builder.rb +0 -919
  50. data/vendor/ruby-signature/lib/rbs/environment.rb +0 -281
  51. data/vendor/ruby-signature/lib/rbs/environment_loader.rb +0 -136
  52. data/vendor/ruby-signature/lib/rbs/environment_walker.rb +0 -124
  53. data/vendor/ruby-signature/lib/rbs/errors.rb +0 -187
  54. data/vendor/ruby-signature/lib/rbs/location.rb +0 -102
  55. data/vendor/ruby-signature/lib/rbs/method_type.rb +0 -123
  56. data/vendor/ruby-signature/lib/rbs/namespace.rb +0 -91
  57. data/vendor/ruby-signature/lib/rbs/parser.y +0 -1344
  58. data/vendor/ruby-signature/lib/rbs/prototype/rb.rb +0 -553
  59. data/vendor/ruby-signature/lib/rbs/prototype/rbi.rb +0 -587
  60. data/vendor/ruby-signature/lib/rbs/prototype/runtime.rb +0 -381
  61. data/vendor/ruby-signature/lib/rbs/substitution.rb +0 -46
  62. data/vendor/ruby-signature/lib/rbs/test.rb +0 -26
  63. data/vendor/ruby-signature/lib/rbs/test/errors.rb +0 -61
  64. data/vendor/ruby-signature/lib/rbs/test/hook.rb +0 -294
  65. data/vendor/ruby-signature/lib/rbs/test/setup.rb +0 -58
  66. data/vendor/ruby-signature/lib/rbs/test/spy.rb +0 -325
  67. data/vendor/ruby-signature/lib/rbs/test/test_helper.rb +0 -183
  68. data/vendor/ruby-signature/lib/rbs/test/type_check.rb +0 -254
  69. data/vendor/ruby-signature/lib/rbs/type_name.rb +0 -70
  70. data/vendor/ruby-signature/lib/rbs/types.rb +0 -936
  71. data/vendor/ruby-signature/lib/rbs/variance_calculator.rb +0 -138
  72. data/vendor/ruby-signature/lib/rbs/vendorer.rb +0 -47
  73. data/vendor/ruby-signature/lib/rbs/version.rb +0 -3
  74. data/vendor/ruby-signature/lib/rbs/writer.rb +0 -269
  75. data/vendor/ruby-signature/lib/ruby/signature.rb +0 -7
  76. data/vendor/ruby-signature/rbs.gemspec +0 -46
  77. data/vendor/ruby-signature/stdlib/abbrev/abbrev.rbs +0 -60
  78. data/vendor/ruby-signature/stdlib/base64/base64.rbs +0 -71
  79. data/vendor/ruby-signature/stdlib/benchmark/benchmark.rbs +0 -372
  80. data/vendor/ruby-signature/stdlib/builtin/array.rbs +0 -1997
  81. data/vendor/ruby-signature/stdlib/builtin/basic_object.rbs +0 -280
  82. data/vendor/ruby-signature/stdlib/builtin/binding.rbs +0 -177
  83. data/vendor/ruby-signature/stdlib/builtin/builtin.rbs +0 -45
  84. data/vendor/ruby-signature/stdlib/builtin/class.rbs +0 -145
  85. data/vendor/ruby-signature/stdlib/builtin/comparable.rbs +0 -116
  86. data/vendor/ruby-signature/stdlib/builtin/complex.rbs +0 -400
  87. data/vendor/ruby-signature/stdlib/builtin/constants.rbs +0 -37
  88. data/vendor/ruby-signature/stdlib/builtin/data.rbs +0 -5
  89. data/vendor/ruby-signature/stdlib/builtin/deprecated.rbs +0 -2
  90. data/vendor/ruby-signature/stdlib/builtin/dir.rbs +0 -413
  91. data/vendor/ruby-signature/stdlib/builtin/encoding.rbs +0 -607
  92. data/vendor/ruby-signature/stdlib/builtin/enumerable.rbs +0 -404
  93. data/vendor/ruby-signature/stdlib/builtin/enumerator.rbs +0 -260
  94. data/vendor/ruby-signature/stdlib/builtin/errno.rbs +0 -781
  95. data/vendor/ruby-signature/stdlib/builtin/errors.rbs +0 -582
  96. data/vendor/ruby-signature/stdlib/builtin/exception.rbs +0 -194
  97. data/vendor/ruby-signature/stdlib/builtin/false_class.rbs +0 -40
  98. data/vendor/ruby-signature/stdlib/builtin/fiber.rbs +0 -68
  99. data/vendor/ruby-signature/stdlib/builtin/fiber_error.rbs +0 -12
  100. data/vendor/ruby-signature/stdlib/builtin/file.rbs +0 -1076
  101. data/vendor/ruby-signature/stdlib/builtin/file_test.rbs +0 -59
  102. data/vendor/ruby-signature/stdlib/builtin/float.rbs +0 -696
  103. data/vendor/ruby-signature/stdlib/builtin/gc.rbs +0 -243
  104. data/vendor/ruby-signature/stdlib/builtin/hash.rbs +0 -1029
  105. data/vendor/ruby-signature/stdlib/builtin/integer.rbs +0 -707
  106. data/vendor/ruby-signature/stdlib/builtin/io.rbs +0 -683
  107. data/vendor/ruby-signature/stdlib/builtin/kernel.rbs +0 -576
  108. data/vendor/ruby-signature/stdlib/builtin/marshal.rbs +0 -161
  109. data/vendor/ruby-signature/stdlib/builtin/match_data.rbs +0 -271
  110. data/vendor/ruby-signature/stdlib/builtin/math.rbs +0 -369
  111. data/vendor/ruby-signature/stdlib/builtin/method.rbs +0 -185
  112. data/vendor/ruby-signature/stdlib/builtin/module.rbs +0 -1104
  113. data/vendor/ruby-signature/stdlib/builtin/nil_class.rbs +0 -82
  114. data/vendor/ruby-signature/stdlib/builtin/numeric.rbs +0 -409
  115. data/vendor/ruby-signature/stdlib/builtin/object.rbs +0 -824
  116. data/vendor/ruby-signature/stdlib/builtin/proc.rbs +0 -429
  117. data/vendor/ruby-signature/stdlib/builtin/process.rbs +0 -1227
  118. data/vendor/ruby-signature/stdlib/builtin/random.rbs +0 -267
  119. data/vendor/ruby-signature/stdlib/builtin/range.rbs +0 -226
  120. data/vendor/ruby-signature/stdlib/builtin/rational.rbs +0 -424
  121. data/vendor/ruby-signature/stdlib/builtin/rb_config.rbs +0 -57
  122. data/vendor/ruby-signature/stdlib/builtin/regexp.rbs +0 -1083
  123. data/vendor/ruby-signature/stdlib/builtin/ruby_vm.rbs +0 -14
  124. data/vendor/ruby-signature/stdlib/builtin/signal.rbs +0 -55
  125. data/vendor/ruby-signature/stdlib/builtin/string.rbs +0 -1901
  126. data/vendor/ruby-signature/stdlib/builtin/string_io.rbs +0 -284
  127. data/vendor/ruby-signature/stdlib/builtin/struct.rbs +0 -40
  128. data/vendor/ruby-signature/stdlib/builtin/symbol.rbs +0 -228
  129. data/vendor/ruby-signature/stdlib/builtin/thread.rbs +0 -1108
  130. data/vendor/ruby-signature/stdlib/builtin/thread_group.rbs +0 -23
  131. data/vendor/ruby-signature/stdlib/builtin/time.rbs +0 -1047
  132. data/vendor/ruby-signature/stdlib/builtin/trace_point.rbs +0 -290
  133. data/vendor/ruby-signature/stdlib/builtin/true_class.rbs +0 -46
  134. data/vendor/ruby-signature/stdlib/builtin/unbound_method.rbs +0 -153
  135. data/vendor/ruby-signature/stdlib/builtin/warning.rbs +0 -17
  136. data/vendor/ruby-signature/stdlib/coverage/coverage.rbs +0 -62
  137. data/vendor/ruby-signature/stdlib/csv/csv.rbs +0 -773
  138. data/vendor/ruby-signature/stdlib/erb/erb.rbs +0 -392
  139. data/vendor/ruby-signature/stdlib/find/find.rbs +0 -40
  140. data/vendor/ruby-signature/stdlib/ipaddr/ipaddr.rbs +0 -247
  141. data/vendor/ruby-signature/stdlib/json/json.rbs +0 -335
  142. data/vendor/ruby-signature/stdlib/pathname/pathname.rbs +0 -1093
  143. data/vendor/ruby-signature/stdlib/prime/integer-extension.rbs +0 -23
  144. data/vendor/ruby-signature/stdlib/prime/prime.rbs +0 -188
  145. data/vendor/ruby-signature/stdlib/securerandom/securerandom.rbs +0 -9
  146. data/vendor/ruby-signature/stdlib/set/set.rbs +0 -301
  147. 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