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,264 +0,0 @@
1
- use RBS::Environment, RBS::TypeName
2
- use Steep::TypeInference::MethodCall
3
-
4
- module Steep
5
- module Services
6
- class CompletionProvider
7
- include NodeHelper
8
-
9
- # Cursor position
10
- class Position
11
- attr_reader line: Integer
12
-
13
- attr_reader column: Integer
14
-
15
- def initialize: (line: Integer, column: Integer) -> void
16
-
17
- def -: (Integer) -> Position
18
- end
19
-
20
- class Range
21
- attr_reader start: Position
22
-
23
- attr_reader end: Position
24
-
25
- def initialize: (start: Position, end: Position) -> void
26
- end
27
-
28
- class InstanceVariableItem
29
- attr_reader identifier: Symbol
30
-
31
- attr_reader range: Range
32
-
33
- attr_reader type: AST::Types::t
34
-
35
- def initialize: (identifier: Symbol, range: Range, type: AST::Types::t) -> void
36
- end
37
-
38
- class KeywordArgumentItem
39
- attr_reader identifier: String
40
-
41
- attr_reader range: Range
42
-
43
- def initialize: (identifier: String, range: Range) -> void
44
- end
45
-
46
- class LocalVariableItem
47
- attr_reader identifier: Symbol
48
-
49
- attr_reader range: Range
50
-
51
- attr_reader type: AST::Types::t
52
-
53
- def initialize: (identifier: Symbol, range: Range, type: AST::Types::t) -> void
54
- end
55
-
56
- class ConstantItem
57
- attr_reader env: Environment
58
-
59
- attr_reader identifier: Symbol
60
-
61
- attr_reader range: Range
62
-
63
- attr_reader type: AST::Types::t
64
-
65
- attr_reader full_name: TypeName
66
-
67
- def initialize: (env: Environment, identifier: Symbol, range: Range, type: AST::Types::t, full_name: TypeName) -> void
68
-
69
- def class?: () -> bool
70
-
71
- def module?: () -> bool
72
-
73
- def comments: () -> Array[RBS::AST::Comment?]
74
-
75
- type const_decl = RBS::AST::Declarations::Constant
76
- | RBS::AST::Declarations::Class
77
- | RBS::AST::Declarations::Module
78
- | RBS::AST::Declarations::ClassAlias
79
- | RBS::AST::Declarations::ModuleAlias
80
-
81
- def decl: () -> const_decl
82
- end
83
-
84
- # Method name completion item with *simple* receiver type
85
- #
86
- # Instance type, Singleton type, Interface type is simple.
87
- # The item may have multiple overloads, but must have single method definition source.
88
- #
89
- class SimpleMethodNameItem
90
- attr_reader identifier: Symbol
91
-
92
- attr_reader range: Range
93
-
94
- attr_reader receiver_type: AST::Types::Name::Instance | AST::Types::Name::Interface | AST::Types::Name::Singleton
95
-
96
- attr_reader method_types: Array[RBS::MethodType]
97
-
98
- attr_reader method_name: method_name
99
-
100
- attr_reader method_member: RBS::Definition::Method::method_member
101
-
102
- def initialize: (
103
- identifier: Symbol,
104
- range: Range,
105
- receiver_type: AST::Types::Name::Instance | AST::Types::Name::Interface | AST::Types::Name::Singleton,
106
- method_name: method_name,
107
- method_types: Array[RBS::MethodType],
108
- method_member: RBS::Definition::Method::method_member
109
- ) -> void
110
-
111
- %a{pure} def comment: () -> RBS::AST::Comment?
112
- end
113
-
114
- # Method name completion item with *complex* receiver type
115
- #
116
- # The item may have multiple overloads and multiple method declarations.
117
- #
118
- class ComplexMethodNameItem
119
- attr_reader identifier: Symbol
120
-
121
- attr_reader range: Range
122
-
123
- attr_reader reeiver_type: AST::Types::t
124
-
125
- attr_reader method_types: Array[RBS::MethodType]
126
-
127
- attr_reader method_decls: Array[MethodCall::MethodDecl]
128
-
129
- def initialize: (
130
- identifier: Symbol,
131
- range: Range,
132
- method_types: Array[RBS::MethodType],
133
- method_decls: Array[MethodCall::MethodDecl],
134
- receiver_type: AST::Types::t
135
- ) -> void
136
-
137
- def method_names: () -> Array[method_name]
138
-
139
- def method_definitions: () -> Hash[method_name, RBS::Definition::Method::method_member]
140
-
141
- def defining_method_name: (TypeName, Symbol name, RBS::Definition::Method::method_member) -> method_name
142
- end
143
-
144
- # Method name completion item for generated methods, like `#first` in tuple types
145
- #
146
- # The generated methods doesn't have associated `MethodDecl`.
147
- #
148
- class GeneratedMethodNameItem
149
- attr_reader identifier: Symbol
150
-
151
- attr_reader range: Range
152
-
153
- attr_reader reeiver_type: AST::Types::t
154
-
155
- attr_reader method_types: Array[RBS::MethodType]
156
-
157
- def initialize: (
158
- identifier: Symbol,
159
- range: Range,
160
- receiver_type: AST::Types::t,
161
- method_types: Array[RBS::MethodType]
162
- ) -> void
163
- end
164
-
165
- class TypeNameItem
166
- attr_reader env: Environment
167
-
168
- attr_reader absolute_type_name: TypeName
169
-
170
- attr_reader relative_type_name: TypeName
171
-
172
- attr_reader range: Range
173
-
174
- def initialize: (absolute_type_name: TypeName, relative_type_name: TypeName, env: Environment, range: Range) -> void
175
-
176
- def decl: () -> Server::LSPFormatter::summarizable_decl
177
-
178
- def comments: () -> Array[RBS::AST::Comment]
179
- end
180
-
181
- class TextItem
182
- attr_reader label: String
183
-
184
- attr_reader text: String
185
-
186
- attr_reader help_text: String?
187
-
188
- attr_reader range: Range
189
-
190
- def initialize: (text: String, help_text: String?, range: Range, label: String) -> void
191
- end
192
-
193
- type item = InstanceVariableItem
194
- | KeywordArgumentItem
195
- | LocalVariableItem
196
- | ConstantItem
197
- | SimpleMethodNameItem
198
- | ComplexMethodNameItem
199
- | GeneratedMethodNameItem
200
- | TypeNameItem
201
- | TextItem
202
-
203
- attr_reader source_text: String
204
-
205
- attr_reader path: Pathname
206
-
207
- attr_reader subtyping: Subtyping::Check
208
-
209
- attr_reader modified_text: String
210
-
211
- attr_reader source: Source
212
-
213
- attr_reader typing: Typing
214
-
215
- def initialize: (source_text: String, path: Pathname, subtyping: Subtyping::Check) -> void
216
-
217
- def type_check!: (String text, line: Integer, column: Integer) -> void
218
-
219
- def env: () -> Environment
220
-
221
- def run: (line: Integer, column: Integer) -> Array[item]
222
-
223
- def range_from_loc: (Parser::Source::Range loc) -> Range
224
-
225
- def at_comment?: (Position pos) -> Parser::Source::Comment?
226
-
227
- def at_end?: (Position pos, of: Parser::Source::Map | Parser::Source::Range | nil) -> boolish
228
-
229
- def range_for: (Position position, ?prefix: ::String) -> Range
230
-
231
- def items_for_trigger: (position: Position) -> Array[item]
232
-
233
- def items_for_dot: (position: Position) -> Array[item]
234
-
235
- def items_for_qcall: (position: Position) -> Array[item]
236
-
237
- def items_for_colon2: (position: Position) -> Array[item]
238
-
239
- def items_for_atmark: (position: Position) -> Array[item]
240
-
241
- def items_for_rbs: (position: Position, buffer: RBS::Buffer) -> Array[item]
242
-
243
- def items_for_following_keyword_arguments: (String text, index: Integer, line: Integer, column: Integer, items: Array[item]) -> void
244
-
245
- def method_items_for_receiver_type: (AST::Types::t, include_private: bool, prefix: String, position: Position, items: Array[item]) -> void
246
-
247
- def word_name?: (String name) -> bool
248
-
249
- def local_variable_items_for_context: (TypeInference::Context context, position: Position, prefix: String, items: Array[item]) -> void
250
-
251
- def constant_items_for_context: (TypeInference::Context context, position: Position, prefix: String, items: Array[item], ?parent: Parser::AST::Node?) -> void
252
-
253
- def instance_variable_items_for_context: (TypeInference::Context context, position: Position, prefix: String, items: Array[item]) -> void
254
-
255
- def keyword_argument_items_for_method: (call_node: Parser::AST::Node, send_node: Parser::AST::Node, position: Position, prefix: String, items: Array[item]) -> void
256
-
257
- def index_for: (String, line: Integer, column: Integer) -> Integer
258
-
259
- def disallowed_method?: (Symbol name) -> bool
260
-
261
- def unwrap_optional: (AST::Types::t) -> AST::Types::t
262
- end
263
- end
264
- end
@@ -1,37 +0,0 @@
1
- module Steep
2
- module Services
3
- class ContentChange
4
- class Position
5
- attr_reader line: Integer
6
-
7
- attr_reader column: Integer
8
-
9
- def initialize: (line: Integer, column: Integer) -> void
10
-
11
- def ==: (untyped other) -> bool
12
-
13
- alias eql? ==
14
-
15
- def hash: () -> Integer
16
- end
17
-
18
- type range = [Position, Position]
19
-
20
- attr_reader range: range?
21
-
22
- attr_reader text: String
23
-
24
- def initialize: (text: String, ?range: range?) -> void
25
-
26
- def ==: (untyped other) -> bool
27
-
28
- alias eql? ==
29
-
30
- def hash: () -> Integer
31
-
32
- def self.string: (String) -> ContentChange
33
-
34
- def apply_to: (String text) -> String
35
- end
36
- end
37
- end
@@ -1,21 +0,0 @@
1
- module Steep
2
- module Services
3
- class FileLoader
4
- attr_reader base_dir: Pathname
5
-
6
- def initialize: (base_dir: Pathname) -> void
7
-
8
- # Yields relative paths included in `pattern` from `base_dir`
9
- #
10
- def each_path_in_patterns: (Project::Pattern pattern, ?Array[String] commandline_patterns) { (Pathname) -> void } -> void
11
- | (Project::Pattern pattern, ?Array[String] commandline_patterns) -> Enumerator[Pathname, void]
12
-
13
- # Returns changes that represents loading files from file system merged with ones given as `changes:`
14
- #
15
- # ```
16
- # changes = loader.load_changes(target.pattern, command_line_patterns, changes: changes_from_editor)
17
- # ```
18
- def load_changes: (Project::Pattern pattern, ?Array[String] command_line_patterns, changes: Hash[Pathname, Array[ContentChange]]) -> Hash[Pathname, Array[ContentChange]]
19
- end
20
- end
21
- end
@@ -1,106 +0,0 @@
1
- use RBS::TypeName, RBS::Location
2
-
3
- module Steep
4
- module Services
5
- class GotoService
6
- include ModuleHelper
7
-
8
- # Where the query is issued from
9
- #
10
- # * `:ruby` if the query is issued from a Ruby code
11
- # * `:rbs` if the query is issued from a RBS file
12
- #
13
- type from = :ruby | :rbs
14
-
15
- module SourceHelper : _From
16
- interface _From
17
- def from: () -> from
18
- end
19
-
20
- def from_ruby?: () -> bool
21
-
22
- def from_rbs?: () -> bool
23
- end
24
-
25
- # Query a constant
26
- #
27
- class ConstantQuery
28
- include SourceHelper
29
-
30
- attr_reader name: TypeName
31
-
32
- # Where the query is issued from
33
- attr_reader from: from
34
-
35
- def initialize: (name: TypeName, from: from) -> void
36
- end
37
-
38
- # Query a method
39
- #
40
- class MethodQuery
41
- include SourceHelper
42
-
43
- attr_reader name: method_name
44
-
45
- # Where the query is issued from
46
- attr_reader from: from
47
-
48
- def initialize: (name: method_name, from: from) -> void
49
- end
50
-
51
- # Query a type name
52
- #
53
- #
54
- #
55
- class TypeNameQuery
56
- attr_reader name: TypeName
57
-
58
- def initialize: (name: TypeName) -> void
59
- end
60
-
61
- type query = ConstantQuery | MethodQuery | TypeNameQuery
62
-
63
- type loc = Location[bot, bot] | Parser::Source::Range
64
-
65
- attr_reader type_check: TypeCheckService
66
-
67
- attr_reader assignment: PathAssignment
68
-
69
- def initialize: (type_check: TypeCheckService, assignment: PathAssignment) -> void
70
-
71
- def project: () -> Project
72
-
73
- # Returns array of locations that is a response to a *Go to implementation* request
74
- #
75
- def implementation: (path: Pathname, line: Integer, column: Integer) -> Array[loc]
76
-
77
- # Returns array of locations that is a response to a *Go to definition* request
78
- #
79
- def definition: (path: Pathname, line: Integer, column: Integer) -> Array[loc]
80
-
81
- # Returns array of locations that is a response to a *Go to type-definition* request
82
- #
83
- def type_definition: (path: Pathname, line: Integer, column: Integer) -> Array[loc]
84
-
85
- private
86
-
87
- # Returns a set of queries
88
- def query_at: (path: Pathname, line: Integer, column: Integer) -> Array[query]
89
-
90
- def each_type_name: (AST::Types::t) { (TypeName) -> void } -> void
91
- | (AST::Types::t) -> Enumerator[TypeName, void]
92
-
93
- def test_ast_location: (Parser::Source::Range loc, line: Integer, column: Integer) -> bool
94
-
95
- def type_check_path: (target: Project::Target, path: Pathname, content: String, line: Integer, column: Integer) -> [Typing, SignatureService]?
96
-
97
- def constant_definition_in_rbs: (TypeName name, locations: Array[loc]) -> Array[loc]
98
-
99
- def constant_definition_in_ruby: (TypeName name, locations: Array[loc]) -> Array[loc]
100
-
101
- def method_locations: (method_name, in_ruby: bool, in_rbs: bool, locations: Array[loc]) -> Array[loc]
102
-
103
- def type_name_locations: (TypeName name, ?locations: Array[loc]) -> Array[loc]
104
- end
105
- end
106
- end
@@ -1,47 +0,0 @@
1
- use RBS::Location, RBS::AST::Declarations, RBS::AST::Directives, RBS::TypeName, RBS::Environment
2
-
3
- module Steep
4
- module Services
5
- module HoverProvider
6
- class RBS
7
- class TypeAliasContent
8
- attr_reader location: Location[untyped, untyped]
9
-
10
- attr_reader decl: Declarations::TypeAlias
11
-
12
- def initialize: (location: Location[untyped, untyped], decl: Declarations::TypeAlias) -> void
13
- end
14
-
15
- class ClassContent
16
- attr_reader location: Location[untyped, untyped]
17
-
18
- type decl = Declarations::Class | Declarations::Module | Declarations::ClassAlias | Declarations::ModuleAlias
19
-
20
- attr_reader decl: decl
21
-
22
- def initialize: (location: Location[untyped, untyped], decl: decl) -> void
23
- end
24
-
25
- class InterfaceContent
26
- attr_reader location: Location[untyped, untyped]
27
-
28
- attr_reader decl: Declarations::Interface
29
-
30
- def initialize: (location: Location[untyped, untyped], decl: Declarations::Interface) -> void
31
- end
32
-
33
- type content = TypeAliasContent | ClassContent | InterfaceContent
34
-
35
- attr_reader service: TypeCheckService
36
-
37
- def initialize: (service: TypeCheckService) -> void
38
-
39
- def project: () -> Project
40
-
41
- def content_for: (target: Project::Target, path: Pathname, line: Integer, column: Integer) -> content?
42
-
43
- def content_for_type_name: (TypeName, env: Environment, location: Location[untyped, untyped]) -> content?
44
- end
45
- end
46
- end
47
- end
@@ -1,127 +0,0 @@
1
- module Steep
2
- module Services
3
- module HoverProvider
4
- class Ruby
5
- class TypeContent
6
- attr_reader node: Parser::AST::Node
7
-
8
- attr_reader type: AST::Types::t
9
-
10
- attr_reader location: Parser::Source::Range
11
-
12
- def initialize: (node: Parser::AST::Node, type: AST::Types::t, location: Parser::Source::Range) -> void
13
- end
14
-
15
- # Hover content for a local variable, references or assignments
16
- #
17
- # ```ruby
18
- # a = 123
19
- # # ^^^^ Hover popups
20
- # # ^ Location covers
21
- #
22
- # a + 1
23
- # # ^ Hover popups
24
- # # ^ Location covers
25
- # ```
26
- class VariableContent
27
- attr_reader node: Parser::AST::Node
28
-
29
- attr_reader name: Symbol
30
-
31
- attr_reader type: AST::Types::t
32
-
33
- attr_reader location: Parser::Source::Range
34
-
35
- def initialize: (node: Parser::AST::Node, name: Symbol, type: AST::Types::t, location: Parser::Source::Range) -> void
36
- end
37
-
38
- class TypeAssertionContent
39
- attr_reader node: Parser::AST::Node
40
-
41
- attr_reader original_type: AST::Types::t
42
-
43
- attr_reader asserted_type: AST::Types::t
44
-
45
- attr_reader location: Parser::Source::Range
46
-
47
- def initialize: (node: Parser::AST::Node, original_type: AST::Types::t, asserted_type: AST::Types::t, location: Parser::Source::Range) -> void
48
- end
49
-
50
- class MethodCallContent
51
- attr_reader node: Parser::AST::Node
52
-
53
- type call = TypeInference::MethodCall::Typed | TypeInference::MethodCall::Special | TypeInference::MethodCall::Error
54
-
55
- attr_reader method_call: call
56
-
57
- attr_reader location: Parser::Source::Range
58
-
59
- def initialize: (node: Parser::AST::Node, method_call: TypeInference::MethodCall::t, location: Parser::Source::Range) -> void
60
- end
61
-
62
- class DefinitionContent
63
- attr_reader node: Parser::AST::Node
64
-
65
- attr_reader method_name: method_name
66
-
67
- attr_reader method_type: Interface::MethodType
68
-
69
- attr_reader definition: ::RBS::Definition::Method
70
-
71
- attr_reader location: Parser::Source::Range
72
-
73
- def initialize: (node: Parser::AST::Node, method_name: method_name, method_type: Interface::MethodType, definition: ::RBS::Definition::Method, location: Parser::Source::Range) -> void
74
- end
75
-
76
- class ConstantContent
77
- attr_reader location: Parser::Source::Range
78
-
79
- attr_reader full_name: ::RBS::TypeName
80
-
81
- attr_reader type: AST::Types::t
82
-
83
- type decl = ::RBS::Environment::ClassEntry
84
- | ::RBS::Environment::ModuleEntry
85
- | ::RBS::Environment::ClassAliasEntry
86
- | ::RBS::Environment::ModuleAliasEntry
87
- | ::RBS::Environment::ConstantEntry
88
-
89
- attr_reader decl: decl
90
-
91
- attr_reader class_decl(): ::RBS::Environment::ClassEntry | ::RBS::Environment::ModuleEntry | nil
92
-
93
- attr_reader class_alias(): ::RBS::Environment::ClassAliasEntry | ::RBS::Environment::ModuleAliasEntry | nil
94
-
95
- attr_reader constant_decl(): ::RBS::Environment::ConstantEntry?
96
-
97
- def initialize: (location: Parser::Source::Range, full_name: ::RBS::TypeName, type: AST::Types::t, decl: decl) -> void
98
-
99
- def comments: () -> Array[::RBS::AST::Comment]
100
-
101
- # Returns true if `decl` is a class/module definition
102
- def class_or_module?: () -> bool
103
-
104
- # Returns true if `decl` is a constant definition
105
- def constant?: () -> bool
106
- end
107
-
108
- type content = TypeContent | VariableContent | MethodCallContent | DefinitionContent | ConstantContent | TypeAssertionContent
109
-
110
- attr_reader service: TypeCheckService
111
-
112
- def initialize: (service: TypeCheckService) -> void
113
-
114
- def project: () -> Project
115
-
116
- def method_definition_for: (AST::Types::Factory factory, ::RBS::TypeName type_name, singleton_method: Symbol) -> ::RBS::Definition::Method
117
- | (AST::Types::Factory factory, ::RBS::TypeName type_name, instance_method: Symbol) -> ::RBS::Definition::Method
118
-
119
- def typecheck: (Project::Target target, path: Pathname, content: String, line: Integer, column: Integer) -> Typing?
120
-
121
- def method_name_from_method: (TypeInference::Context::MethodContext context, builder: ::RBS::DefinitionBuilder) -> method_name
122
-
123
- def content_for: (target: Project::Target, path: Pathname, line: Integer, column: Integer) -> content?
124
- end
125
- end
126
- end
127
- end
@@ -1,11 +0,0 @@
1
- module Steep
2
- module Services
3
- module HoverProvider
4
- module SingletonMethods
5
- def content_for: (service: TypeCheckService, path: Pathname, line: Integer, column: Integer) -> (Ruby::content | RBS::content | nil)
6
- end
7
-
8
- extend SingletonMethods
9
- end
10
- end
11
- end
@@ -1,21 +0,0 @@
1
- module Steep
2
- module Services
3
- class PathAssignment
4
- attr_reader index: Integer
5
-
6
- attr_reader max_index: Integer
7
-
8
- attr_reader cache: Hash[Pathname, Integer]
9
-
10
- def initialize: (index: Integer, max_index: Integer) -> void
11
-
12
- def self.all: () -> PathAssignment
13
-
14
- def =~: (Pathname path) -> bool
15
-
16
- alias === =~
17
-
18
- def self.index_for: (path: String, max_index: Integer) -> Integer
19
- end
20
- end
21
- end
@@ -1,51 +0,0 @@
1
- use RBS::Environment
2
-
3
- module Steep
4
- module Services
5
- class SignatureHelpProvider
6
- module MethodCall = TypeInference::MethodCall
7
-
8
- class Item
9
- attr_reader method_type: RBS::MethodType
10
-
11
- attr_reader comment: RBS::AST::Comment?
12
-
13
- attr_reader active_parameter: Integer?
14
-
15
- def initialize: (RBS::MethodType, RBS::AST::Comment?, Integer?) -> void
16
-
17
- def parameters: () -> Array[String]
18
- end
19
-
20
- include Steep::NodeHelper
21
-
22
- attr_reader source: Source
23
-
24
- attr_reader path: Pathname
25
-
26
- attr_reader subtyping: Subtyping::Check
27
-
28
- attr_reader buffer: RBS::Buffer
29
-
30
- def env: () -> Environment
31
-
32
- def initialize: (source: Source, subtyping: Subtyping::Check) -> void
33
-
34
- # 1-origin line, 0-origin column
35
- #
36
- def run: (line: Integer, column: Integer) -> [Array[Item], Integer?]?
37
-
38
- private
39
-
40
- def active_parameter_for: (RBS::MethodType?, Array[Parser::AST::Node], Array[Parser::AST::Node]?, Parser::AST::Node) -> Integer?
41
-
42
- def arguments_for: (RBS::MethodType) -> Array[String]
43
-
44
- def last_argument_nodes_for: (argument_nodes: Array[Parser::AST::Node], line: Integer, column: Integer) -> Array[Parser::AST::Node]?
45
-
46
- def signature_help_for: (Parser::AST::Node, Array[Parser::AST::Node], Array[Parser::AST::Node]?, Typing) -> [Array[Item], Integer?]?
47
-
48
- def type_check!: (line: Integer, column: Integer) -> Typing
49
- end
50
- end
51
- end