steep 1.7.0.dev.4 → 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 (149) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +43 -0
  3. data/README.md +18 -0
  4. data/guides/src/gem-rbs-collection/gem-rbs-collection.md +7 -24
  5. data/lib/steep/rake_task.rb +132 -0
  6. data/lib/steep/type_construction.rb +1 -0
  7. data/lib/steep/version.rb +1 -1
  8. data/steep.gemspec +4 -1
  9. metadata +4 -143
  10. data/.github/dependabot.yml +0 -28
  11. data/.github/workflows/ruby-windows.yml +0 -35
  12. data/.github/workflows/ruby.yml +0 -32
  13. data/.vscode/steep-shared.code-snippets +0 -41
  14. data/Gemfile +0 -14
  15. data/Gemfile.lock +0 -104
  16. data/Gemfile.steep +0 -0
  17. data/gemfile_steep/Gemfile +0 -3
  18. data/gemfile_steep/Gemfile.lock +0 -77
  19. data/rbs_collection.steep.lock.yaml +0 -108
  20. data/rbs_collection.steep.yaml +0 -23
  21. data/sig/shims/bundler.rbs +0 -3
  22. data/sig/shims/concurrent-ruby.rbs +0 -39
  23. data/sig/shims/exception.rbs +0 -4
  24. data/sig/shims/language-server_protocol.rbs +0 -450
  25. data/sig/shims/parser/comment.rbs +0 -33
  26. data/sig/shims/parser/nodes.rbs +0 -252
  27. data/sig/shims/parser/source/map.rbs +0 -146
  28. data/sig/shims/parser/source/range.rbs +0 -237
  29. data/sig/shims/parser.rbs +0 -69
  30. data/sig/shims/string.rbs +0 -4
  31. data/sig/shims/tagged_logging.rbs +0 -6
  32. data/sig/shims/yaml.rbs +0 -4
  33. data/sig/steep/annotation_parser.rbs +0 -60
  34. data/sig/steep/ast/annotation/collection.rbs +0 -78
  35. data/sig/steep/ast/annotation.rbs +0 -121
  36. data/sig/steep/ast/builtin.rbs +0 -69
  37. data/sig/steep/ast/ignore.rbs +0 -66
  38. data/sig/steep/ast/node/type_application.rbs +0 -31
  39. data/sig/steep/ast/node/type_assertion.rbs +0 -32
  40. data/sig/steep/ast/types/any.rbs +0 -29
  41. data/sig/steep/ast/types/boolean.rbs +0 -31
  42. data/sig/steep/ast/types/bot.rbs +0 -29
  43. data/sig/steep/ast/types/class.rbs +0 -33
  44. data/sig/steep/ast/types/factory.rbs +0 -110
  45. data/sig/steep/ast/types/helper.rbs +0 -24
  46. data/sig/steep/ast/types/instance.rbs +0 -33
  47. data/sig/steep/ast/types/intersection.rbs +0 -40
  48. data/sig/steep/ast/types/literal.rbs +0 -35
  49. data/sig/steep/ast/types/logic.rbs +0 -83
  50. data/sig/steep/ast/types/name.rbs +0 -84
  51. data/sig/steep/ast/types/nil.rbs +0 -31
  52. data/sig/steep/ast/types/proc.rbs +0 -53
  53. data/sig/steep/ast/types/record.rbs +0 -39
  54. data/sig/steep/ast/types/self.rbs +0 -33
  55. data/sig/steep/ast/types/top.rbs +0 -29
  56. data/sig/steep/ast/types/tuple.rbs +0 -37
  57. data/sig/steep/ast/types/union.rbs +0 -40
  58. data/sig/steep/ast/types/var.rbs +0 -42
  59. data/sig/steep/ast/types/void.rbs +0 -29
  60. data/sig/steep/ast/types.rbs +0 -16
  61. data/sig/steep/cli.rbs +0 -55
  62. data/sig/steep/diagnostic/deprecated/else_on_exhaustive_case.rbs +0 -13
  63. data/sig/steep/diagnostic/deprecated/unknown_constant_assigned.rbs +0 -15
  64. data/sig/steep/diagnostic/helper.rbs +0 -15
  65. data/sig/steep/diagnostic/lsp_formatter.rbs +0 -36
  66. data/sig/steep/diagnostic/ruby.rbs +0 -703
  67. data/sig/steep/diagnostic/signature.rbs +0 -252
  68. data/sig/steep/drivers/annotations.rbs +0 -17
  69. data/sig/steep/drivers/check.rbs +0 -33
  70. data/sig/steep/drivers/checkfile.rbs +0 -27
  71. data/sig/steep/drivers/diagnostic_printer.rbs +0 -25
  72. data/sig/steep/drivers/init.rbs +0 -19
  73. data/sig/steep/drivers/langserver.rbs +0 -36
  74. data/sig/steep/drivers/print_project.rbs +0 -15
  75. data/sig/steep/drivers/stats.rbs +0 -47
  76. data/sig/steep/drivers/utils/driver_helper.rbs +0 -25
  77. data/sig/steep/drivers/utils/jobs_option.rbs +0 -19
  78. data/sig/steep/drivers/validate.rbs +0 -15
  79. data/sig/steep/drivers/vendor.rbs +0 -19
  80. data/sig/steep/drivers/watch.rbs +0 -27
  81. data/sig/steep/drivers/worker.rbs +0 -29
  82. data/sig/steep/equatable.rbs +0 -11
  83. data/sig/steep/expectations.rbs +0 -72
  84. data/sig/steep/index/rbs_index.rbs +0 -141
  85. data/sig/steep/index/signature_symbol_provider.rbs +0 -41
  86. data/sig/steep/index/source_index.rbs +0 -63
  87. data/sig/steep/interface/block.rbs +0 -41
  88. data/sig/steep/interface/builder.rbs +0 -111
  89. data/sig/steep/interface/function.rbs +0 -271
  90. data/sig/steep/interface/method_type.rbs +0 -105
  91. data/sig/steep/interface/shape.rbs +0 -80
  92. data/sig/steep/interface/substitution.rbs +0 -51
  93. data/sig/steep/interface/type_param.rbs +0 -43
  94. data/sig/steep/method_name.rbs +0 -30
  95. data/sig/steep/module_helper.rbs +0 -16
  96. data/sig/steep/node_helper.rbs +0 -91
  97. data/sig/steep/path_helper.rbs +0 -15
  98. data/sig/steep/project/dsl.rbs +0 -108
  99. data/sig/steep/project/options.rbs +0 -47
  100. data/sig/steep/project/pattern.rbs +0 -47
  101. data/sig/steep/project/target.rbs +0 -25
  102. data/sig/steep/project.rbs +0 -26
  103. data/sig/steep/range_extension.rbs +0 -7
  104. data/sig/steep/server/base_worker.rbs +0 -49
  105. data/sig/steep/server/change_buffer.rbs +0 -38
  106. data/sig/steep/server/delay_queue.rbs +0 -37
  107. data/sig/steep/server/interaction_worker.rbs +0 -90
  108. data/sig/steep/server/lsp_formatter.rbs +0 -63
  109. data/sig/steep/server/master.rbs +0 -299
  110. data/sig/steep/server/type_check_worker.rbs +0 -141
  111. data/sig/steep/server/worker_process.rbs +0 -97
  112. data/sig/steep/services/completion_provider.rbs +0 -264
  113. data/sig/steep/services/content_change.rbs +0 -37
  114. data/sig/steep/services/file_loader.rbs +0 -21
  115. data/sig/steep/services/goto_service.rbs +0 -106
  116. data/sig/steep/services/hover_provider/rbs.rbs +0 -47
  117. data/sig/steep/services/hover_provider/ruby.rbs +0 -127
  118. data/sig/steep/services/hover_provider/singleton_methods.rbs +0 -11
  119. data/sig/steep/services/path_assignment.rbs +0 -21
  120. data/sig/steep/services/signature_help_provider.rbs +0 -51
  121. data/sig/steep/services/signature_service.rbs +0 -156
  122. data/sig/steep/services/stats_calculator.rbs +0 -41
  123. data/sig/steep/services/type_check_service.rbs +0 -112
  124. data/sig/steep/services/type_name_completion.rbs +0 -135
  125. data/sig/steep/signature/validator.rbs +0 -85
  126. data/sig/steep/source/ignore_ranges.rbs +0 -38
  127. data/sig/steep/source.rbs +0 -105
  128. data/sig/steep/subtyping/cache.rbs +0 -17
  129. data/sig/steep/subtyping/check.rbs +0 -131
  130. data/sig/steep/subtyping/constraints.rbs +0 -111
  131. data/sig/steep/subtyping/relation.rbs +0 -63
  132. data/sig/steep/subtyping/result.rbs +0 -179
  133. data/sig/steep/subtyping/variable_variance.rbs +0 -25
  134. data/sig/steep/thread_waiter.rbs +0 -13
  135. data/sig/steep/type_construction.rbs +0 -542
  136. data/sig/steep/type_inference/block_params.rbs +0 -170
  137. data/sig/steep/type_inference/case_when.rbs +0 -130
  138. data/sig/steep/type_inference/constant_env.rbs +0 -29
  139. data/sig/steep/type_inference/context.rbs +0 -216
  140. data/sig/steep/type_inference/context_array.rbs +0 -38
  141. data/sig/steep/type_inference/logic_type_interpreter.rbs +0 -108
  142. data/sig/steep/type_inference/method_call.rbs +0 -124
  143. data/sig/steep/type_inference/method_params.rbs +0 -127
  144. data/sig/steep/type_inference/multiple_assignment.rbs +0 -76
  145. data/sig/steep/type_inference/send_args.rbs +0 -243
  146. data/sig/steep/type_inference/type_env.rbs +0 -160
  147. data/sig/steep/type_inference/type_env_builder.rbs +0 -81
  148. data/sig/steep/typing.rbs +0 -75
  149. data/sig/steep.rbs +0 -45
@@ -1,299 +0,0 @@
1
- module Steep
2
- module Server
3
- class Master
4
- module LSP = LanguageServer::Protocol
5
-
6
- class TypeCheckRequest
7
- attr_reader guid: String
8
-
9
- attr_reader library_paths: Set[Pathname]
10
-
11
- attr_reader signature_paths: Set[Pathname]
12
-
13
- attr_reader code_paths: Set[Pathname]
14
-
15
- attr_reader priority_paths: Set[Pathname]
16
-
17
- attr_reader checked_paths: Set[Pathname]
18
-
19
- def initialize: (guid: String) -> void
20
-
21
- def uri: (Pathname path) -> URI::File
22
-
23
- def as_json: (assignment: Services::PathAssignment) -> { guid: String, library_uris: Array[String], signature_uris: Array[String], code_uris: Array[String], priority_uris: Array[String] }
24
-
25
- def total: () -> Integer
26
-
27
- def percentage: () -> Integer
28
-
29
- def all_paths: () -> Set[Pathname]
30
-
31
- def checking_path?: (Pathname path) -> bool
32
-
33
- def checked: (Pathname path) -> void
34
-
35
- def finished?: () -> bool
36
-
37
- def unchecked_paths: () -> Set[Pathname]
38
-
39
- def unchecked_code_paths: () -> Set[Pathname]
40
-
41
- def unchecked_library_paths: () -> Set[Pathname]
42
-
43
- def unchecked_signature_paths: () -> Set[Pathname]
44
- end
45
-
46
- # TypeCheckController remembers changed files, keep track of open editors, and make a TypeCheckRequest that contains list of all files to be type checked
47
- #
48
- # ```rb
49
- # controller = TypeCheckController.new(project: project)
50
- #
51
- # controller.push_changes(file_path) # Remember that the path is changed
52
- # controller.update_priority(open: file_path) # Remember that an editor opens the path
53
- # controller.make_request(...) # Make an instance of TypeCheckRequest that contains list of all paths to type check
54
- # ```
55
- class TypeCheckController
56
- attr_reader project: Project
57
-
58
- attr_reader priority_paths: Set[Pathname]
59
-
60
- attr_reader changed_paths: Set[Pathname]
61
-
62
- attr_reader target_paths: Array[TargetPaths]
63
-
64
- # TargetPaths object keeps track of the expanded absolute paths of each target
65
- #
66
- # 1. *Library path* is a RBS file that is loaded as a part of a library
67
- # 2. *Signature path* is a RBS file that is loaded as a part of the application library
68
- # 3. *Code path* is a Ruby file that is being type checked
69
- #
70
- class TargetPaths
71
- attr_reader project: Project
72
-
73
- attr_reader target: Project::Target
74
-
75
- # Set of absolute paths of Ruby code
76
- #
77
- attr_reader code_paths: Set[Pathname]
78
-
79
- # Set of absolute paths of app signatures
80
- #
81
- attr_reader signature_paths: Set[Pathname]
82
-
83
- # Set of absolute paths of library signatures
84
- #
85
- # Unlike `code_paths` and `signature_paths`, the `library_paths` must be added explicitly not by `#add` method.
86
- #
87
- attr_reader library_paths: Set[Pathname]
88
-
89
- def initialize: (project: Project, target: Project::Target) -> void
90
-
91
- def all_paths: () -> Set[Pathname]
92
-
93
- def library_path?: (Pathname path) -> bool
94
-
95
- def signature_path?: (Pathname path) -> bool
96
-
97
- def code_path?: (Pathname path) -> bool
98
-
99
- # Adds `path` to the object
100
- #
101
- # Returns `false` if the path is not a part of the project.
102
- #
103
- # Whether `path` is a code path or signature path is automatically detected.
104
- # `library: true` is required to add the path to library path.
105
- #
106
- def add: (Pathname path, ?library: bool) -> bool
107
-
108
- alias << add
109
- end
110
-
111
- def initialize: (project: Project) -> void
112
-
113
- def load: (command_line_args: Array[String]) -> void
114
-
115
- def push_changes: (Pathname path) -> void
116
-
117
- def update_priority: (open: Pathname) -> void
118
- | (close: Pathname) -> void
119
-
120
- def make_request: (?guid: String, ?last_request: TypeCheckRequest?, ?include_unchanged: bool) -> TypeCheckRequest?
121
- end
122
-
123
- type lsp_notification = { method: String, params: untyped }
124
-
125
- type lsp_request = { id: String, method: String, params: untyped }
126
-
127
- type lsp_response = { id: String, result: untyped }
128
-
129
- type lsp_message = { method: String, id: String?, params: untyped?, result: untyped? }
130
-
131
- class ResultHandler
132
- attr_reader request: lsp_request
133
-
134
- attr_reader completion_handler: (^(lsp_response) -> void)?
135
-
136
- attr_reader response: lsp_response?
137
-
138
- @completed: bool
139
-
140
- def initialize: (request: untyped) -> void
141
-
142
- def process_response: (lsp_response message) -> bool
143
-
144
- def result: () -> untyped
145
-
146
- def completed?: () -> bool
147
-
148
- def on_completion: () ?{ (lsp_response) -> void } -> void
149
- end
150
-
151
- class GroupHandler
152
- attr_reader request: lsp_request
153
-
154
- attr_reader handlers: Hash[String, ResultHandler]
155
-
156
- attr_reader completion_handler: (^(Array[ResultHandler]) -> void)?
157
-
158
- def initialize: () -> void
159
-
160
- def process_response: (lsp_response message) -> bool
161
-
162
- def completed?: () -> bool
163
-
164
- def <<: (ResultHandler handler) -> void
165
-
166
- def on_completion: () { (Array[ResultHandler]) -> void } -> void
167
- end
168
-
169
- class ResultController
170
- attr_reader handlers: Array[ResultHandler | GroupHandler]
171
-
172
- def initialize: () -> void
173
-
174
- def <<: (ResultHandler | GroupHandler handler) -> void
175
-
176
- def request_group: () { (GroupHandler) -> void } -> GroupHandler
177
-
178
- def process_response: (lsp_response message) -> bool
179
- end
180
-
181
- module MessageUtils : _WithMessage
182
- interface _WithMessage
183
- def message: () -> untyped
184
- end
185
-
186
- def request?: () -> bool
187
-
188
- def notification?: () -> bool
189
-
190
- def response?: () -> bool
191
-
192
- %a{pure} def method: () -> String?
193
-
194
- %a{pure} def id: () -> String?
195
-
196
- %a{pure} def result: () -> untyped?
197
-
198
- %a{pure} def params: () -> untyped?
199
- end
200
-
201
- class ReceiveMessageJob
202
- attr_reader source: WorkerProcess | :client
203
-
204
- attr_reader message: untyped
205
-
206
- def initialize: (source: WorkerProcess | :client, message: untyped) -> void
207
-
208
- include MessageUtils
209
- end
210
-
211
- class SendMessageJob
212
- attr_reader dest: WorkerProcess | :client
213
-
214
- attr_reader message: untyped
215
-
216
- def initialize: (dest: WorkerProcess | :client, message: untyped) -> void
217
-
218
- def self.to_worker: (WorkerProcess, message: untyped) -> SendMessageJob
219
-
220
- def self.to_client: (message: untyped) -> SendMessageJob
221
-
222
- include MessageUtils
223
- end
224
-
225
- attr_reader project: Project
226
-
227
- attr_reader reader: LanguageServer::Protocol::Transport::Io::Reader
228
-
229
- attr_reader writer: LanguageServer::Protocol::Transport::Io::Writer
230
-
231
- attr_reader commandline_args: Array[String]
232
-
233
- attr_reader interaction_worker: WorkerProcess?
234
-
235
- attr_reader typecheck_workers: Array[WorkerProcess]
236
-
237
- attr_reader job_queue: Thread::Queue
238
-
239
- attr_reader current_type_check_request: TypeCheckRequest?
240
-
241
- attr_reader controller: TypeCheckController
242
-
243
- attr_reader result_controller: ResultController
244
-
245
- attr_reader initialize_params: untyped
246
-
247
- attr_accessor typecheck_automatically: bool
248
-
249
- attr_reader start_type_checking_queue: DelayQueue
250
-
251
- def initialize: (project: Project, reader: untyped, writer: untyped, interaction_worker: WorkerProcess?, typecheck_workers: Array[WorkerProcess], ?queue: Thread::Queue) -> void
252
-
253
- # Start the Steep language server
254
- #
255
- # Returns after the language server shutdown.
256
- # The shutdown process starts by `exit` message.
257
- #
258
- # Raises an exception if the worker processes doesn't shutdown properly, like being `#kill`-ed.
259
- # Exiting the process is assumed in the case of error.
260
- # The only one cleanup it does is stopping the worker processes, by `SIGKILL`.
261
- #
262
- def start: () -> void
263
-
264
- # Stops the language server workers by sending SIGTERM
265
- #
266
- # This skips the normal shutdown process defined in LSP.
267
- # The `#start` call will result in an exception.
268
- #
269
- def kill: () -> void
270
-
271
- def each_worker: () { (WorkerProcess) -> void } -> void
272
- | () -> Enumerator[WorkerProcess, void]
273
-
274
- def pathname: (String uri) -> Pathname?
275
-
276
- def work_done_progress_supported?: () -> bool
277
-
278
- def file_system_watcher_supported?: () -> bool
279
-
280
- def process_message_from_client: (untyped message) -> void
281
-
282
- def process_message_from_worker: (untyped message, worker: WorkerProcess) -> void
283
-
284
- def start_type_check: (TypeCheckRequest request, last_request: TypeCheckRequest?, start_progress: bool) -> void
285
-
286
- def on_type_check_update: (guid: String, path: Pathname) -> void
287
-
288
- def broadcast_notification: (lsp_notification message) -> void
289
-
290
- def send_notification: (lsp_notification message, worker: WorkerProcess) -> void
291
-
292
- def fresh_request_id: () -> String
293
-
294
- def send_request: (method: String, worker: WorkerProcess, ?id: String, ?params: untyped?) ?{ (ResultHandler) -> void } -> ResultHandler
295
-
296
- def group_request: () { (GroupHandler) -> void } -> GroupHandler
297
- end
298
- end
299
- end
@@ -1,141 +0,0 @@
1
- use Steep::Services::*, LanguageServer::Protocol as LSP
2
-
3
- module Steep
4
- module Server
5
- # TypeCheckWorker provides two features:
6
- #
7
- # 1. Type check and validate source code invoked by `$/typecheck/start` notification
8
- # 2. Language related features: `workspace/symbol`, `textDocument/definition`, `textDocument/implementation`, and `steep/stats` command
9
- #
10
- # `$/typecheck/start` notification is delivered to `#enqueue_typecheck_jobs` command that creates *jobs*.
11
- #
12
- # * `StartTypeCheckJob` applies the pending changes
13
- # * `ValidateAppSignatureJob` validates an *application* RBS file
14
- # * `ValidateLibrarySignatureJob` validates a *library* RBS file
15
- # * `TypeCheckCodeJob` type checks a ruby code
16
- #
17
- class TypeCheckWorker < BaseWorker
18
- attr_reader project: Project
19
-
20
- attr_reader assignment: PathAssignment
21
-
22
- attr_reader service: TypeCheckService
23
-
24
- attr_reader commandline_args: Array[String]
25
-
26
- attr_reader current_type_check_guid: String?
27
-
28
- class WorkspaceSymbolJob
29
- attr_reader id: String
30
-
31
- attr_reader query: String
32
-
33
- def initialize: (id: String, query: String) -> void
34
- end
35
-
36
- class StatsJob
37
- attr_reader id: String
38
-
39
- def initialize: (id: String) -> void
40
- end
41
-
42
- class StartTypeCheckJob
43
- attr_reader guid: String
44
-
45
- attr_reader changes: ChangeBuffer::changes
46
-
47
- def initialize: (guid: String, changes: ChangeBuffer::changes) -> void
48
- end
49
-
50
- class TypeCheckCodeJob
51
- attr_reader guid: String
52
-
53
- attr_reader path: Pathname
54
-
55
- def initialize: (guid: String, path: Pathname) -> void
56
- end
57
-
58
- class ValidateAppSignatureJob
59
- attr_reader guid: String
60
-
61
- attr_reader path: Pathname
62
-
63
- def initialize: (guid: String, path: Pathname) -> void
64
- end
65
-
66
- class ValidateLibrarySignatureJob
67
- attr_reader guid: String
68
-
69
- attr_reader path: Pathname
70
-
71
- def initialize: (guid: String, path: Pathname) -> void
72
- end
73
-
74
- class GotoJob
75
- type kind = :implementation | :definition | :type_definition
76
-
77
- attr_reader id: String
78
-
79
- attr_reader kind: kind
80
-
81
- type params = Hash[Symbol, untyped]
82
-
83
- attr_reader params: params
84
-
85
- def initialize: (id: String, params: params, kind: kind) -> void
86
-
87
- def self.implementation: (id: String, params: params) -> GotoJob
88
-
89
- def self.definition: (id: String, params: params) -> GotoJob
90
-
91
- def self.type_definition: (id: String, params: params) -> GotoJob
92
-
93
- def implementation?: () -> bool
94
-
95
- def definition?: () -> bool
96
-
97
- def type_definition?: () -> bool
98
- end
99
-
100
- include ChangeBuffer
101
-
102
- def initialize: (
103
- project: Project,
104
- reader: LSP::Transport::Io::Reader,
105
- writer: LSP::Transport::Io::Writer,
106
- assignment: PathAssignment,
107
- commandline_args: Array[String]
108
- ) -> void
109
-
110
- def handle_request: (untyped request) -> void
111
-
112
- type type_check_start_params = {
113
- guid: String,
114
- priority_uris: Array[String],
115
- library_uris: Array[String],
116
- signature_uris: Array[String],
117
- code_uris: Array[String]
118
- }
119
-
120
- def enqueue_typecheck_jobs: (type_check_start_params) -> void
121
-
122
- type job = WorkspaceSymbolJob
123
- | StartTypeCheckJob
124
- | TypeCheckCodeJob
125
- | ValidateAppSignatureJob
126
- | ValidateLibrarySignatureJob
127
- | GotoJob
128
- | StatsJob
129
-
130
- def handle_job: (job) -> void
131
-
132
- def typecheck_progress: (guid: String, path: Pathname) -> void
133
-
134
- def workspace_symbol_result: (untyped query) -> untyped
135
-
136
- def stats_result: () -> untyped
137
-
138
- def goto: (GotoJob job) -> Array[untyped]
139
- end
140
- end
141
- end
@@ -1,97 +0,0 @@
1
- use LanguageServer::Protocol as LSP
2
-
3
- module Steep
4
- module Server
5
- # WorkerProcess class represents a worker process
6
- #
7
- # Available operations are:
8
- #
9
- # 1. Sending a LSP message to the process
10
- # 2. Receiving a LSP message from the process
11
- # 3. Killing the process
12
- #
13
- # The process may be invoked by
14
- #
15
- # 1. `#fork` if available, or
16
- # 2. `#spawn` otherwise
17
- #
18
- # `#fork` version is faster because it skips loading libraries.
19
- #
20
- #
21
- class WorkerProcess
22
- interface _ProcessWaitThread
23
- def pid: () -> Integer
24
- end
25
-
26
- attr_reader reader: LSP::Transport::Io::Reader
27
-
28
- attr_reader writer: LSP::Transport::Io::Writer
29
-
30
- attr_reader stderr: IO?
31
-
32
- attr_reader name: String
33
-
34
- attr_reader wait_thread: Thread & _ProcessWaitThread
35
-
36
- attr_reader index: Integer?
37
-
38
- def initialize: (
39
- reader: LSP::Transport::Io::Reader,
40
- writer: LSP::Transport::Io::Writer,
41
- stderr: IO?,
42
- wait_thread: Thread & _ProcessWaitThread,
43
- name: String,
44
- ?index: Integer?
45
- ) -> void
46
-
47
- type worker_type = :interaction | :typecheck
48
-
49
- def self.start_worker: (
50
- worker_type `type`,
51
- name: String,
52
- steepfile: Pathname?,
53
- steep_command: String?,
54
- ?patterns: Array[String],
55
- ?delay_shutdown: bool,
56
- ?index: [Integer, Integer]?
57
- ) -> WorkerProcess
58
-
59
- def self.fork_worker: (
60
- worker_type `type`,
61
- name: String,
62
- steepfile: Pathname?,
63
- patterns: Array[String],
64
- delay_shutdown: bool,
65
- index: [Integer, Integer]?
66
- ) -> WorkerProcess
67
-
68
- def self.spawn_worker: (
69
- worker_type `type`,
70
- name: String,
71
- steepfile: Pathname?,
72
- steep_command: ::String,
73
- patterns: Array[String],
74
- delay_shutdown: bool,
75
- index: [Integer, Integer]?
76
- ) -> WorkerProcess
77
-
78
- def self.start_typecheck_workers: (
79
- steepfile: Pathname?,
80
- args: Array[String],
81
- steep_command: ::String?,
82
- ?count: Integer,
83
- ?delay_shutdown: bool
84
- ) -> Array[WorkerProcess]
85
-
86
- def <<: (untyped message) -> void
87
-
88
- def read: () { (untyped) -> void } -> void
89
-
90
- # Stop the process by sending SIGTERM and wait for the process exit
91
- #
92
- # Send `SIGKILL` and returns immediately if `force:` is `true`.
93
- #
94
- def kill: (?force: bool) -> void
95
- end
96
- end
97
- end