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,15 +0,0 @@
1
- module Steep
2
- module PathHelper
3
- # Receives a String that represents a *file* URI and returns a Pathname
4
- #
5
- # Returns `nil` when the schema of given URI is not `file://`.
6
- #
7
- def self?.to_pathname: (String uri, ?dosish: bool) -> Pathname?
8
-
9
- def self?.to_pathname!: (String uri, ?dosish: bool) -> Pathname
10
-
11
- # Receives a Pathname and returns a *file* URI
12
- #
13
- def self?.to_uri: (Pathname | String path, ?dosish: bool) -> URI::File
14
- end
15
- end
@@ -1,108 +0,0 @@
1
- use Steep::Diagnostic::Ruby::template
2
-
3
- module Steep
4
- class Project
5
- class DSL
6
- class TargetDSL
7
- attr_reader name: Symbol
8
-
9
- attr_reader sources: Array[String]
10
-
11
- attr_reader libraries: Array[String]
12
-
13
- attr_reader signatures: Array[String]
14
-
15
- attr_reader ignored_sources: Array[String]
16
-
17
- attr_reader stdlib_root: Pathname?
18
-
19
- attr_reader core_root: Pathname?
20
-
21
- attr_reader repo_paths: Array[Pathname]
22
-
23
- attr_reader code_diagnostics_config: untyped
24
-
25
- attr_reader project: Project?
26
-
27
- # Attribute to keep track of collection configuration
28
- #
29
- # * `Pathname` means loading the configuration from the path
30
- # * `nil` means no configuration is given
31
- # * `false` means rbs-collection is disabled
32
- #
33
- attr_reader collection_config_path: Pathname | nil | false
34
-
35
- def project!: () -> Project
36
-
37
- def initialize: (Symbol name, ?sources: Array[String], ?libraries: Array[String], ?signatures: Array[String], ?ignored_sources: Array[String], ?repo_paths: Array[Pathname], ?code_diagnostics_config: ::Hash[untyped, untyped], ?project: Project?, ?collection_config_path: Pathname?) -> void
38
-
39
- def initialize_copy: (instance other) -> void
40
-
41
- def check: (*String args) -> void
42
-
43
- def ignore: (*String args) -> void
44
-
45
- def library: (*String args) -> void
46
-
47
- def typing_options: (?untyped level, **untyped hash) -> void
48
-
49
- def signature: (*String args) -> void
50
-
51
- def update: (?name: Symbol, ?sources: Array[String], ?libraries: Array[String], ?signatures: Array[String], ?ignored_sources: Array[String], ?project: Project?) -> TargetDSL
52
-
53
- def no_builtin!: (?bool value) -> void
54
-
55
- def vendor: (?::String dir, ?stdlib: untyped?, ?gems: untyped?) -> void
56
-
57
- def stdlib_path: (core_root: String, stdlib_root: String) -> void
58
-
59
- def repo_path: (*String paths) -> void
60
-
61
- # Configure the code diagnostics printing setup.
62
- #
63
- # Yields a hash, and the update the hash in the block.
64
- #
65
- # ```rb
66
- # D = Steep::Diagnostic
67
- #
68
- # configure_code_diagnostics do |hash|
69
- # # Assign one of :error, :warning, :information, :hint or :nil to error classes.
70
- # hash[D::Ruby::UnexpectedPositionalArgument] = :error
71
- # end
72
- # ```
73
- #
74
- # Passing a hash is also allowed.
75
- #
76
- # ```rb
77
- # D = Steep::Diagnostic
78
- #
79
- # configure_code_diagnostics(D::Ruby.lenient)
80
- # configure_code_diagnostics(D::Ruby.strict) do |config|
81
- # config[D::Ruby::NoMethod] = nil
82
- # end
83
- # ```
84
- #
85
- def configure_code_diagnostics: (template hash) ?{ (template) -> void }-> void
86
- | () { (template) -> void }-> void
87
-
88
- def collection_config: (Pathname path) -> void
89
-
90
- def disable_collection: () -> void
91
- end
92
-
93
- attr_reader project: Project
94
-
95
- @@templates: Hash[Symbol, TargetDSL]
96
-
97
- def self.templates: () -> Hash[Symbol, TargetDSL]
98
-
99
- def initialize: (project: Project) -> void
100
-
101
- def self.register_template: (Symbol name, TargetDSL target) -> void
102
-
103
- def self.parse: (Project project, String code, ?filename: String) -> void
104
-
105
- def target: (Symbol name, ?template: Symbol?) ?{ (TargetDSL) [self: TargetDSL] -> void } -> void
106
- end
107
- end
108
- end
@@ -1,47 +0,0 @@
1
- module Steep
2
- class Project
3
- class Options
4
- class PathOptions
5
- attr_reader core_root: Pathname?
6
-
7
- attr_reader stdlib_root: Pathname?
8
-
9
- attr_reader repo_paths: Array[Pathname]
10
-
11
- def initialize: (?core_root: Pathname?, ?stdlib_root: Pathname?, ?repo_paths: Array[Pathname]) -> void
12
-
13
- def customized_stdlib?: () -> bool
14
-
15
- def customized_core?: () -> bool
16
- end
17
-
18
- attr_reader libraries: Array[String]
19
-
20
- attr_accessor paths: PathOptions
21
-
22
- attr_accessor collection_config_path: Pathname?
23
-
24
- def initialize: () -> void
25
-
26
- # Returns path of lockfile
27
- %a{pure} def collection_lock_path: () -> Pathname?
28
-
29
- # Returns `Lockfile` instance if it can be loaded
30
- #
31
- %a{pure} def collection_lock: () -> RBS::Collection::Config::Lockfile?
32
-
33
- @collection_lock: RBS::Collection::Config::Lockfile | Pathname | YAML::SyntaxError | RBS::Collection::Config::CollectionNotAvailable | nil
34
-
35
- # Load collection configuration
36
- #
37
- # * Returns `Lockfile` instance if successfully loaded
38
- # * Returns `nil` if collection is disabled
39
- # * Returns `Pathname` if a file is missing
40
- # * Returns `YAML::SyntaxError` or `CollectionNotAvailable` if an error is raised
41
- #
42
- # It keeps the last result unless `force: true` is specified.
43
- #
44
- def load_collection_lock: (?force: bool) -> (RBS::Collection::Config::Lockfile | Pathname | YAML::SyntaxError | RBS::Collection::Config::CollectionNotAvailable | nil)
45
- end
46
- end
47
- end
@@ -1,47 +0,0 @@
1
- module Steep
2
- class Project
3
- # `Pattern` class represents a pair of *positive* and *negative* patterns that may match with a pathname
4
- #
5
- # ```rb
6
- # pat = Pattern.new(patterns: ["app/models"], ignores: ["app/models/account.rb"], ext: ".rbs")
7
- #
8
- # pat =~ "app/models/group.rb" # => true
9
- # pat =~ "app/models/account.rb" # => false
10
- # ```
11
- #
12
- # The pattern may be:
13
- #
14
- # 1. Directory name pattern -- `lib`, or
15
- # 2. *Glob* pattern -- `foo/**/bar.rb`
16
- #
17
- class Pattern
18
- # Positive patterns, which is tested with `fnmatch`
19
- attr_reader patterns: Array[String]
20
-
21
- # Negative patterns, which is tested with `fnmatch`
22
- attr_reader ignores: Array[String]
23
-
24
- # Positive *dir name* pattern constructed from `#patterns`, which is tested with `start_with?`
25
- attr_reader prefixes: Array[String]
26
-
27
- # Negative *dir name* pattern constructed from `#ignores`, which is tested with `start_with?`
28
- attr_reader ignore_prefixes: Array[String]
29
-
30
- attr_reader ext: String
31
-
32
- def initialize: (patterns: Array[String], ext: String, ?ignores: Array[String]) -> void
33
-
34
- # Returns `true` if given path matches to *positive* pattern, but doesn't match to *negative* pattern
35
- #
36
- def =~: (Pathname | String path) -> bool
37
-
38
- # Returns true if given `Pathname` matches to *positive* pattern
39
- def match?: (Pathname path) -> bool
40
-
41
- # Returns true if given `Pathname` matches to *negative* pattern
42
- def ignore?: (Pathname path) -> bool
43
-
44
- def test_string: (Pathname path, Array[String] patterns, Array[String] prefixes) -> bool
45
- end
46
- end
47
- end
@@ -1,25 +0,0 @@
1
- module Steep
2
- class Project
3
- class Target
4
- attr_reader name: Symbol
5
-
6
- attr_reader options: Options
7
-
8
- attr_reader source_pattern: Pattern
9
-
10
- attr_reader signature_pattern: Pattern
11
-
12
- attr_reader code_diagnostics_config: untyped
13
-
14
- def initialize: (name: Symbol, options: Options, source_pattern: Pattern, signature_pattern: Pattern, code_diagnostics_config: untyped) -> void
15
-
16
- def possible_source_file?: (Pathname path) -> bool
17
-
18
- def possible_signature_file?: (Pathname path) -> bool
19
-
20
- def new_env_loader: (project: Project) -> RBS::EnvironmentLoader
21
-
22
- def self.construct_env_loader: (options: Options, project: Project) -> RBS::EnvironmentLoader
23
- end
24
- end
25
- end
@@ -1,26 +0,0 @@
1
- module Steep
2
- class Project
3
- attr_reader targets: Array[Target]
4
-
5
- attr_reader steepfile_path: Pathname?
6
-
7
- attr_reader base_dir: Pathname
8
-
9
- def initialize: (steepfile_path: Pathname?, ?base_dir: Pathname?) -> void
10
-
11
- def relative_path: (Pathname path) -> Pathname
12
-
13
- def absolute_path: (Pathname path) -> Pathname
14
-
15
- def target_for_source_path: (Pathname path) -> Target?
16
-
17
- # Returns target or array of targets that *can* contain given path
18
- #
19
- # * `Target` will return if `path` is a source code
20
- # * `Array[Target]` will return if `path` is a signature
21
- #
22
- # `path` can be non-existent file.
23
- #
24
- def targets_for_path: (Pathname path) -> (Target | Array[Target] | nil)
25
- end
26
- end
@@ -1,7 +0,0 @@
1
- class RBS::Location[in RK, in OK]
2
- def as_lsp_range: () -> LanguageServer::Protocol::Interface::Range::json
3
- end
4
-
5
- class Parser::Source::Range
6
- def as_lsp_range: () -> LanguageServer::Protocol::Interface::Range::json
7
- end
@@ -1,49 +0,0 @@
1
- module Steep
2
- module Server
3
- class BaseWorker
4
- interface _Queue[A]
5
- def pop: () -> A?
6
-
7
- def <<: (A) -> A
8
-
9
- def close: () -> void
10
- end
11
-
12
- module LSP = LanguageServer::Protocol
13
-
14
- @skip_jobs_after_shutdown: bool
15
-
16
- @skip_job: bool
17
-
18
- @shutdown: bool
19
-
20
- attr_reader project: Project
21
-
22
- attr_reader reader: LanguageServer::Protocol::Transport::Io::Reader
23
-
24
- attr_reader writer: LanguageServer::Protocol::Transport::Io::Writer
25
-
26
- attr_reader queue: _Queue[untyped]
27
-
28
- class ShutdownJob
29
- attr_reader id: String
30
-
31
- def initialize: (id: String) -> void
32
- end
33
-
34
- def initialize: (project: Project, reader: LanguageServer::Protocol::Transport::Io::Reader, writer: LanguageServer::Protocol::Transport::Io::Writer) -> void
35
-
36
- def skip_jobs_after_shutdown!: (?bool flag) -> void
37
-
38
- def skip_jobs_after_shutdown?: () -> bool
39
-
40
- def skip_job?: () -> bool
41
-
42
- def handle_request: (untyped request) -> void
43
-
44
- def handle_job: (untyped job) -> void
45
-
46
- def run: () -> void
47
- end
48
- end
49
- end
@@ -1,38 +0,0 @@
1
- module Steep
2
- module Server
3
- module ChangeBuffer : _WithProject, _WithMutex
4
- interface _WithProject
5
- def project: () -> Project
6
- end
7
-
8
- interface _WithMutex
9
- def mutex: () -> Mutex
10
- end
11
-
12
- type changes = Hash[Pathname, Array[Services::ContentChange]]
13
-
14
- attr_reader buffered_changes: changes
15
-
16
- # Yields `buffered_changes` to modify with synchronization
17
- #
18
- def push_buffer: [A] () { (changes) -> A } -> A
19
-
20
- # Yields or returns a copy of `buffered_changes` after clearing `buffered_changes` content
21
- #
22
- def pop_buffer: [A] () { (changes) -> A } -> A
23
- | () -> changes
24
-
25
- # Load files from `project` to `buffered_changes`
26
- #
27
- def load_files: (project: Project, commandline_args: Array[String]) -> void
28
-
29
- # Load changes from a request with `DidChangeTextDocumentParams` into `buffered_changes`
30
- #
31
- def collect_changes: (untyped request) -> void
32
-
33
- # Reset the content of `uri` to `text`
34
- #
35
- def reset_change: (uri: String, text: String) -> void
36
- end
37
- end
38
- end
@@ -1,37 +0,0 @@
1
- module Steep
2
- module Server
3
- # DelayQueue provides a queue that delays running given job
4
- #
5
- # 1. The `delay` is specific to a DelayQueue instance, not job specific
6
- # 2. It executes only the last job
7
- #
8
- # ```ruby
9
- # queue = DelayQueue.new(delay: 0.5)
10
- # queue.execute { pp 1 }
11
- # queue.execute { pp 2 }
12
- # queue.execute { pp 3 }
13
- #
14
- # # => Will print only `3`, and the jobs printing `1` and `2` will be discarded
15
- # ```
16
- #
17
- # The job will run on `#thread`.
18
- #
19
- class DelayQueue
20
- attr_reader delay: Float
21
-
22
- attr_reader thread: Thread
23
-
24
- attr_reader queue: Thread::Queue
25
-
26
- attr_reader last_task: Proc
27
-
28
- def initialize: (delay: Float) -> void
29
-
30
- # The `#execute` method is not thread safe
31
- #
32
- # You should synchronize yourself if you want to call the method from multiple threads.
33
- #
34
- def execute: () { () -> void } -> void
35
- end
36
- end
37
- end
@@ -1,90 +0,0 @@
1
- use LanguageServer::Protocol::Transport::Io::*, Thread::Queue, RBS::AST::Comment
2
- use Steep::Services::CompletionProvider, Steep::Services::TypeNameCompletion
3
- use RBS::TypeName, RBS::Namespace
4
-
5
- module Steep
6
- module Server
7
- class InteractionWorker < BaseWorker
8
- include ChangeBuffer
9
-
10
- class ApplyChangeJob
11
- end
12
-
13
- class HoverJob
14
- attr_reader id: String
15
-
16
- attr_reader path: Pathname
17
-
18
- attr_reader line: Integer
19
-
20
- attr_reader column: Integer
21
-
22
- def initialize: (id: String, path: Pathname, line: Integer, column: Integer) -> void
23
- end
24
-
25
- class CompletionJob
26
- attr_reader id: String
27
-
28
- attr_reader path: Pathname
29
-
30
- attr_reader line: Integer
31
-
32
- attr_reader column: Integer
33
-
34
- attr_reader trigger: String
35
-
36
- def initialize: (id: String, path: Pathname, line: Integer, column: Integer, trigger: String) -> void
37
- end
38
-
39
- class SignatureHelpJob
40
- attr_reader id: String
41
-
42
- attr_reader path: Pathname
43
-
44
- attr_reader line: Integer
45
-
46
- attr_reader column: Integer
47
-
48
- def initialize: (id: String, path: Pathname, line: Integer, column: Integer) -> void
49
- end
50
-
51
- type job = ApplyChangeJob | HoverJob | CompletionJob | SignatureHelpJob
52
-
53
- module LSP = LanguageServer::Protocol
54
-
55
- @last_signature_help_line: Integer
56
-
57
- @last_signature_help_result: LanguageServer::Protocol::Interface::SignatureHelp
58
-
59
- attr_reader service: Services::TypeCheckService
60
-
61
- attr_reader mutex: Mutex
62
-
63
- def initialize: (project: Project, reader: Reader, writer: Writer, ?queue: Queue) -> void
64
-
65
- def handle_job: (job) -> void
66
-
67
- @last_job_mutex: Mutex
68
-
69
- @last_job: job?
70
-
71
- def process_latest_job: [T] (job) { () -> T } -> T?
72
-
73
- def queue_job: (job) -> void
74
-
75
- type lsp_request = { id: String, method: String, params: untyped }
76
-
77
- def handle_request: (lsp_request) -> void
78
-
79
- def process_hover: (HoverJob job) -> LanguageServer::Protocol::Interface::Hover?
80
-
81
- def process_completion: (CompletionJob job) -> LanguageServer::Protocol::Interface::CompletionList?
82
-
83
- def process_signature_help: (SignatureHelpJob) -> LanguageServer::Protocol::Interface::SignatureHelp?
84
-
85
- def format_completion_item_for_rbs: (Services::SignatureService, RBS::TypeName, CompletionJob job, String complete_text, Integer prefix_size) -> LanguageServer::Protocol::Interface::CompletionItem
86
-
87
- def format_completion_item: (CompletionProvider::item item) -> LanguageServer::Protocol::Interface::CompletionItem
88
- end
89
- end
90
- end
@@ -1,63 +0,0 @@
1
- use RBS::TypeName
2
-
3
- module Steep
4
- module Server
5
- # LSPFormatter translates hover content and completion item to markdown string
6
- #
7
- # The class has four main methods:
8
- #
9
- # * `markup_content` translates a string to `MarkupContent` object
10
- # * `format_hover_content` translates a hover content to Markdown string
11
- # * `format_completion_docs` translates a completion item to a documentation
12
- # * `format_rbs_competion_docs` generates docs for completion item of RBS
13
- #
14
- module LSPFormatter
15
- include Services
16
-
17
- module LSP = LanguageServer::Protocol
18
-
19
- # Translate given String to MarkupContent
20
- #
21
- def self?.markup_content: (String?) -> LanguageServer::Protocol::Interface::MarkupContent?
22
- | () { () -> String? } -> LanguageServer::Protocol::Interface::MarkupContent?
23
-
24
- # Translates a hover content to String
25
- #
26
- def self?.format_hover_content: (Services::HoverProvider::Ruby::content | Services::HoverProvider::RBS::content) -> String
27
-
28
- # Translates a completion item to String
29
- def self?.format_completion_docs: (Services::CompletionProvider::item) -> String
30
-
31
- # Translates a completion item for RBS to String
32
- def self?.format_rbs_completion_docs: (TypeName, summarizable_decl, Array[RBS::AST::Comment]) -> String
33
-
34
- def self?.format_comment: (RBS::AST::Comment?, ?header: String?) -> String?
35
- | (RBS::AST::Comment?, ?header: String?) { (String) -> void } -> void
36
-
37
- def self?.format_comments: (Array[[String, RBS::AST::Comment?]]) -> String
38
-
39
- def self?.local_variable: (Symbol, AST::Types::t) -> String
40
-
41
- def self?.instance_variable: (Symbol, AST::Types::t) -> String
42
-
43
- # Renders type application
44
- def self?.name_and_args: (TypeName name, Array[RBS::Types::t] args) -> String
45
-
46
- # Renders generic type definition
47
- def self?.name_and_params: (TypeName name, Array[RBS::AST::TypeParam] params) -> String
48
-
49
- type summarizable_decl = RBS::AST::Declarations::Class
50
- | RBS::AST::Declarations::Module
51
- | RBS::AST::Declarations::Interface
52
- | RBS::AST::Declarations::TypeAlias
53
- | RBS::AST::Declarations::ClassAlias
54
- | RBS::AST::Declarations::ModuleAlias
55
- | RBS::AST::Declarations::Global
56
- | RBS::AST::Declarations::Constant
57
-
58
- def self?.declaration_summary: (summarizable_decl) -> String
59
-
60
- def self?.format_method_item_doc: (Array[_ToS], Array[method_name], Hash[method_name, RBS::AST::Comment?], ?String footer) -> String
61
- end
62
- end
63
- end