steep 1.7.0.dev.4 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
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