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,156 +0,0 @@
1
- module Steep
2
- module Services
3
- # SignatureService takes care of two sets of RBS files.
4
- #
5
- # 1. RBS files loaded from `EnvironmentLoader` -- usually type signatures of libraries
6
- # 2. RBS files managed in editors -- usually type signatures of the development target (app or gem)
7
- #
8
- # The files in #2 are managed throuth `#status` and the changes are tracked.
9
- #
10
- class SignatureService
11
- type status = SyntaxErrorStatus | AncestorErrorStatus | LoadedStatus
12
-
13
- attr_reader status: status
14
-
15
- class SyntaxErrorStatus
16
- attr_reader files: Hash[Pathname, FileStatus]
17
-
18
- attr_reader changed_paths: Set[Pathname]
19
-
20
- attr_reader diagnostics: Array[Diagnostic::Signature::Base]
21
-
22
- attr_reader last_builder: RBS::DefinitionBuilder
23
-
24
- @rbs_index: Index::RBSIndex?
25
-
26
- @constant_resolver: RBS::Resolver::ConstantResolver?
27
-
28
- def initialize: (files: Hash[Pathname, FileStatus], changed_paths: Set[Pathname], diagnostics: Array[Diagnostic::Signature::Base], last_builder: RBS::DefinitionBuilder) -> void
29
-
30
- def rbs_index: () -> Index::RBSIndex
31
-
32
- def constant_resolver: () -> RBS::Resolver::ConstantResolver
33
- end
34
-
35
- class AncestorErrorStatus
36
- attr_reader files: Hash[Pathname, FileStatus]
37
-
38
- attr_reader changed_paths: Set[Pathname]
39
-
40
- attr_reader diagnostics: Array[Diagnostic::Signature::Base]
41
-
42
- attr_reader last_builder: RBS::DefinitionBuilder
43
-
44
- @rbs_index: Index::RBSIndex?
45
-
46
- @constant_resolver: RBS::Resolver::ConstantResolver?
47
-
48
- def initialize: (files: Hash[Pathname, FileStatus], changed_paths: Set[Pathname], diagnostics: Array[Diagnostic::Signature::Base], last_builder: RBS::DefinitionBuilder) -> void
49
-
50
- def rbs_index: () -> Index::RBSIndex
51
-
52
- def constant_resolver: () -> RBS::Resolver::ConstantResolver
53
- end
54
-
55
- class LoadedStatus
56
- attr_reader files: Hash[Pathname, FileStatus]
57
-
58
- attr_reader builder: RBS::DefinitionBuilder
59
-
60
- @rbs_index: Index::RBSIndex?
61
-
62
- @subtyping: Subtyping::Check?
63
-
64
- @constant_resolver: RBS::Resolver::ConstantResolver?
65
-
66
- def initialize: (files: Hash[Pathname, FileStatus], builder: RBS::DefinitionBuilder) -> void
67
-
68
- def subtyping: () -> Subtyping::Check
69
-
70
- def rbs_index: () -> Index::RBSIndex
71
-
72
- def constant_resolver: () -> RBS::Resolver::ConstantResolver
73
- end
74
-
75
- # A file has one of the three states:
76
- #
77
- # 1. The parsing succeeded and loaded a list of declarations
78
- # 2. The content has a syntax error and parsing failed
79
- # 3. Other unexpected error
80
- #
81
- class FileStatus
82
- attr_reader path: Pathname
83
-
84
- attr_reader content: String
85
-
86
- type signature = [RBS::Buffer, Array[RBS::AST::Directives::t], Array[RBS::AST::Declarations::t]]
87
-
88
- attr_reader signature: signature | Diagnostic::Signature::UnexpectedError | RBS::ParsingError
89
-
90
- def initialize: (
91
- path: Pathname,
92
- content: String,
93
- signature: signature | Diagnostic::Signature::UnexpectedError | RBS::ParsingError
94
- ) -> void
95
- end
96
-
97
- def initialize: (env: RBS::Environment) -> void
98
-
99
- def self.load_from: (RBS::EnvironmentLoader loader) -> SignatureService
100
-
101
- @env_rbs_paths: Set[Pathname]?
102
-
103
- # All RBS paths in environment, both dependency RBS and target RBS
104
- #
105
- def env_rbs_paths: () -> Set[Pathname]
106
-
107
- # Yield all RBS paths in the environment, both dependency RBS and target RBS
108
- #
109
- def each_rbs_path: () { (Pathname) -> void } -> void
110
- | () -> Enumerator[Pathname, void]
111
-
112
- # The Target files
113
- #
114
- def files: () -> Hash[Pathname, FileStatus]
115
-
116
- def pending_changed_paths: () -> Set[Pathname]
117
-
118
- def latest_env: () -> RBS::Environment
119
-
120
- def latest_builder: () -> RBS::DefinitionBuilder
121
-
122
- def latest_rbs_index: () -> Index::RBSIndex
123
-
124
- def latest_constant_resolver: () -> RBS::Resolver::ConstantResolver
125
-
126
- def current_subtyping: () -> Subtyping::Check?
127
-
128
- def apply_changes: (Hash[Pathname, FileStatus] files, Server::ChangeBuffer::changes changes) -> Hash[Pathname, FileStatus]
129
-
130
- # The entry point to apply the edit to the signatures
131
- #
132
- def update: (Server::ChangeBuffer::changes changes) -> void
133
-
134
- def update_env: (
135
- Hash[Pathname, FileStatus] updated_files,
136
- paths: Set[Pathname]
137
- ) -> (RBS::DefinitionBuilder::AncestorBuilder | Array[Diagnostic::Signature::Base])
138
-
139
- def rescue_rbs_error: (Array[RBS::BaseError] errors) { () -> void } -> void
140
-
141
- def update_builder: (ancestor_builder: RBS::DefinitionBuilder::AncestorBuilder, paths: Set[Pathname]) -> RBS::DefinitionBuilder
142
-
143
- def type_names: (paths: Set[Pathname], env: RBS::Environment) -> Set[RBS::TypeName]
144
-
145
- def const_decls: (paths: Set[Pathname], env: RBS::Environment) -> Hash[RBS::TypeName, RBS::Environment::SingleEntry[RBS::TypeName, RBS::AST::Declarations::Constant]]
146
-
147
- def global_decls: (paths: Set[Pathname], ?env: RBS::Environment) -> Hash[Symbol, RBS::Environment::SingleEntry[Symbol, RBS::AST::Declarations::Global]]
148
-
149
- def type_name_from_decl: (RBS::AST::Declarations::t decl, set: Set[RBS::TypeName]) -> void
150
-
151
- def add_descendants: (graph: RBS::AncestorGraph, names: Set[RBS::TypeName], set: Set[RBS::TypeName]) -> void
152
-
153
- def add_nested_decls: (env: RBS::Environment, names: Set[RBS::TypeName], set: Set[RBS::TypeName]) -> void
154
- end
155
- end
156
- end
@@ -1,41 +0,0 @@
1
- module Steep
2
- module Services
3
- class StatsCalculator
4
- class SuccessStats
5
- attr_reader target: Project::Target
6
-
7
- attr_reader path: Pathname
8
-
9
- attr_reader typed_calls_count: Integer
10
-
11
- attr_reader untyped_calls_count: Integer
12
-
13
- attr_reader error_calls_count: Integer
14
-
15
- def initialize: (target: Project::Target, path: Pathname, typed_calls_count: Integer, untyped_calls_count: Integer, error_calls_count: Integer) -> void
16
-
17
- def as_json: () -> Hash[Symbol, untyped]
18
- end
19
-
20
- class ErrorStats
21
- attr_reader target: Project::Target
22
-
23
- attr_reader path: Pathname
24
-
25
- def initialize: (target: Project::Target, path: Pathname) -> void
26
-
27
- def as_json: () -> Hash[Symbol, untyped]
28
- end
29
-
30
- type stats = SuccessStats | ErrorStats
31
-
32
- attr_reader service: TypeCheckService
33
-
34
- def initialize: (service: TypeCheckService) -> void
35
-
36
- def project: () -> Project
37
-
38
- def calc_stats: (Project::Target target, file: TypeCheckService::SourceFile) -> stats
39
- end
40
- end
41
- end
@@ -1,112 +0,0 @@
1
- module Steep
2
- module Services
3
- class TypeCheckService
4
- attr_reader project: Project
5
-
6
- attr_reader signature_validation_diagnostics: Hash[Symbol, Hash[Pathname, Array[Diagnostic::Signature::Base]]]
7
-
8
- attr_reader source_files: Hash[Pathname, SourceFile]
9
-
10
- attr_reader signature_services: Hash[Symbol, SignatureService]
11
-
12
- class SourceFile
13
- attr_reader path: Pathname
14
-
15
- attr_reader target: Project::Target
16
-
17
- attr_reader content: String
18
-
19
- attr_reader node: Parser::AST::Node | nil | false
20
-
21
- attr_reader typing: Typing?
22
-
23
- attr_reader ignores: Source::IgnoreRanges?
24
-
25
- attr_reader errors: Array[Diagnostic::Ruby::Base]?
26
-
27
- def initialize: (
28
- path: Pathname,
29
- node: Parser::AST::Node | nil | false,
30
- content: String,
31
- typing: Typing?,
32
- ignores: Source::IgnoreRanges?,
33
- errors: Array[Diagnostic::Ruby::Base]?
34
- ) -> void
35
-
36
- def self.with_syntax_error: (path: Pathname, content: String, error: Diagnostic::Ruby::SyntaxError) -> SourceFile
37
-
38
- def self.with_typing: (path: Pathname, content: String, typing: Typing, ignores: Source::IgnoreRanges, node: Parser::AST::Node?) -> SourceFile
39
-
40
- def self.no_data: (path: Pathname, content: String) -> SourceFile
41
-
42
- def update_content: (String content) -> SourceFile
43
-
44
- # Diagnostics filgered by `ignores`
45
- #
46
- def diagnostics: () -> Array[Diagnostic::Ruby::Base]
47
- end
48
-
49
- class TargetRequest
50
- attr_reader target: Project::Target
51
-
52
- attr_reader source_paths: Set[Pathname]
53
-
54
- @signature_updated: bool
55
-
56
- def initialize: (target: Project::Target) -> void
57
-
58
- def signature_updated!: (?bool value) -> self
59
-
60
- def signature_updated?: () -> bool
61
-
62
- def empty?: () -> bool
63
-
64
- def ==: (untyped other) -> bool
65
-
66
- alias eql? ==
67
-
68
- def hash: () -> Integer
69
- end
70
-
71
- def initialize: (project: Project) -> void
72
-
73
- def signature_diagnostics: () -> Hash[Pathname, Array[Diagnostic::Signature::Base]]
74
-
75
- def has_diagnostics?: () -> bool
76
-
77
- def diagnostics: () -> Hash[Pathname, Array[Diagnostic::Ruby::Base | Diagnostic::Signature::Base]]
78
-
79
- def each_diagnostics: () { ([Pathname, Array[Diagnostic::Ruby::Base] | Array[Diagnostic::Signature::Base]]) -> void } -> void
80
- | () -> Enumerator[[Pathname, Array[Diagnostic::Ruby::Base] | Array[Diagnostic::Signature::Base]], void]
81
-
82
- def update: (changes: Server::ChangeBuffer::changes) -> Hash[Project::Target, TargetRequest]
83
-
84
- def update_and_check: (
85
- changes: Server::ChangeBuffer::changes,
86
- assignment: PathAssignment
87
- ) {
88
- ([Pathname, Array[Diagnostic::Signature::Base] | Array[Diagnostic::Ruby::Base]]) -> void
89
- } -> void
90
-
91
- def validate_signature: (path: Pathname) { ([Pathname, Array[Diagnostic::Signature::Base]]) -> void } -> void
92
-
93
- def typecheck_source: (path: Pathname, ?target: Project::Target?) { ([Pathname, Array[Diagnostic::Ruby::Base]]) -> void } -> void
94
-
95
- def update_signature: (changes: Server::ChangeBuffer::changes, requests: Hash[Project::Target, TargetRequest]) -> void
96
-
97
- def update_sources: (changes: Server::ChangeBuffer::changes, requests: Hash[Project::Target, TargetRequest]) -> void
98
-
99
- def type_check_file: (target: Project::Target, subtyping: Subtyping::Check, path: Pathname, text: String) { () -> RBS::Resolver::ConstantResolver } -> SourceFile
100
-
101
- def self.type_check: (source: Source, subtyping: Subtyping::Check, constant_resolver: RBS::Resolver::ConstantResolver) -> Typing
102
-
103
- def source_file?: (Pathname path) -> Project::Target?
104
-
105
- def signature_file?: (Pathname path) -> Array[Symbol]?
106
-
107
- def app_signature_file?: (Pathname path) -> Array[Symbol]?
108
-
109
- def lib_signature_file?: (Pathname path) -> bool
110
- end
111
- end
112
- end
@@ -1,135 +0,0 @@
1
- use RBS::TypeName, RBS::Namespace, RBS::Environment, RBS::Resolver, RBS::AST::Directives
2
-
3
- module Steep
4
- module Services
5
- class TypeNameCompletion
6
- module Prefix
7
- type t = nil # no prefix
8
- | RawIdentPrefix
9
- | NamespacedIdentPrefix
10
- | NamespacePrefix
11
-
12
- # Uident or Lident is given, but no `::` (==namespace)
13
- #
14
- # ```
15
- # Str← Uident
16
- # c← Lident
17
- # ```
18
- #
19
- class RawIdentPrefix
20
- attr_reader ident: String
21
-
22
- # Returns true if the `ident` is a Ruby class name
23
- #
24
- def const_name?: () -> bool
25
-
26
- def initialize: (String ident) -> void
27
-
28
- def size: () -> Integer
29
- end
30
-
31
- # Uident or Lident following a namespace
32
- #
33
- # ```
34
- # ::L← Uident
35
- # RBS::Enviro← Uident
36
- # ```
37
- #
38
- class NamespacedIdentPrefix
39
- attr_reader namespace: Namespace
40
-
41
- attr_reader ident: String
42
-
43
- def const_name?: () -> bool
44
-
45
- def initialize: (Namespace, String ident, Integer size) -> void
46
-
47
- def size: () -> Integer
48
- end
49
-
50
- # Namespace is given
51
- #
52
- # ```
53
- # RBS::←
54
- # ::←
55
- # ```
56
- class NamespacePrefix
57
- attr_reader namespace: Namespace
58
-
59
- def initialize: (Namespace, Integer size) -> void
60
-
61
- def size: () -> Integer
62
- end
63
-
64
- # line number is 1 origin (Rubyish)
65
- #
66
- def self.parse: (RBS::Buffer input, line: Integer, column: Integer) -> t
67
- end
68
-
69
- class Item
70
- # The text to be completed
71
- #
72
- attr_reader complete_text: String
73
-
74
- # The prefix
75
- attr_reader prefix: Prefix::t?
76
-
77
- # Name of the type or constant
78
- #
79
- attr_reader full_name: TypeName
80
-
81
- # The text to be inserted after the prefix
82
- #
83
- def insert_text: () -> String
84
-
85
- def initialize: (prefix: Prefix::t?, full_name: TypeName, complete_text: String) -> void
86
- end
87
-
88
- attr_reader env: Environment
89
-
90
- attr_reader context: Resolver::context
91
-
92
- attr_reader type_name_resolver: Resolver::TypeNameResolver
93
-
94
- attr_reader map: Environment::UseMap
95
-
96
- def initialize: (env: Environment, context: Resolver::context, dirs: Array[Directives::t]) -> void
97
-
98
- def complete_class_name: (RBS::Buffer input, line: Integer, column: Integer) -> Array[Item]
99
-
100
- # Find type names from the context for RBS
101
- #
102
- # Doesn't take account of ancestors of the context.
103
- #
104
- def find_type_names: (Prefix::t) -> Array[TypeName]
105
-
106
- # Returns a pair of
107
- #
108
- # * Absolute type name
109
- # * Relative type name in given context if possible (or absolute name)
110
- #
111
- def resolve_name_in_context: (TypeName) -> [TypeName, TypeName]
112
-
113
- def format_constant_name: (TypeName) -> String
114
-
115
- def resolve_used_name: (TypeName) -> TypeName?
116
-
117
- private
118
-
119
- # Yield type names defined in the environment
120
- #
121
- # * Yields an absolute type name if it is defined in the environment
122
- # * Yields an relative type name if it is imported with `use` declerative
123
- #
124
- # Alias classes/modules and types under them are yielded.
125
- #
126
- def each_type_name: () { (TypeName) -> void } -> void
127
- | () -> Enumerator[TypeName, void]
128
-
129
- def each_type_name_under: (TypeName module_name, TypeName normalized_name, table: Hash[Namespace, Array[TypeName]]) { (TypeName) -> void } -> void
130
-
131
- def each_outer_module: (?Resolver::context) { (Namespace) -> void } -> Namespace
132
- | () -> Enumerator[Namespace, void]
133
- end
134
- end
135
- end
@@ -1,85 +0,0 @@
1
- module Steep
2
- module Signature
3
- class Validator
4
- Location: singleton(RBS::Location)
5
-
6
- Declarations: singleton(RBS::AST::Declarations)
7
-
8
- attr_reader checker: Subtyping::Check
9
-
10
- @errors: Array[Diagnostic::Signature::Base]
11
-
12
- @type_name_resolver: RBS::Resolver::TypeNameResolver?
13
-
14
- @validator: RBS::Validator?
15
-
16
- def initialize: (checker: Subtyping::Check) -> void
17
-
18
- def has_error?: () -> bool
19
-
20
- def no_error?: () -> bool
21
-
22
- def each_error: () { (Diagnostic::Signature::Base) -> void } -> void
23
- | () -> Enumerator[Diagnostic::Signature::Base, void]
24
-
25
- def env: () -> RBS::Environment
26
-
27
- def builder: () -> RBS::DefinitionBuilder
28
-
29
- def type_name_resolver: () -> RBS::Resolver::TypeNameResolver
30
-
31
- def validator: () -> RBS::Validator
32
-
33
- def factory: () -> AST::Types::Factory
34
-
35
- def validate: () -> void
36
-
37
- def validate_type_application_constraints: (RBS::TypeName type_name, Array[RBS::AST::TypeParam] type_params, Array[RBS::Types::t] type_args, location: RBS::Location[untyped, untyped]?) -> void
38
-
39
- def validate_type_application: (RBS::Types::t) -> void
40
-
41
- def validate_type: (RBS::Types::t `type`) -> void
42
-
43
- def ancestor_to_type: (RBS::Definition::Ancestor::t ancestor) -> (AST::Types::Name::Interface | AST::Types::Name::Instance)
44
-
45
- def mixin_constraints: (RBS::Definition definition, Array[RBS::Definition::Ancestor::Instance] mixin_ancestors, immediate_self_types: Array[RBS::Definition::Ancestor::t]?) -> Array[[Subtyping::Relation[AST::Types::t], RBS::Definition::Ancestor::Instance]]
46
-
47
- def each_method_type: (RBS::Definition) { (RBS::MethodType) -> void } -> void
48
-
49
- def each_variable_type: (RBS::Definition) { (RBS::Types::t) -> void } -> void
50
-
51
- def validate_definition_type: (RBS::Definition) -> void
52
-
53
- def validate_one_class: (RBS::TypeName) -> void
54
-
55
- def validate_ancestor_application: (RBS::TypeName, RBS::Definition::Ancestor::Instance ancestor) -> void
56
-
57
- def validate_one_interface: (RBS::TypeName) -> void
58
-
59
- def validate_decl: () -> void
60
-
61
- def validate_const: () -> void
62
-
63
- def validate_one_constant: (RBS::TypeName name, RBS::Environment::ConstantEntry entry) -> void
64
-
65
- def validate_global: () -> void
66
-
67
- def validate_one_global: (Symbol name, RBS::Environment::GlobalEntry) -> void
68
-
69
- # Validate type alias
70
- #
71
- # 1. Make sure the outer namespace of given `name` exists
72
- # 2. Make sure the type alias is valid with respect to `RBS::Validator`
73
- #
74
- def validate_one_alias: (RBS::TypeName name, ?RBS::Environment::TypeAliasEntry entry) -> void
75
-
76
- def validate_one_class_decl: (RBS::TypeName) -> void
77
-
78
- def validate_one_class_alias: (RBS::TypeName, RBS::Environment::ClassAliasEntry | RBS::Environment::ModuleAliasEntry) -> void
79
-
80
- def validate_alias: () -> void
81
-
82
- def rescue_validation_errors: (?RBS::TypeName? type_name) { () -> void } -> void
83
- end
84
- end
85
- end
@@ -1,38 +0,0 @@
1
- use Steep::AST::Ignore, RBS::Location
2
-
3
- module Steep
4
- class Source
5
- class IgnoreRanges
6
- attr_reader all_ignores: Array[Ignore::t]
7
-
8
- attr_reader error_ignores: Array[Ignore::t]
9
-
10
- attr_reader ignored_ranges: Array[Range[Integer]]
11
-
12
- attr_reader ignored_lines: Hash[Integer, Ignore::IgnoreLine]
13
-
14
- def initialize: (ignores: Array[Ignore::t]) -> void
15
-
16
- # If given diagnostic code at the location is ignored or not
17
- #
18
- # Ignore ranges work for location that is completely inside the range.
19
- # Both the starting point and ending point should be in one range.
20
- # Only diagnostic (1) is ignored in the following example.
21
- #
22
- # ```ruby
23
- # + <2
24
- # # steep:ignore:start |
25
- # 1> + +
26
- # + +
27
- # # steep:ignore:end |
28
- # + <3
29
- # ```
30
- #
31
- # Ignore lines work for location that has starting line or ending line.
32
- #
33
- def ignore?: (Integer start_line, Integer end_line, String code) -> bool
34
-
35
- def ignore_code?: (Ignore::IgnoreLine, String code) -> bool
36
- end
37
- end
38
- end
data/sig/steep/source.rbs DELETED
@@ -1,105 +0,0 @@
1
- module Steep
2
- class Source
3
- extend NodeHelper
4
-
5
- attr_reader buffer: RBS::Buffer
6
-
7
- attr_reader path: Pathname
8
-
9
- attr_reader node: Parser::AST::Node?
10
-
11
- attr_reader mapping: Hash[Parser::AST::Node, Array[AST::Annotation::t]]
12
-
13
- attr_reader comments: Array[Parser::Source::Comment]
14
-
15
- attr_reader ignores: Array[AST::Ignore::t]
16
-
17
- def initialize: (
18
- buffer: RBS::Buffer,
19
- path: Pathname,
20
- node: Parser::AST::Node?,
21
- mapping: Hash[Parser::AST::Node, Array[AST::Annotation::t]],
22
- comments: Array[Parser::Source::Comment],
23
- ignores: Array[AST::Ignore::t]
24
- ) -> void
25
-
26
- class Builder < ::Parser::Builders::Default
27
- def string_value: (untyped token) -> untyped
28
- end
29
-
30
- def self.new_parser: () -> Parser::Ruby33
31
-
32
- def self.parse: (String source_code, path: Pathname, factory: AST::Types::Factory) -> Source
33
-
34
- def self.construct_mapping: (
35
- node: Parser::AST::Node,
36
- annotations: Array[AST::Annotation::t],
37
- mapping: Hash[Parser::AST::Node, Array[AST::Annotation::t]],
38
- ?line_range: Range[Integer]?
39
- ) -> void
40
-
41
- def self.map_child_node: (Parser::AST::Node node, ?Symbol? type, ?skip: Set[Parser::AST::Node]?) { (Parser::AST::Node) -> Parser::AST::Node } -> Parser::AST::Node
42
-
43
- def annotations: (block: Parser::AST::Node, factory: AST::Types::Factory, context: RBS::Resolver::context) -> AST::Annotation::Collection
44
-
45
- def each_annotation: () { ([Parser::AST::Node, Array[AST::Annotation::t]]) -> void } -> void
46
- | () -> Enumerator[[Parser::AST::Node, Array[AST::Annotation::t]], void]
47
-
48
- # Yields all heredoc node and its parents under `node` (or `self.node`)
49
- #
50
- # Yields arrays, inner node first, outer node last -- `[heredoc_node, *outer_node, node]`.
51
- #
52
- def each_heredoc_node: (?Parser::AST::Node? node, ?Array[Parser::AST::Node] parents) { ([Array[Parser::AST::Node], Parser::Source::Map & Parser::AST::_Heredoc]) -> void } -> void
53
- | (?Parser::AST::Node? node, ?Array[Parser::AST::Node] parents) -> Enumerator[[Array[Parser::AST::Node], Parser::Source::Map & Parser::AST::_Heredoc], void]
54
-
55
- # Returns array of nodes that is located inside heredoc
56
- #
57
- # ```ruby
58
- # content = <<TEXT
59
- # #{this or this}
60
- # TEXT
61
- # ```
62
- #
63
- # Returns arrays, inner node first, outer node last -- `[*nodes, heredoc_node]`.
64
- #
65
- def find_heredoc_nodes: (Integer line, Integer column, Integer position) -> Array[Parser::AST::Node]?
66
-
67
- # Returns a node and it's outer nodes
68
- #
69
- def find_nodes_loc: (Parser::AST::Node node, Integer position, Array[Parser::AST::Node] parents) -> Array[Parser::AST::Node]?
70
-
71
- # Returns a node and it's outer nodes
72
- def find_nodes: (line: Integer, column: Integer) -> ::Array[Parser::AST::Node]?
73
-
74
- # Returns comment at the given position
75
- #
76
- # Note that a cursor position that is at the beginning of a comment returns `nil`.
77
- #
78
- # ```ruby
79
- # .#. .H.e.l.l.o.
80
- # ^ => Returns nil
81
- # ^ => Returns the comment
82
- # ^ => Returns the comment
83
- # ```
84
- #
85
- def find_comment: (line: Integer, column: Integer) -> Parser::Source::Comment?
86
-
87
- def self.delete_defs: (Parser::AST::Node node, Set[Parser::AST::Node] allow_list) -> Parser::AST::Node
88
-
89
- def without_unrelated_defs: (line: Integer, column: Integer) -> Source
90
-
91
- type type_comment = AST::Node::TypeAssertion | AST::Node::TypeApplication
92
-
93
- def self.insert_type_node: (Parser::AST::Node node, Hash[Integer, type_comment]) -> Parser::AST::Node
94
-
95
- def self.adjust_location: (Parser::AST::Node) -> Parser::AST::Node
96
-
97
- def self.assertion_node: (Parser::AST::Node, AST::Node::TypeAssertion) -> Parser::AST::Node
98
-
99
- def self.type_application_node: (Parser::AST::Node, AST::Node::TypeApplication) -> Parser::AST::Node
100
-
101
- # Returns a line of `selector` of `send` node, that can be used to look up a TypeApplication comment
102
- #
103
- def self.sendish_node?: (Parser::AST::Node) -> Integer?
104
- end
105
- end
@@ -1,17 +0,0 @@
1
- module Steep
2
- module Subtyping
3
- class Cache
4
- attr_reader subtypes: untyped
5
-
6
- def initialize: () -> void
7
-
8
- def subtype: (untyped relation, untyped self_type, untyped instance_type, untyped class_type, untyped bounds) -> untyped
9
-
10
- def []: (untyped relation, untyped self_type, untyped instance_type, untyped class_type, untyped bounds) -> untyped
11
-
12
- def []=: (untyped relation, untyped self_type, untyped instance_type, untyped class_type, untyped bounds, untyped value) -> untyped
13
-
14
- def no_subtype_cache?: () -> untyped
15
- end
16
- end
17
- end