steep 0.13.0 → 0.16.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (214) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +0 -3
  3. data/CHANGELOG.md +28 -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 +33 -1
  9. data/lib/steep/annotation_parser.rb +4 -4
  10. data/lib/steep/ast/buffer.rb +11 -7
  11. data/lib/steep/ast/builtin.rb +8 -0
  12. data/lib/steep/ast/types/factory.rb +124 -89
  13. data/lib/steep/cli.rb +16 -1
  14. data/lib/steep/drivers/annotations.rb +1 -1
  15. data/lib/steep/drivers/check.rb +20 -4
  16. data/lib/steep/drivers/init.rb +5 -5
  17. data/lib/steep/drivers/langserver.rb +13 -287
  18. data/lib/steep/drivers/utils/driver_helper.rb +1 -1
  19. data/lib/steep/drivers/vendor.rb +2 -2
  20. data/lib/steep/drivers/watch.rb +97 -85
  21. data/lib/steep/drivers/worker.rb +51 -0
  22. data/lib/steep/project.rb +9 -5
  23. data/lib/steep/project/completion_provider.rb +298 -0
  24. data/lib/steep/project/dsl.rb +14 -0
  25. data/lib/steep/project/file.rb +54 -47
  26. data/lib/steep/project/hover_content.rb +17 -8
  27. data/lib/steep/project/options.rb +25 -3
  28. data/lib/steep/project/target.rb +40 -24
  29. data/lib/steep/server/base_worker.rb +56 -0
  30. data/lib/steep/server/code_worker.rb +151 -0
  31. data/lib/steep/server/interaction_worker.rb +281 -0
  32. data/lib/steep/server/master.rb +196 -0
  33. data/lib/steep/server/signature_worker.rb +148 -0
  34. data/lib/steep/server/utils.rb +36 -0
  35. data/lib/steep/server/worker_process.rb +62 -0
  36. data/lib/steep/signature/errors.rb +1 -1
  37. data/lib/steep/signature/validator.rb +13 -13
  38. data/lib/steep/source.rb +1 -1
  39. data/lib/steep/type_construction.rb +1004 -727
  40. data/lib/steep/type_inference/constant_env.rb +3 -11
  41. data/lib/steep/type_inference/context.rb +8 -3
  42. data/lib/steep/type_inference/context_array.rb +111 -0
  43. data/lib/steep/type_inference/local_variable_type_env.rb +226 -0
  44. data/lib/steep/type_inference/logic.rb +130 -0
  45. data/lib/steep/type_inference/type_env.rb +5 -69
  46. data/lib/steep/typing.rb +91 -23
  47. data/lib/steep/version.rb +1 -1
  48. data/smoke/alias/Steepfile +1 -0
  49. data/smoke/alias/a.rb +1 -1
  50. data/smoke/and/Steepfile +1 -0
  51. data/smoke/array/Steepfile +1 -0
  52. data/smoke/array/b.rb +0 -2
  53. data/smoke/block/Steepfile +1 -0
  54. data/smoke/case/Steepfile +1 -0
  55. data/smoke/class/Steepfile +1 -0
  56. data/smoke/const/Steepfile +1 -0
  57. data/smoke/dstr/Steepfile +1 -0
  58. data/smoke/ensure/Steepfile +1 -0
  59. data/smoke/enumerator/Steepfile +1 -0
  60. data/smoke/extension/Steepfile +1 -0
  61. data/smoke/extension/c.rb +1 -0
  62. data/smoke/hash/Steepfile +1 -0
  63. data/smoke/hello/Steepfile +1 -0
  64. data/smoke/if/Steepfile +1 -0
  65. data/smoke/if/a.rb +1 -1
  66. data/smoke/implements/Steepfile +1 -0
  67. data/smoke/initialize/Steepfile +1 -0
  68. data/smoke/integer/Steepfile +1 -0
  69. data/smoke/interface/Steepfile +1 -0
  70. data/smoke/kwbegin/Steepfile +1 -0
  71. data/smoke/lambda/Steepfile +1 -0
  72. data/smoke/literal/Steepfile +1 -0
  73. data/smoke/map/Steepfile +1 -0
  74. data/smoke/method/Steepfile +1 -0
  75. data/smoke/module/Steepfile +1 -0
  76. data/smoke/regexp/Steepfile +1 -0
  77. data/smoke/regexp/b.rb +4 -4
  78. data/smoke/regression/Steepfile +1 -0
  79. data/smoke/rescue/Steepfile +1 -0
  80. data/smoke/rescue/a.rb +1 -1
  81. data/smoke/self/Steepfile +1 -0
  82. data/smoke/skip/Steepfile +1 -0
  83. data/smoke/stdout/Steepfile +1 -0
  84. data/smoke/super/Steepfile +1 -0
  85. data/smoke/type_case/Steepfile +1 -0
  86. data/smoke/yield/Steepfile +1 -0
  87. data/steep.gemspec +8 -8
  88. metadata +38 -138
  89. data/exe/rbs +0 -3
  90. data/exe/ruby-signature +0 -3
  91. data/vendor/ruby-signature/.github/workflows/ruby.yml +0 -27
  92. data/vendor/ruby-signature/.gitignore +0 -12
  93. data/vendor/ruby-signature/.rubocop.yml +0 -15
  94. data/vendor/ruby-signature/BSDL +0 -22
  95. data/vendor/ruby-signature/COPYING +0 -56
  96. data/vendor/ruby-signature/Gemfile +0 -6
  97. data/vendor/ruby-signature/README.md +0 -93
  98. data/vendor/ruby-signature/Rakefile +0 -66
  99. data/vendor/ruby-signature/bin/annotate-with-rdoc +0 -156
  100. data/vendor/ruby-signature/bin/console +0 -14
  101. data/vendor/ruby-signature/bin/query-rdoc +0 -103
  102. data/vendor/ruby-signature/bin/setup +0 -10
  103. data/vendor/ruby-signature/bin/sort +0 -88
  104. data/vendor/ruby-signature/bin/test_runner.rb +0 -17
  105. data/vendor/ruby-signature/docs/CONTRIBUTING.md +0 -97
  106. data/vendor/ruby-signature/docs/sigs.md +0 -148
  107. data/vendor/ruby-signature/docs/stdlib.md +0 -152
  108. data/vendor/ruby-signature/docs/syntax.md +0 -528
  109. data/vendor/ruby-signature/exe/rbs +0 -3
  110. data/vendor/ruby-signature/exe/ruby-signature +0 -7
  111. data/vendor/ruby-signature/lib/ruby/signature.rb +0 -64
  112. data/vendor/ruby-signature/lib/ruby/signature/ast/annotation.rb +0 -29
  113. data/vendor/ruby-signature/lib/ruby/signature/ast/comment.rb +0 -29
  114. data/vendor/ruby-signature/lib/ruby/signature/ast/declarations.rb +0 -391
  115. data/vendor/ruby-signature/lib/ruby/signature/ast/members.rb +0 -364
  116. data/vendor/ruby-signature/lib/ruby/signature/buffer.rb +0 -52
  117. data/vendor/ruby-signature/lib/ruby/signature/builtin_names.rb +0 -54
  118. data/vendor/ruby-signature/lib/ruby/signature/cli.rb +0 -534
  119. data/vendor/ruby-signature/lib/ruby/signature/constant.rb +0 -28
  120. data/vendor/ruby-signature/lib/ruby/signature/constant_table.rb +0 -152
  121. data/vendor/ruby-signature/lib/ruby/signature/definition.rb +0 -172
  122. data/vendor/ruby-signature/lib/ruby/signature/definition_builder.rb +0 -921
  123. data/vendor/ruby-signature/lib/ruby/signature/environment.rb +0 -283
  124. data/vendor/ruby-signature/lib/ruby/signature/environment_loader.rb +0 -138
  125. data/vendor/ruby-signature/lib/ruby/signature/environment_walker.rb +0 -126
  126. data/vendor/ruby-signature/lib/ruby/signature/errors.rb +0 -189
  127. data/vendor/ruby-signature/lib/ruby/signature/location.rb +0 -104
  128. data/vendor/ruby-signature/lib/ruby/signature/method_type.rb +0 -125
  129. data/vendor/ruby-signature/lib/ruby/signature/namespace.rb +0 -93
  130. data/vendor/ruby-signature/lib/ruby/signature/parser.y +0 -1343
  131. data/vendor/ruby-signature/lib/ruby/signature/prototype/rb.rb +0 -441
  132. data/vendor/ruby-signature/lib/ruby/signature/prototype/rbi.rb +0 -579
  133. data/vendor/ruby-signature/lib/ruby/signature/prototype/runtime.rb +0 -383
  134. data/vendor/ruby-signature/lib/ruby/signature/substitution.rb +0 -48
  135. data/vendor/ruby-signature/lib/ruby/signature/test.rb +0 -28
  136. data/vendor/ruby-signature/lib/ruby/signature/test/errors.rb +0 -63
  137. data/vendor/ruby-signature/lib/ruby/signature/test/hook.rb +0 -290
  138. data/vendor/ruby-signature/lib/ruby/signature/test/setup.rb +0 -58
  139. data/vendor/ruby-signature/lib/ruby/signature/test/spy.rb +0 -324
  140. data/vendor/ruby-signature/lib/ruby/signature/test/test_helper.rb +0 -185
  141. data/vendor/ruby-signature/lib/ruby/signature/test/type_check.rb +0 -256
  142. data/vendor/ruby-signature/lib/ruby/signature/type_name.rb +0 -72
  143. data/vendor/ruby-signature/lib/ruby/signature/types.rb +0 -932
  144. data/vendor/ruby-signature/lib/ruby/signature/variance_calculator.rb +0 -140
  145. data/vendor/ruby-signature/lib/ruby/signature/vendorer.rb +0 -49
  146. data/vendor/ruby-signature/lib/ruby/signature/version.rb +0 -5
  147. data/vendor/ruby-signature/lib/ruby/signature/writer.rb +0 -271
  148. data/vendor/ruby-signature/ruby-signature.gemspec +0 -45
  149. data/vendor/ruby-signature/stdlib/abbrev/abbrev.rbs +0 -3
  150. data/vendor/ruby-signature/stdlib/base64/base64.rbs +0 -15
  151. data/vendor/ruby-signature/stdlib/builtin/array.rbs +0 -1997
  152. data/vendor/ruby-signature/stdlib/builtin/basic_object.rbs +0 -280
  153. data/vendor/ruby-signature/stdlib/builtin/binding.rbs +0 -177
  154. data/vendor/ruby-signature/stdlib/builtin/builtin.rbs +0 -35
  155. data/vendor/ruby-signature/stdlib/builtin/class.rbs +0 -145
  156. data/vendor/ruby-signature/stdlib/builtin/comparable.rbs +0 -116
  157. data/vendor/ruby-signature/stdlib/builtin/complex.rbs +0 -400
  158. data/vendor/ruby-signature/stdlib/builtin/constants.rbs +0 -37
  159. data/vendor/ruby-signature/stdlib/builtin/data.rbs +0 -5
  160. data/vendor/ruby-signature/stdlib/builtin/deprecated.rbs +0 -2
  161. data/vendor/ruby-signature/stdlib/builtin/dir.rbs +0 -419
  162. data/vendor/ruby-signature/stdlib/builtin/encoding.rbs +0 -606
  163. data/vendor/ruby-signature/stdlib/builtin/enumerable.rbs +0 -404
  164. data/vendor/ruby-signature/stdlib/builtin/enumerator.rbs +0 -260
  165. data/vendor/ruby-signature/stdlib/builtin/errno.rbs +0 -781
  166. data/vendor/ruby-signature/stdlib/builtin/errors.rbs +0 -582
  167. data/vendor/ruby-signature/stdlib/builtin/exception.rbs +0 -193
  168. data/vendor/ruby-signature/stdlib/builtin/false_class.rbs +0 -40
  169. data/vendor/ruby-signature/stdlib/builtin/fiber.rbs +0 -68
  170. data/vendor/ruby-signature/stdlib/builtin/fiber_error.rbs +0 -12
  171. data/vendor/ruby-signature/stdlib/builtin/file.rbs +0 -476
  172. data/vendor/ruby-signature/stdlib/builtin/file_test.rbs +0 -59
  173. data/vendor/ruby-signature/stdlib/builtin/float.rbs +0 -696
  174. data/vendor/ruby-signature/stdlib/builtin/gc.rbs +0 -121
  175. data/vendor/ruby-signature/stdlib/builtin/hash.rbs +0 -1029
  176. data/vendor/ruby-signature/stdlib/builtin/integer.rbs +0 -710
  177. data/vendor/ruby-signature/stdlib/builtin/io.rbs +0 -683
  178. data/vendor/ruby-signature/stdlib/builtin/kernel.rbs +0 -574
  179. data/vendor/ruby-signature/stdlib/builtin/marshal.rbs +0 -135
  180. data/vendor/ruby-signature/stdlib/builtin/match_data.rbs +0 -141
  181. data/vendor/ruby-signature/stdlib/builtin/math.rbs +0 -66
  182. data/vendor/ruby-signature/stdlib/builtin/method.rbs +0 -182
  183. data/vendor/ruby-signature/stdlib/builtin/module.rbs +0 -248
  184. data/vendor/ruby-signature/stdlib/builtin/nil_class.rbs +0 -82
  185. data/vendor/ruby-signature/stdlib/builtin/numeric.rbs +0 -409
  186. data/vendor/ruby-signature/stdlib/builtin/object.rbs +0 -824
  187. data/vendor/ruby-signature/stdlib/builtin/proc.rbs +0 -426
  188. data/vendor/ruby-signature/stdlib/builtin/process.rbs +0 -354
  189. data/vendor/ruby-signature/stdlib/builtin/random.rbs +0 -93
  190. data/vendor/ruby-signature/stdlib/builtin/range.rbs +0 -226
  191. data/vendor/ruby-signature/stdlib/builtin/rational.rbs +0 -424
  192. data/vendor/ruby-signature/stdlib/builtin/rb_config.rbs +0 -10
  193. data/vendor/ruby-signature/stdlib/builtin/regexp.rbs +0 -131
  194. data/vendor/ruby-signature/stdlib/builtin/ruby_vm.rbs +0 -14
  195. data/vendor/ruby-signature/stdlib/builtin/signal.rbs +0 -55
  196. data/vendor/ruby-signature/stdlib/builtin/string.rbs +0 -770
  197. data/vendor/ruby-signature/stdlib/builtin/string_io.rbs +0 -13
  198. data/vendor/ruby-signature/stdlib/builtin/struct.rbs +0 -40
  199. data/vendor/ruby-signature/stdlib/builtin/symbol.rbs +0 -230
  200. data/vendor/ruby-signature/stdlib/builtin/thread.rbs +0 -1112
  201. data/vendor/ruby-signature/stdlib/builtin/thread_group.rbs +0 -23
  202. data/vendor/ruby-signature/stdlib/builtin/time.rbs +0 -739
  203. data/vendor/ruby-signature/stdlib/builtin/trace_point.rbs +0 -91
  204. data/vendor/ruby-signature/stdlib/builtin/true_class.rbs +0 -46
  205. data/vendor/ruby-signature/stdlib/builtin/unbound_method.rbs +0 -159
  206. data/vendor/ruby-signature/stdlib/builtin/warning.rbs +0 -17
  207. data/vendor/ruby-signature/stdlib/erb/erb.rbs +0 -18
  208. data/vendor/ruby-signature/stdlib/find/find.rbs +0 -44
  209. data/vendor/ruby-signature/stdlib/pathname/pathname.rbs +0 -21
  210. data/vendor/ruby-signature/stdlib/prime/integer-extension.rbs +0 -23
  211. data/vendor/ruby-signature/stdlib/prime/prime.rbs +0 -188
  212. data/vendor/ruby-signature/stdlib/securerandom/securerandom.rbs +0 -9
  213. data/vendor/ruby-signature/stdlib/set/set.rbs +0 -77
  214. data/vendor/ruby-signature/stdlib/tmpdir/tmpdir.rbs +0 -53
@@ -1,364 +0,0 @@
1
- module Ruby
2
- module Signature
3
- module AST
4
- module Members
5
- class MethodDefinition
6
- attr_reader :name
7
- attr_reader :kind
8
- attr_reader :types
9
- attr_reader :annotations
10
- attr_reader :location
11
- attr_reader :comment
12
- attr_reader :attributes
13
-
14
- def initialize(name:, kind:, types:, annotations:, location:, comment:, attributes:)
15
- @name = name
16
- @kind = kind
17
- @types = types
18
- @annotations = annotations
19
- @location = location
20
- @comment = comment
21
- @attributes = attributes
22
- end
23
-
24
- def ==(other)
25
- other.is_a?(MethodDefinition) &&
26
- other.name == name &&
27
- other.kind == kind &&
28
- other.types == types &&
29
- other.attributes == attributes
30
- end
31
-
32
- alias eql? ==
33
-
34
- def hash
35
- self.class.hash ^ name.hash ^ kind.hash ^ types.hash ^ attributes.hash
36
- end
37
-
38
- def instance?
39
- kind == :instance || kind == :singleton_instance
40
- end
41
-
42
- def singleton?
43
- kind == :singleton || kind == :singleton_instance
44
- end
45
-
46
- def to_json(*a)
47
- {
48
- member: :method_definition,
49
- kind: kind,
50
- types: types,
51
- annotations: annotations,
52
- location: location,
53
- comment: comment,
54
- attributes: attributes
55
- }.to_json(*a)
56
- end
57
- end
58
-
59
- module Var
60
- attr_reader :name
61
- attr_reader :type
62
- attr_reader :location
63
- attr_reader :comment
64
-
65
- def initialize(name:, type:, location:, comment:)
66
- @name = name
67
- @type = type
68
- @location = location
69
- @comment = comment
70
- end
71
-
72
- def ==(other)
73
- other.is_a?(self.class) && other.name == name && other.type == type
74
- end
75
-
76
- alias eql? ==
77
-
78
- def hash
79
- self.class.hash ^ name.hash ^ type.hash
80
- end
81
- end
82
-
83
- class InstanceVariable
84
- include Var
85
-
86
- def to_json(*a)
87
- {
88
- member: :instance_variable,
89
- name: name,
90
- type: type,
91
- location: location,
92
- comment: comment
93
- }.to_json(*a)
94
- end
95
- end
96
-
97
- class ClassInstanceVariable
98
- include Var
99
-
100
- def to_json(*a)
101
- {
102
- member: :class_instance_variable,
103
- name: name,
104
- type: type,
105
- location: location,
106
- comment: comment
107
- }.to_json(*a)
108
- end
109
- end
110
-
111
- class ClassVariable
112
- include Var
113
-
114
- def to_json(*a)
115
- {
116
- member: :class_variable,
117
- name: name,
118
- type: type,
119
- location: location,
120
- comment: comment
121
- }.to_json(*a)
122
- end
123
- end
124
-
125
- module Mixin
126
- attr_reader :name
127
- attr_reader :args
128
- attr_reader :annotations
129
- attr_reader :location
130
- attr_reader :comment
131
-
132
- def initialize(name:, args:, annotations:, location:, comment:)
133
- @name = name
134
- @args = args
135
- @annotations = annotations
136
- @location = location
137
- @comment = comment
138
- end
139
-
140
- def ==(other)
141
- other.is_a?(self.class) && other.name == name && other.args == args
142
- end
143
-
144
- def eql?(other)
145
- self == other
146
- end
147
-
148
- def hash
149
- self.class.hash ^ name.hash ^ args.hash
150
- end
151
- end
152
-
153
- class Include
154
- include Mixin
155
-
156
- def to_json(*a)
157
- {
158
- member: :include,
159
- name: name,
160
- args: args,
161
- annotations: annotations,
162
- location: location,
163
- comment: comment
164
- }.to_json(*a)
165
- end
166
- end
167
-
168
- class Extend
169
- include Mixin
170
-
171
- def to_json(*a)
172
- {
173
- member: :extend,
174
- name: name,
175
- args: args,
176
- annotations: annotations,
177
- location: location,
178
- comment: comment
179
- }.to_json(*a)
180
- end
181
- end
182
-
183
- class Prepend
184
- include Mixin
185
-
186
- def to_json(*a)
187
- {
188
- member: :prepend,
189
- name: name,
190
- args: args,
191
- annotations: annotations,
192
- location: location,
193
- comment: comment
194
- }.to_json(*a)
195
- end
196
- end
197
-
198
- module Attribute
199
- attr_reader :name
200
- attr_reader :type
201
- attr_reader :ivar_name
202
- attr_reader :annotations
203
- attr_reader :location
204
- attr_reader :comment
205
-
206
- def initialize(name:, type:, ivar_name:, annotations:, location:, comment:)
207
- @name = name
208
- @type = type
209
- @ivar_name = ivar_name
210
- @annotations = annotations
211
- @location = location
212
- @comment = comment
213
- end
214
-
215
- def ==(other)
216
- other.is_a?(self.class) &&
217
- other.name == name &&
218
- other.type == type &&
219
- other.ivar_name == ivar_name
220
- end
221
-
222
- alias eql? ==
223
-
224
- def hash
225
- self.class.hash ^ name.hash ^ type.hash ^ ivar_name.hash
226
- end
227
- end
228
-
229
- class AttrReader
230
- include Attribute
231
-
232
- def to_json(*a)
233
- {
234
- member: :attr_reader,
235
- name: name,
236
- type: type,
237
- ivar_name: ivar_name,
238
- annotations: annotations,
239
- location: location,
240
- comment: comment
241
- }.to_json(*a)
242
- end
243
- end
244
-
245
- class AttrAccessor
246
- include Attribute
247
-
248
- def to_json(*a)
249
- {
250
- member: :attr_accessor,
251
- name: name,
252
- type: type,
253
- ivar_name: ivar_name,
254
- annotations: annotations,
255
- location: location,
256
- comment: comment
257
- }.to_json(*a)
258
- end
259
- end
260
-
261
- class AttrWriter
262
- include Attribute
263
-
264
- def to_json(*a)
265
- {
266
- member: :attr_writer,
267
- name: name,
268
- type: type,
269
- ivar_name: ivar_name,
270
- annotations: annotations,
271
- location: location,
272
- comment: comment
273
- }.to_json(*a)
274
- end
275
- end
276
-
277
- module LocationOnly
278
- attr_reader :location
279
-
280
- def initialize(location:)
281
- @location = location
282
- end
283
-
284
- def ==(other)
285
- other.is_a?(self.class)
286
- end
287
-
288
- alias eql? ==
289
-
290
- def hash
291
- self.class.hash
292
- end
293
- end
294
-
295
- class Public
296
- include LocationOnly
297
-
298
- def to_json(*a)
299
- { member: :public, location: location }.to_json(*a)
300
- end
301
- end
302
-
303
- class Private
304
- include LocationOnly
305
-
306
- def to_json(*a)
307
- { member: :private, location: location }.to_json(*a)
308
- end
309
- end
310
-
311
- class Alias
312
- attr_reader :new_name
313
- attr_reader :old_name
314
- attr_reader :kind
315
- attr_reader :annotations
316
- attr_reader :location
317
- attr_reader :comment
318
-
319
- def initialize(new_name:, old_name:, kind:, annotations:, location:, comment:)
320
- @new_name = new_name
321
- @old_name = old_name
322
- @kind = kind
323
- @annotations = annotations
324
- @location = location
325
- @comment = comment
326
- end
327
-
328
- def ==(other)
329
- other.is_a?(self.class) &&
330
- other.new_name == new_name &&
331
- other.old_name == old_name &&
332
- other.kind == kind
333
- end
334
-
335
- alias eql? ==
336
-
337
- def hash
338
- self.class.hash ^ new_name.hash ^ old_name.hash ^ kind.hash
339
- end
340
-
341
- def to_json(*a)
342
- {
343
- member: :alias,
344
- new_name: new_name,
345
- old_name: old_name,
346
- kind: kind,
347
- annotations: annotations,
348
- location: location,
349
- comment: comment
350
- }.to_json(*a)
351
- end
352
-
353
- def instance?
354
- kind == :instance
355
- end
356
-
357
- def singleton?
358
- kind == :singleton
359
- end
360
- end
361
- end
362
- end
363
- end
364
- end
@@ -1,52 +0,0 @@
1
- module Ruby
2
- module Signature
3
- class Buffer
4
- attr_reader :name
5
- attr_reader :content
6
- attr_reader :lines
7
- attr_reader :ranges
8
-
9
- def initialize(name:, content:)
10
- @name = name
11
- @content = content
12
-
13
- @lines = content.lines
14
-
15
- @ranges = []
16
- offset = 0
17
- lines.each do |line|
18
- size = line.size
19
- range = offset...(offset+size)
20
- ranges << range
21
- offset += size
22
- end
23
- end
24
-
25
- def pos_to_loc(pos)
26
- index = ranges.bsearch_index do |range|
27
- pos < range.end
28
- end
29
-
30
- if index
31
- [index + 1, pos - ranges[index].begin]
32
- else
33
- [ranges.size + 1, 0]
34
- end
35
- end
36
-
37
- def loc_to_pos(loc)
38
- line, column = loc
39
-
40
- if range = ranges[line - 1]
41
- range.begin + column
42
- else
43
- last_position
44
- end
45
- end
46
-
47
- def last_position
48
- content.size
49
- end
50
- end
51
- end
52
- end
@@ -1,54 +0,0 @@
1
- module Ruby
2
- module Signature
3
- module BuiltinNames
4
- class Name
5
- attr_reader :name
6
-
7
- def initialize(name:)
8
- @name = name
9
- end
10
-
11
- def to_s
12
- name.to_s
13
- end
14
-
15
- def instance_type(*args)
16
- Types::ClassInstance.new(name: name, args: args, location: nil)
17
- end
18
-
19
- def instance_type?(type)
20
- type.is_a?(Types::ClassInstance) && type.name == name
21
- end
22
-
23
- def singleton_type
24
- @singleton_type ||= Types::ClassSingleton.new(name: name, location: nil)
25
- end
26
-
27
- def singleton_type?(type)
28
- type.is_a?(Types::ClassSingleton) && type.name == name
29
- end
30
-
31
- def self.define(name, namespace: Namespace.root)
32
- new(name: TypeName.new(name: name, namespace: namespace))
33
- end
34
- end
35
-
36
- BasicObject = Name.new(name: TypeName.new(name: :BasicObject, namespace: Namespace.root))
37
- Object = Name.new(name: TypeName.new(name: :Object, namespace: Namespace.root))
38
- Kernel = Name.new(name: TypeName.new(name: :Kernel, namespace: Namespace.root))
39
- String = Name.define(:String)
40
- Comparable = Name.define(:Comparable)
41
- Enumerable = Name.define(:Enumerable)
42
- Class = Name.define(:Class)
43
- Module = Name.define(:Module)
44
- Array = Name.define(:Array)
45
- Hash = Name.define(:Hash)
46
- Range = Name.define(:Range)
47
- Enumerator = Name.define(:Enumerator)
48
- Set = Name.define(:Set)
49
- Symbol = Name.define(:Symbol)
50
- Integer = Name.define(:Integer)
51
- Float = Name.define(:Float)
52
- end
53
- end
54
- end