steep 1.7.0.dev.3 → 1.7.0

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 (170) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +43 -0
  3. data/README.md +18 -0
  4. data/doc/narrowing.md +1 -1
  5. data/doc/shape.md +176 -0
  6. data/guides/src/gem-rbs-collection/gem-rbs-collection.md +7 -24
  7. data/lib/steep/ast/types/factory.rb +27 -18
  8. data/lib/steep/ast/types/proc.rb +14 -9
  9. data/lib/steep/interface/block.rb +1 -1
  10. data/lib/steep/interface/builder.rb +1 -0
  11. data/lib/steep/interface/function.rb +14 -6
  12. data/lib/steep/interface/method_type.rb +15 -7
  13. data/lib/steep/project/pattern.rb +1 -2
  14. data/lib/steep/rake_task.rb +132 -0
  15. data/lib/steep/server/interaction_worker.rb +6 -0
  16. data/lib/steep/server/lsp_formatter.rb +2 -0
  17. data/lib/steep/services/completion_provider.rb +1 -1
  18. data/lib/steep/services/file_loader.rb +15 -20
  19. data/lib/steep/services/signature_help_provider.rb +11 -9
  20. data/lib/steep/signature/validator.rb +1 -1
  21. data/lib/steep/subtyping/check.rb +15 -6
  22. data/lib/steep/subtyping/variable_variance.rb +3 -3
  23. data/lib/steep/type_construction.rb +186 -149
  24. data/lib/steep/type_inference/block_params.rb +1 -1
  25. data/lib/steep/type_inference/logic_type_interpreter.rb +2 -1
  26. data/lib/steep/type_inference/method_params.rb +16 -0
  27. data/lib/steep/type_inference/send_args.rb +5 -2
  28. data/lib/steep/version.rb +1 -1
  29. data/steep.gemspec +5 -2
  30. metadata +7 -145
  31. data/.github/dependabot.yml +0 -28
  32. data/.github/workflows/ruby-windows.yml +0 -35
  33. data/.github/workflows/ruby.yml +0 -32
  34. data/.vscode/steep-shared.code-snippets +0 -41
  35. data/Gemfile +0 -14
  36. data/Gemfile.lock +0 -104
  37. data/Gemfile.steep +0 -0
  38. data/gemfile_steep/Gemfile +0 -3
  39. data/gemfile_steep/Gemfile.lock +0 -77
  40. data/rbs_collection.steep.lock.yaml +0 -108
  41. data/rbs_collection.steep.yaml +0 -23
  42. data/sig/shims/bundler.rbs +0 -3
  43. data/sig/shims/concurrent-ruby.rbs +0 -39
  44. data/sig/shims/exception.rbs +0 -4
  45. data/sig/shims/language-server_protocol.rbs +0 -450
  46. data/sig/shims/parser/comment.rbs +0 -33
  47. data/sig/shims/parser/nodes.rbs +0 -252
  48. data/sig/shims/parser/source/map.rbs +0 -146
  49. data/sig/shims/parser/source/range.rbs +0 -237
  50. data/sig/shims/parser.rbs +0 -69
  51. data/sig/shims/string.rbs +0 -4
  52. data/sig/shims/tagged_logging.rbs +0 -6
  53. data/sig/shims/yaml.rbs +0 -4
  54. data/sig/steep/annotation_parser.rbs +0 -60
  55. data/sig/steep/ast/annotation/collection.rbs +0 -78
  56. data/sig/steep/ast/annotation.rbs +0 -121
  57. data/sig/steep/ast/builtin.rbs +0 -69
  58. data/sig/steep/ast/ignore.rbs +0 -66
  59. data/sig/steep/ast/node/type_application.rbs +0 -31
  60. data/sig/steep/ast/node/type_assertion.rbs +0 -32
  61. data/sig/steep/ast/types/any.rbs +0 -29
  62. data/sig/steep/ast/types/boolean.rbs +0 -31
  63. data/sig/steep/ast/types/bot.rbs +0 -29
  64. data/sig/steep/ast/types/class.rbs +0 -33
  65. data/sig/steep/ast/types/factory.rbs +0 -110
  66. data/sig/steep/ast/types/helper.rbs +0 -24
  67. data/sig/steep/ast/types/instance.rbs +0 -33
  68. data/sig/steep/ast/types/intersection.rbs +0 -40
  69. data/sig/steep/ast/types/literal.rbs +0 -35
  70. data/sig/steep/ast/types/logic.rbs +0 -83
  71. data/sig/steep/ast/types/name.rbs +0 -84
  72. data/sig/steep/ast/types/nil.rbs +0 -31
  73. data/sig/steep/ast/types/proc.rbs +0 -53
  74. data/sig/steep/ast/types/record.rbs +0 -39
  75. data/sig/steep/ast/types/self.rbs +0 -33
  76. data/sig/steep/ast/types/top.rbs +0 -29
  77. data/sig/steep/ast/types/tuple.rbs +0 -37
  78. data/sig/steep/ast/types/union.rbs +0 -40
  79. data/sig/steep/ast/types/var.rbs +0 -42
  80. data/sig/steep/ast/types/void.rbs +0 -29
  81. data/sig/steep/ast/types.rbs +0 -16
  82. data/sig/steep/cli.rbs +0 -55
  83. data/sig/steep/diagnostic/deprecated/else_on_exhaustive_case.rbs +0 -13
  84. data/sig/steep/diagnostic/deprecated/unknown_constant_assigned.rbs +0 -15
  85. data/sig/steep/diagnostic/helper.rbs +0 -15
  86. data/sig/steep/diagnostic/lsp_formatter.rbs +0 -36
  87. data/sig/steep/diagnostic/ruby.rbs +0 -703
  88. data/sig/steep/diagnostic/signature.rbs +0 -252
  89. data/sig/steep/drivers/annotations.rbs +0 -17
  90. data/sig/steep/drivers/check.rbs +0 -33
  91. data/sig/steep/drivers/checkfile.rbs +0 -27
  92. data/sig/steep/drivers/diagnostic_printer.rbs +0 -25
  93. data/sig/steep/drivers/init.rbs +0 -19
  94. data/sig/steep/drivers/langserver.rbs +0 -36
  95. data/sig/steep/drivers/print_project.rbs +0 -15
  96. data/sig/steep/drivers/stats.rbs +0 -47
  97. data/sig/steep/drivers/utils/driver_helper.rbs +0 -25
  98. data/sig/steep/drivers/utils/jobs_option.rbs +0 -19
  99. data/sig/steep/drivers/validate.rbs +0 -15
  100. data/sig/steep/drivers/vendor.rbs +0 -19
  101. data/sig/steep/drivers/watch.rbs +0 -27
  102. data/sig/steep/drivers/worker.rbs +0 -29
  103. data/sig/steep/equatable.rbs +0 -11
  104. data/sig/steep/expectations.rbs +0 -72
  105. data/sig/steep/index/rbs_index.rbs +0 -141
  106. data/sig/steep/index/signature_symbol_provider.rbs +0 -41
  107. data/sig/steep/index/source_index.rbs +0 -63
  108. data/sig/steep/interface/block.rbs +0 -41
  109. data/sig/steep/interface/builder.rbs +0 -152
  110. data/sig/steep/interface/function.rbs +0 -270
  111. data/sig/steep/interface/method_type.rbs +0 -105
  112. data/sig/steep/interface/shape.rbs +0 -80
  113. data/sig/steep/interface/substitution.rbs +0 -51
  114. data/sig/steep/interface/type_param.rbs +0 -43
  115. data/sig/steep/method_name.rbs +0 -30
  116. data/sig/steep/module_helper.rbs +0 -16
  117. data/sig/steep/node_helper.rbs +0 -91
  118. data/sig/steep/path_helper.rbs +0 -15
  119. data/sig/steep/project/dsl.rbs +0 -108
  120. data/sig/steep/project/options.rbs +0 -47
  121. data/sig/steep/project/pattern.rbs +0 -47
  122. data/sig/steep/project/target.rbs +0 -25
  123. data/sig/steep/project.rbs +0 -26
  124. data/sig/steep/range_extension.rbs +0 -7
  125. data/sig/steep/server/base_worker.rbs +0 -49
  126. data/sig/steep/server/change_buffer.rbs +0 -38
  127. data/sig/steep/server/delay_queue.rbs +0 -37
  128. data/sig/steep/server/interaction_worker.rbs +0 -90
  129. data/sig/steep/server/lsp_formatter.rbs +0 -63
  130. data/sig/steep/server/master.rbs +0 -299
  131. data/sig/steep/server/type_check_worker.rbs +0 -141
  132. data/sig/steep/server/worker_process.rbs +0 -97
  133. data/sig/steep/services/completion_provider.rbs +0 -264
  134. data/sig/steep/services/content_change.rbs +0 -37
  135. data/sig/steep/services/file_loader.rbs +0 -21
  136. data/sig/steep/services/goto_service.rbs +0 -106
  137. data/sig/steep/services/hover_provider/rbs.rbs +0 -47
  138. data/sig/steep/services/hover_provider/ruby.rbs +0 -127
  139. data/sig/steep/services/hover_provider/singleton_methods.rbs +0 -11
  140. data/sig/steep/services/path_assignment.rbs +0 -21
  141. data/sig/steep/services/signature_help_provider.rbs +0 -51
  142. data/sig/steep/services/signature_service.rbs +0 -156
  143. data/sig/steep/services/stats_calculator.rbs +0 -41
  144. data/sig/steep/services/type_check_service.rbs +0 -112
  145. data/sig/steep/services/type_name_completion.rbs +0 -135
  146. data/sig/steep/signature/validator.rbs +0 -85
  147. data/sig/steep/source/ignore_ranges.rbs +0 -38
  148. data/sig/steep/source.rbs +0 -105
  149. data/sig/steep/subtyping/cache.rbs +0 -17
  150. data/sig/steep/subtyping/check.rbs +0 -131
  151. data/sig/steep/subtyping/constraints.rbs +0 -111
  152. data/sig/steep/subtyping/relation.rbs +0 -63
  153. data/sig/steep/subtyping/result.rbs +0 -179
  154. data/sig/steep/subtyping/variable_variance.rbs +0 -25
  155. data/sig/steep/thread_waiter.rbs +0 -13
  156. data/sig/steep/type_construction.rbs +0 -542
  157. data/sig/steep/type_inference/block_params.rbs +0 -170
  158. data/sig/steep/type_inference/case_when.rbs +0 -130
  159. data/sig/steep/type_inference/constant_env.rbs +0 -29
  160. data/sig/steep/type_inference/context.rbs +0 -216
  161. data/sig/steep/type_inference/context_array.rbs +0 -38
  162. data/sig/steep/type_inference/logic_type_interpreter.rbs +0 -108
  163. data/sig/steep/type_inference/method_call.rbs +0 -124
  164. data/sig/steep/type_inference/method_params.rbs +0 -127
  165. data/sig/steep/type_inference/multiple_assignment.rbs +0 -76
  166. data/sig/steep/type_inference/send_args.rbs +0 -243
  167. data/sig/steep/type_inference/type_env.rbs +0 -160
  168. data/sig/steep/type_inference/type_env_builder.rbs +0 -81
  169. data/sig/steep/typing.rbs +0 -75
  170. data/sig/steep.rbs +0 -45
@@ -1,252 +0,0 @@
1
- module Parser
2
- module AST
3
- interface _BlockNode
4
- def type: () -> :block
5
-
6
- %a{pure} def loc: () -> (Source::Map & _BlockLocation)
7
- end
8
-
9
- interface _BlockLocation
10
- %a{pure} def end: () -> Source::Range
11
- end
12
-
13
- interface _DefNode
14
- def type: () -> :def
15
-
16
- def children: () -> [Symbol, Node, Node?]
17
-
18
- %a{pure} def loc: () -> (Source::Map & _DefLocation)
19
- end
20
-
21
- interface _DefLocation
22
- def name: () -> Source::Range
23
-
24
- %a{pure} def end: () -> Source::Range?
25
- end
26
-
27
- interface _CaseNode
28
- def type: () -> :case
29
-
30
- %a{pure} def loc: () -> (Source::Map & _CaseLocation)
31
- end
32
-
33
- interface _CaseLocation
34
- %a{pure} def else: () -> Source::Range?
35
-
36
- %a{pure} def end: () -> Source::Range
37
- end
38
-
39
- interface _NamedLocation
40
- %a{pure} def name: () -> Source::Range
41
- end
42
-
43
- interface _SelectorLocation
44
- %a{pure} def selector: () -> Source::Range
45
- end
46
-
47
- # ```ruby
48
- # if foo then bar else baz end
49
- # #^ => keyword
50
- # # ^^^^ => begin
51
- # # ^^^^ => else
52
- # # ^^^ => end
53
- # ```
54
- #
55
- interface _Condition
56
- %a{pure} def keyword: () -> Source::Range
57
-
58
- %a{pure} def begin: () -> Source::Range?
59
-
60
- %a{pure} def else: () -> Source::Range?
61
-
62
- %a{pure} def end: () -> Source::Range?
63
- end
64
-
65
- # ```ruby
66
- # foo ? bar : baz
67
- # # ^ question
68
- # # ^ colon
69
- # ```
70
- interface _Ternary
71
- %a{pure} def question: () -> Source::Range
72
-
73
- %a{pure} def colon: () -> Source::Range
74
- end
75
-
76
- interface _Variable
77
- %a{pure} def name: () -> Source::Range
78
-
79
- %a{pure} def operator: () -> Source::Range?
80
- end
81
-
82
- # ```ruby
83
- # foo.bar(baz)
84
- # # ^ => dot
85
- # # ^^^ => selector
86
- # # ^ => begin
87
- # # ^ => end
88
- #
89
- # foo.bar += 1
90
- # # ^ => dot
91
- # # ^^^ => selector
92
- # # ^^ => operator
93
- # ```
94
- #
95
- interface _Send
96
- %a{pure} def dot: () -> Source::Range?
97
-
98
- %a{pure} def selector: () -> Source::Range
99
-
100
- %a{pure} def operator: () -> Source::Range?
101
-
102
- %a{pure} def begin: () -> Source::Range?
103
-
104
- %a{pure} def end: () -> Source::Range?
105
- end
106
-
107
- # ```ruby
108
- # rescue Foo => x then
109
- # #^^^^^ => keyword
110
- # # ^^ => assoc
111
- # # ^^^^ => begin
112
- # ```
113
- interface _RescueBody
114
- %a{pure} def keyword: () -> Source::Range
115
-
116
- %a{pure} def assoc: () -> Source::Range?
117
-
118
- %a{pure} def begin: () -> Source::Range?
119
- end
120
-
121
- # ```ruby
122
- # +1
123
- # ^ => operator
124
- # ```
125
- interface _Operator
126
- %a{pure} def operator: () -> Source::Range?
127
- end
128
-
129
- # ```ruby
130
- # def self.foo(); end
131
- # #^^ => keyword
132
- # # ^ => operator
133
- # # ^^^ => name
134
- # # ^^^ => end
135
- #
136
- # def foo = bar
137
- # #^^ => keyword
138
- # # ^^^ => name
139
- # # ^ => assignment
140
- # ```
141
- interface _MethodDefinition
142
- %a{pure} def keyword: () -> Source::Range
143
-
144
- %a{pure} def operator: () -> Source::Range?
145
-
146
- %a{pure} def name: () -> Source::Range
147
-
148
- %a{pure} def end: () -> Source::Range?
149
-
150
- %a{pure} def assignment: () -> Source::Range?
151
- end
152
-
153
- # ```ruby
154
- # when foo then
155
- # #^^^ => keyword
156
- # # ^^^^ => begin
157
- # ```
158
- interface _Keyword
159
- %a{pure} def keyword: () -> Source::Range
160
-
161
- %a{pure} def begin: () -> Source::Range?
162
-
163
- %a{pure} def end: () -> Source::Range?
164
- end
165
-
166
- # ```ruby
167
- # foo[1] += 1
168
- # # ^ => begin
169
- # # ^ => end
170
- # # ^^ => operator
171
- # ```
172
- interface _Index
173
- %a{pure} def begin: () -> Source::Range
174
-
175
- %a{pure} def end: () -> Source::Range
176
-
177
- %a{pure} def operator: () -> Source::Range?
178
- end
179
-
180
- # ```ruby
181
- # <<FOO <= expression
182
- # foo <= heredoc_body
183
- # FOO <= heredoc_end
184
- # ```
185
- #
186
- interface _Heredoc
187
- %a{pure} def heredoc_body: () -> Source::Range
188
-
189
- %a{pure} def heredoc_end: () -> Source::Range
190
- end
191
-
192
- # ```ruby
193
- # for x in [] then ... end
194
- # #^^ => keyword
195
- # # ^^ => in
196
- # # ^^^^ => begin
197
- # # ^^^ => end
198
- # ```
199
- interface _For
200
- %a{pure} def keyword: () -> Source::Range
201
-
202
- %a{pure} def in: () -> Source::Range
203
-
204
- %a{pure} def begin: () -> Source::Range?
205
-
206
- %a{pure} def end: () -> Source::Range
207
- end
208
-
209
- # ```ruby
210
- # class Foo::Bar < Baz; end
211
- # #^^^^ => keyword
212
- # # ^^^^^^^^ => name
213
- # # ^ => operator
214
- # # ^^^ => end
215
- # ```
216
- interface _Definition
217
- %a{pure} def keyword: () -> Source::Range
218
-
219
- %a{pure} def name: () -> Source::Range
220
-
221
- %a{pure} def operator: () -> Source::Range?
222
-
223
- %a{pure} def end: () -> Source::Range
224
- end
225
-
226
- # ```ruby
227
- # Foo::Bar += 1
228
- # # ^^ => double_colon
229
- # # ^^^ => name
230
- # # ^^ => operator
231
- # ```
232
- #
233
- interface _Constant
234
- %a{pure} def double_colon: () -> Source::Range?
235
-
236
- %a{pure} def name: () -> Source::Range
237
-
238
- %a{pure} def operator: () -> Source::Range?
239
- end
240
-
241
- # ```ruby
242
- # (1)
243
- # # ^ => begin
244
- # # ^ => end
245
- # ```
246
- interface _Collection
247
- %a{pure} def begin: () -> Source::Range?
248
-
249
- %a{pure} def end: () -> Source::Range?
250
- end
251
- end
252
- end
@@ -1,146 +0,0 @@
1
- module Parser
2
- module Source
3
- #
4
- # {Map} relates AST nodes to the source code they were parsed from.
5
- # More specifically, a {Map} or its subclass contains a set of ranges:
6
- #
7
- # * `expression`: smallest range which includes all source corresponding
8
- # to the node and all `expression` ranges of its children.
9
- # * other ranges (`begin`, `end`, `operator`, ...): node-specific ranges
10
- # pointing to various interesting tokens corresponding to the node.
11
- #
12
- # Note that the {Map::Heredoc} map is the only one whose `expression` does
13
- # not include other ranges. It only covers the heredoc marker (`<<HERE`),
14
- # not the here document itself.
15
- #
16
- # All ranges except `expression` are defined by {Map} subclasses.
17
- #
18
- # Ranges (except `expression`) can be `nil` if the corresponding token is
19
- # not present in source. For example, a hash may not have opening/closing
20
- # braces, and so would its source map.
21
- #
22
- # p Parser::CurrentRuby.parse('[1 => 2]').children[0].loc
23
- # # => <Parser::Source::Map::Collection:0x007f5492b547d8
24
- # # @end=nil, @begin=nil,
25
- # # @expression=#<Source::Range (string) 1...7>>
26
- #
27
- # The {file:doc/AST_FORMAT.md} document describes how ranges associated to source
28
- # code tokens. For example, the entry
29
- #
30
- # (array (int 1) (int 2))
31
- #
32
- # "[1, 2]"
33
- # ^ begin
34
- # ^ end
35
- # ~~~~~~ expression
36
- #
37
- # means that if `node` is an {Parser::AST::Node} `(array (int 1) (int 2))`,
38
- # then `node.loc` responds to `begin`, `end` and `expression`, and
39
- # `node.loc.begin` returns a range pointing at the opening bracket, and so on.
40
- #
41
- # If you want to write code polymorphic by the source map (i.e. accepting
42
- # several subclasses of {Map}), use `respond_to?` instead of `is_a?` to
43
- # check whether the map features the range you need. Concrete {Map}
44
- # subclasses may not be preserved between versions, but their interfaces
45
- # will be kept compatible.
46
- #
47
- # You can visualize the source maps with `ruby-parse -E` command-line tool.
48
- #
49
- # @example
50
- # require 'parser/current'
51
- #
52
- # p Parser::CurrentRuby.parse('[1, 2]').loc
53
- # # => #<Parser::Source::Map::Collection:0x007f14b80eccd8
54
- # # @end=#<Source::Range (string) 5...6>,
55
- # # @begin=#<Source::Range (string) 0...1>,
56
- # # @expression=#<Source::Range (string) 0...6>>
57
- #
58
- # @!attribute [r] node
59
- # The node that is described by this map. Nodes and maps have 1:1 correspondence.
60
- # @return [Parser::AST::Node]
61
- #
62
- # @!attribute [r] expression
63
- # @return [Range]
64
- #
65
- # @api public
66
- #
67
- class Map
68
- attr_reader node: AST::Node
69
-
70
- attr_reader expression: Range
71
-
72
- #
73
- # @param [Range] expression
74
- def initialize: (untyped expression) -> void
75
-
76
- #
77
- # @api private
78
- def initialize_copy: (untyped other) -> untyped
79
-
80
- #
81
- # @api private
82
- def node=: (untyped node) -> untyped
83
-
84
- #
85
- # A shortcut for `self.expression.line`.
86
- # @return [Integer]
87
- #
88
- def line: () -> Integer
89
-
90
- alias first_line line
91
-
92
- #
93
- # A shortcut for `self.expression.column`.
94
- # @return [Integer]
95
- #
96
- def column: () -> Integer
97
-
98
- #
99
- # A shortcut for `self.expression.last_line`.
100
- # @return [Integer]
101
- #
102
- def last_line: () -> Integer
103
-
104
- #
105
- # A shortcut for `self.expression.last_column`.
106
- # @return [Integer]
107
- #
108
- def last_column: () -> Integer
109
-
110
- #
111
- # @api private
112
- #
113
- def with_expression: (untyped expression_l) -> untyped
114
-
115
- #
116
- # Compares source maps.
117
- # @return [Boolean]
118
- #
119
- def ==: (untyped other) -> bool
120
-
121
- #
122
- # Converts this source map to a hash with keys corresponding to
123
- # ranges. For example, if called on an instance of {Collection},
124
- # which adds the `begin` and `end` ranges, the resulting hash
125
- # will contain keys `:expression`, `:begin` and `:end`.
126
- #
127
- # @example
128
- # require 'parser/current'
129
- #
130
- # p Parser::CurrentRuby.parse('[1, 2]').loc.to_hash
131
- # # => {
132
- # # :begin => #<Source::Range (string) 0...1>,
133
- # # :end => #<Source::Range (string) 5...6>,
134
- # # :expression => #<Source::Range (string) 0...6>
135
- # # }
136
- #
137
- # @return [Hash<Symbol, Parser::Source::Range>]
138
- #
139
- def to_hash: () -> Hash[Symbol, Range]
140
-
141
- def with: () ?{ () -> untyped } -> untyped
142
-
143
- def update_expression: (untyped expression_l) -> untyped
144
- end
145
- end
146
- end
@@ -1,237 +0,0 @@
1
- module Parser
2
- module Source
3
- #
4
- # A range of characters in a particular source buffer.
5
- #
6
- # The range is always exclusive, i.e. a range with `begin_pos` of 3 and
7
- # `end_pos` of 5 will contain the following characters:
8
- #
9
- # example
10
- # ^^
11
- #
12
- # @!attribute [r] source_buffer
13
- # @return [Parser::Source::Buffer]
14
- #
15
- # @!attribute [r] begin_pos
16
- # @return [Integer] index of the first character in the range
17
- #
18
- # @!attribute [r] end_pos
19
- # @return [Integer] index of the character after the last character in the range
20
- #
21
- # @api public
22
- #
23
- class Range
24
- include Comparable
25
-
26
- attr_reader source_buffer: untyped
27
-
28
- attr_reader begin_pos: Integer
29
-
30
- attr_reader end_pos: Integer
31
-
32
- #
33
- # @param [Buffer] source_buffer
34
- # @param [Integer] begin_pos
35
- # @param [Integer] end_pos
36
- #
37
- def initialize: (untyped source_buffer, untyped begin_pos, untyped end_pos) -> void
38
-
39
- #
40
- # @return [Range] a zero-length range located just before the beginning
41
- # of this range.
42
- #
43
- def begin: () -> Range
44
-
45
- #
46
- # @return [Range] a zero-length range located just after the end
47
- # of this range.
48
- #
49
- def end: () -> Range
50
-
51
- #
52
- # @return [Integer] amount of characters included in this range.
53
- #
54
- def size: () -> Integer
55
-
56
- alias length size
57
-
58
- #
59
- # Line number of the beginning of this range. By default, the first line
60
- # of a buffer is 1; as such, line numbers are most commonly one-based.
61
- #
62
- # @see Buffer
63
- # @return [Integer] line number of the beginning of this range.
64
- #
65
- def line: () -> Integer
66
-
67
- alias first_line line
68
-
69
- #
70
- # @return [Integer] zero-based column number of the beginning of this range.
71
- #
72
- def column: () -> Integer
73
-
74
- #
75
- # @return [Integer] line number of the end of this range.
76
- #
77
- def last_line: () -> Integer
78
-
79
- #
80
- # @return [Integer] zero-based column number of the end of this range.
81
- #
82
- def last_column: () -> Integer
83
-
84
- #
85
- # @return [::Range] a range of columns spanned by this range.
86
- # @raise RangeError
87
- #
88
- def column_range: () -> ::Range[Integer]
89
-
90
- #
91
- # @return [String] a line of source code containing the beginning of this range.
92
- #
93
- def source_line: () -> String
94
-
95
- #
96
- # @return [String] all source code covered by this range.
97
- #
98
- def source: () -> String
99
-
100
- #
101
- # `is?` provides a concise way to compare the source corresponding to this range.
102
- # For example, `r.source == '(' || r.source == 'begin'` is equivalent to
103
- # `r.is?('(', 'begin')`.
104
- #
105
- def is?: (*untyped what) -> untyped
106
-
107
- #
108
- # @return [Array<Integer>] a set of character indexes contained in this range.
109
- #
110
- def to_a: () -> Array[Integer]
111
-
112
- #
113
- # @return [Range] a Ruby range with the same `begin_pos` and `end_pos`
114
- #
115
- def to_range: () -> ::Range[Integer]
116
-
117
- #
118
- # Composes a GNU/Clang-style string representation of the beginning of this
119
- # range.
120
- #
121
- # For example, for the following range in file `foo.rb`,
122
- #
123
- # def foo
124
- # ^^^
125
- #
126
- # `to_s` will return `foo.rb:1:5`.
127
- # Note that the column index is one-based.
128
- #
129
- # @return [String]
130
- #
131
- def to_s: () -> String
132
-
133
- #
134
- # @param [Hash] Endpoint(s) to change, any combination of :begin_pos or :end_pos
135
- # @return [Range] the same range as this range but with the given end point(s) changed
136
- # to the given value(s).
137
- #
138
- def with: (?begin_pos: untyped, ?end_pos: untyped) -> untyped
139
-
140
- #
141
- # @param [Hash] Endpoint(s) to change, any combination of :begin_pos or :end_pos
142
- # @return [Range] the same range as this range but with the given end point(s) adjusted
143
- # by the given amount(s)
144
- #
145
- def adjust: (?begin_pos: ::Integer, ?end_pos: ::Integer) -> untyped
146
-
147
- #
148
- # @param [Integer] new_size
149
- # @return [Range] a range beginning at the same point as this range and length `new_size`.
150
- #
151
- def resize: (untyped new_size) -> untyped
152
-
153
- #
154
- # @param [Range] other
155
- # @return [Range] smallest possible range spanning both this range and `other`.
156
- #
157
- def join: (untyped other) -> untyped
158
-
159
- #
160
- # @param [Range] other
161
- # @return [Range] overlapping region of this range and `other`, or `nil`
162
- # if they do not overlap
163
- #
164
- def intersect: (untyped other) -> (untyped | nil)
165
-
166
- #
167
- # Return `true` iff this range and `other` are disjoint.
168
- #
169
- # Two ranges must be one and only one of ==, disjoint?, contains?, contained? or crossing?
170
- #
171
- # @param [Range] other
172
- # @return [Boolean]
173
- #
174
- def disjoint?: (untyped other) -> untyped
175
-
176
- #
177
- # Return `true` iff this range is not disjoint from `other`.
178
- #
179
- # @param [Range] other
180
- # @return [Boolean] `true` if this range and `other` overlap
181
- #
182
- def overlaps?: (untyped other) -> untyped
183
-
184
- #
185
- # Returns true iff this range contains (strictly) `other`.
186
- #
187
- # Two ranges must be one and only one of ==, disjoint?, contains?, contained? or crossing?
188
- #
189
- # @param [Range] other
190
- # @return [Boolean]
191
- #
192
- def contains?: (untyped other) -> untyped
193
-
194
- #
195
- # Return `other.contains?(self)`
196
- #
197
- # Two ranges must be one and only one of ==, disjoint?, contains?, contained? or crossing?
198
- #
199
- # @param [Range] other
200
- # @return [Boolean]
201
- #
202
- def contained?: (untyped other) -> untyped
203
-
204
- #
205
- # Returns true iff both ranges intersect and also have different elements from one another.
206
- #
207
- # Two ranges must be one and only one of ==, disjoint?, contains?, contained? or crossing?
208
- #
209
- # @param [Range] other
210
- # @return [Boolean]
211
- #
212
- def crossing?: (untyped other) -> (false | untyped)
213
-
214
- #
215
- # Checks if a range is empty; if it contains no characters
216
- # @return [Boolean]
217
- def empty?: () -> untyped
218
-
219
- #
220
- # Compare ranges, first by begin_pos, then by end_pos.
221
- #
222
- def <=>: (untyped other) -> (nil | untyped)
223
-
224
- alias eql? ==
225
-
226
- #
227
- # Support for Ranges be used in as Hash indices and in Sets.
228
- #
229
- def hash: () -> untyped
230
-
231
- #
232
- # @return [String] a human-readable representation of this range.
233
- #
234
- def inspect: () -> ::String
235
- end
236
- end
237
- end
data/sig/shims/parser.rbs DELETED
@@ -1,69 +0,0 @@
1
- module Parser
2
- module AST
3
- class Node
4
- attr_reader type: Symbol
5
-
6
- attr_reader children: Array[untyped]
7
-
8
- def initialize: (Symbol `type`, ?Array[untyped] children, ?Hash[Symbol, untyped] properties) -> void
9
-
10
- def updated: (?Symbol?, ?Array[untyped]?, ?Hash[Symbol, untyped]? properties) -> Node
11
-
12
- attr_reader location: Source::Map
13
-
14
- alias loc location
15
- end
16
- end
17
-
18
- class Ruby31
19
- def initialize: (untyped builder) -> void
20
-
21
- def parse: (Source::Buffer) -> AST
22
-
23
- def parse_with_comments: (Source::Buffer) -> [AST::Node, Array[Source::Comment]]
24
-
25
- attr_reader diagnostics: untyped
26
- end
27
-
28
- class Ruby32
29
- def initialize: (untyped builder) -> void
30
-
31
- def parse: (Source::Buffer) -> AST
32
-
33
- def parse_with_comments: (Source::Buffer) -> [AST::Node, Array[Source::Comment]]
34
-
35
- attr_reader diagnostics: untyped
36
- end
37
-
38
- class Ruby33
39
- def initialize: (untyped builder) -> void
40
-
41
- def parse: (Source::Buffer) -> AST
42
-
43
- def parse_with_comments: (Source::Buffer) -> [AST::Node, Array[Source::Comment]]
44
-
45
- attr_reader diagnostics: untyped
46
- end
47
-
48
- module Source
49
- class Buffer
50
- def initialize: (String file, Integer lineno, source: String) -> void
51
- end
52
- end
53
-
54
- module Builders
55
- class Default
56
- attr_accessor self.emit_lambda: bool
57
- attr_accessor self.emit_procarg0: bool
58
- attr_accessor self.emit_kwargs: bool
59
- attr_accessor self.emit_forward_arg: bool
60
-
61
- def string_value: (untyped) -> untyped
62
-
63
- def value: (untyped) -> untyped
64
- end
65
- end
66
-
67
- class SyntaxError < StandardError
68
- end
69
- end
data/sig/shims/string.rbs DELETED
@@ -1,4 +0,0 @@
1
- class String
2
- def start_with?: (Regexp) -> bool
3
- | ...
4
- end
@@ -1,6 +0,0 @@
1
- module ActiveSupport::TaggedLogging
2
- def tagged: [A] (*String) { () -> A } -> A
3
- | ...
4
-
5
- def formatter: () -> Formatter
6
- end