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,124 +0,0 @@
1
- module Steep
2
- module TypeInference
3
- module MethodCall
4
- class MethodDecl
5
- attr_reader method_name: method_name
6
-
7
- attr_reader method_def: RBS::Definition::Method::TypeDef
8
-
9
- def initialize: (method_name: method_name, method_def: RBS::Definition::Method::TypeDef) -> void
10
-
11
- def hash: () -> Integer
12
-
13
- def ==: (untyped other) -> bool
14
-
15
- alias eql? ==
16
-
17
- def method_type: () -> RBS::MethodType
18
- end
19
-
20
- class MethodContext
21
- attr_reader method_name: method_name
22
-
23
- def initialize: (method_name: method_name) -> void
24
-
25
- def to_s: () -> String
26
- end
27
-
28
- class ModuleContext
29
- attr_reader type_name: RBS::TypeName
30
-
31
- def initialize: (type_name: RBS::TypeName) -> void
32
-
33
- def to_s: () -> String
34
- end
35
-
36
- class TopLevelContext
37
- def to_s: () -> String
38
- end
39
-
40
- class UnknownContext
41
- def to_s: () -> String
42
- end
43
-
44
- type context = MethodContext | ModuleContext | TopLevelContext | UnknownContext
45
-
46
- class Base
47
- attr_reader node: Parser::AST::Node
48
-
49
- attr_reader context: context
50
-
51
- attr_reader method_name: Symbol
52
-
53
- attr_reader return_type: AST::Types::t
54
-
55
- attr_reader receiver_type: AST::Types::t
56
-
57
- def initialize: (node: Parser::AST::Node, context: context, method_name: Symbol, receiver_type: AST::Types::t, return_type: AST::Types::t) -> void
58
-
59
- def with_return_type: (AST::Types::t new_type) -> self
60
-
61
- def ==: (untyped other) -> bool
62
-
63
- alias eql? ==
64
-
65
- def hash: () -> Integer
66
- end
67
-
68
- type t = Typed | Special | Untyped | NoMethodError | Error
69
-
70
- class Typed < Base
71
- attr_reader actual_method_type: Interface::MethodType
72
-
73
- attr_reader method_decls: Set[MethodDecl]
74
-
75
- def initialize: (node: Parser::AST::Node, context: context, method_name: Symbol, receiver_type: AST::Types::t, actual_method_type: Interface::MethodType, method_decls: Set[MethodDecl], return_type: AST::Types::t) -> void
76
-
77
- def update: (?node: Parser::AST::Node, ?return_type: AST::Types::t) -> self
78
-
79
- def pure?: () -> bool
80
-
81
- def ==: (untyped other) -> bool
82
-
83
- alias eql? ==
84
-
85
- def hash: () -> Integer
86
- end
87
-
88
- class Special < Typed
89
- end
90
-
91
- class Untyped < Base
92
- def initialize: (node: Parser::AST::Node, context: context, method_name: Symbol) -> void
93
- end
94
-
95
- class NoMethodError < Base
96
- attr_reader error: Diagnostic::Ruby::NoMethod
97
-
98
- def initialize: (
99
- node: Parser::AST::Node,
100
- context: context,
101
- method_name: Symbol,
102
- receiver_type: AST::Types::t,
103
- error: Diagnostic::Ruby::NoMethod
104
- ) -> void
105
- end
106
-
107
- class Error < Base
108
- attr_reader errors: Array[Diagnostic::Ruby::Base]
109
-
110
- attr_reader method_decls: Set[MethodDecl]
111
-
112
- def initialize: (
113
- node: Parser::AST::Node,
114
- context: context,
115
- method_name: Symbol,
116
- receiver_type: AST::Types::t,
117
- errors: Array[Diagnostic::Ruby::Base],
118
- ?method_decls: Set[MethodDecl],
119
- ?return_type: AST::Types::t
120
- ) -> void
121
- end
122
- end
123
- end
124
- end
@@ -1,127 +0,0 @@
1
- use Parser::AST::Node, Steep::Interface::MethodType
2
- use Steep::Interface::Function::Params, Steep::Interface::Block
3
-
4
- module Steep
5
- module TypeInference
6
- # A MethodParams object provides the information of parameters from MethodType and nodes
7
- #
8
- # It primarly provides a mapping from a local variable (method parameter) to its type.
9
- #
10
- class MethodParams
11
- class BaseParameter
12
- attr_reader name: Symbol
13
-
14
- attr_reader type: AST::Types::t?
15
-
16
- attr_reader node: Node
17
-
18
- def initialize: (name: Symbol, type: AST::Types::t?, node: Node) -> void
19
-
20
- def optional?: () -> bool
21
-
22
- def value: () -> Node?
23
-
24
- def var_type: () -> AST::Types::t
25
-
26
- def untyped?: () -> bool
27
-
28
- def ==: (untyped other) -> bool
29
-
30
- alias eql? ==
31
-
32
- def hash: () -> Integer
33
- end
34
-
35
- class PositionalParameter < BaseParameter
36
- end
37
-
38
- class KeywordParameter < BaseParameter
39
- end
40
-
41
- class BaseRestParameter
42
- attr_reader name: Symbol
43
-
44
- attr_reader type: AST::Types::t?
45
-
46
- attr_reader node: Node
47
-
48
- def initialize: (name: Symbol, type: AST::Types::t?, node: Node) -> void
49
-
50
- def ==: (untyped other) -> bool
51
-
52
- alias eql? ==
53
-
54
- def hash: () -> Integer
55
- end
56
-
57
- class PositionalRestParameter < BaseRestParameter
58
- def var_type: () -> AST::Types::Name::Instance
59
- end
60
-
61
- class KeywordRestParameter < BaseRestParameter
62
- def var_type: () -> AST::Types::Name::Instance
63
- end
64
-
65
- class BlockParameter
66
- attr_reader name: Symbol
67
-
68
- attr_reader type: Interface::Function?
69
-
70
- attr_reader node: Node
71
-
72
- attr_reader self_type: AST::Types::t?
73
-
74
- def initialize: (name: Symbol, type: Interface::Function?, node: Node, optional: boolish, self_type: AST::Types::t?) -> void
75
-
76
- @optional: boolish
77
-
78
- def optional?: () -> bool
79
-
80
- def var_type: () -> AST::Types::t
81
-
82
- def ==: (untyped other) -> bool
83
-
84
- alias eql? ==
85
-
86
- def hash: () -> Integer
87
- end
88
-
89
- type param = PositionalParameter | KeywordParameter | PositionalRestParameter | KeywordRestParameter | BlockParameter
90
-
91
- # The children of `:args` node
92
- attr_reader args: Array[Node]
93
-
94
- attr_reader method_type: MethodType?
95
-
96
- # Mapping from the name of parameter to parameter object
97
- attr_reader params: Hash[Symbol, param]
98
-
99
- attr_reader errors: Array[Diagnostic::Ruby::Base]
100
-
101
- # The type of `...`
102
- #
103
- # `nil` if the node doesn't have it.
104
- #
105
- attr_reader forward_arg_type: [Params, Block?]?
106
-
107
- def initialize: (args: Array[Node], method_type: MethodType?, forward_arg_type: [Params, Block?]?) -> void
108
-
109
- def []: (Symbol name) -> param
110
-
111
- def param?: (Symbol) -> bool
112
-
113
- def size: () -> Integer
114
-
115
- def each_param: () { (param) -> void } -> void
116
- | () -> Enumerator[param, void]
117
-
118
- def each: () { (Symbol, AST::Types::t) -> void } -> void
119
-
120
- def update: (?forward_arg_type: [Params, Block?]?) -> MethodParams
121
-
122
- def self.empty: (node: Node) -> MethodParams
123
-
124
- def self.build: (node: Node, method_type: MethodType) -> MethodParams
125
- end
126
- end
127
- end
@@ -1,76 +0,0 @@
1
- module Steep
2
- module TypeInference
3
- # This class provides an abstraction for multiple assignments.
4
- #
5
- class MultipleAssignment
6
- type node_type_pair = [Parser::AST::Node, AST::Types::t]
7
-
8
- # Encapsulate assignments included in one `masgn` node
9
- #
10
- # ```ruby
11
- # a, *b, c = rhs
12
- # # ^ Leading assignments
13
- # # ^^ Splat assignment
14
- # # ^ Trailing assignments
15
- # ```
16
- #
17
- class Assignments
18
- attr_reader rhs_type: AST::Types::t
19
-
20
- attr_reader optional: bool
21
-
22
- # Assignments before `*` assignment
23
- attr_reader leading_assignments: Array[node_type_pair]
24
-
25
- # Assignments after `*` assignment
26
- #
27
- # Empty if there is no splat assignment.
28
- #
29
- attr_reader trailing_assignments: Array[node_type_pair]
30
-
31
- # Splat assignment if present
32
- attr_reader splat_assignment: node_type_pair?
33
-
34
- def initialize: (
35
- rhs_type: AST::Types::t,
36
- optional: bool,
37
- leading_assignments: Array[node_type_pair],
38
- trailing_assignments: Array[node_type_pair],
39
- splat_assignment: node_type_pair?
40
- ) -> void
41
-
42
- def each: () { (node_type_pair) -> void } -> void
43
- | () -> Enumerator[node_type_pair, void]
44
- end
45
-
46
- def initialize: () -> void
47
-
48
- # Receives multiple assignment left hand side, right hand side type, and `optional` flag, and returns Assignments object
49
- #
50
- # This implements a case analysis on `rhs_type`:
51
- #
52
- # 1. If `rhs_type` is tuple, it returns an Assignments object with corresponding assignments
53
- # 2. If `rhs_type` is an array, it returns an Assignments object with corresponding assignments
54
- # 3. If `rhs_type` is `untyped`, it returns an Assignments with `untyped` type
55
- # 4. It returns `nil` otherwise
56
- #
57
- def expand: (Parser::AST::Node mlhs, AST::Types::t rhs_type, bool optional) -> Assignments?
58
-
59
- # Returns a type hint for multiple assignment right hand side
60
- #
61
- # It constructs a structure of tuple types, based on the assignment lhs, and variable types.
62
- #
63
- def hint_for_mlhs: (Parser::AST::Node mlhs, TypeEnv env) -> AST::Types::t?
64
-
65
- private
66
-
67
- def expand_tuple: (Array[Parser::AST::Node] assignments, AST::Types::t rhs_type, Array[AST::Types::t] types, bool optional) -> Assignments
68
-
69
- def expand_array: (Array[Parser::AST::Node] assignments, AST::Types::Name::Instance rhs_type, bool optional) -> Assignments
70
-
71
- def expand_any: (Array[Parser::AST::Node] assignments, AST::Types::t rhs_type, AST::Types::t element_type, bool optional) -> Assignments
72
-
73
- def expand_else: (Array[Parser::AST::Node] assignments, AST::Types::t rhs_type, bool optional) -> Assignments
74
- end
75
- end
76
- end
@@ -1,243 +0,0 @@
1
- module Steep
2
- module TypeInference
3
- class SendArgs
4
- class PositionalArgs
5
- class NodeParamPair
6
- attr_reader node: Parser::AST::Node
7
-
8
- attr_reader param: Interface::Function::Params::PositionalParams::param
9
-
10
- def initialize: (node: Parser::AST::Node, param: Interface::Function::Params::PositionalParams::param) -> void
11
-
12
- include Equatable
13
-
14
- def to_ary: () -> [Parser::AST::Node, Interface::Function::Params::t]
15
- end
16
-
17
- class NodeTypePair
18
- attr_reader node: Parser::AST::Node
19
-
20
- attr_reader type: AST::Types::t
21
-
22
- def initialize: (node: Parser::AST::Node, type: AST::Types::t) -> void
23
-
24
- include Equatable
25
-
26
- def node_type: () -> AST::Types::t
27
- end
28
-
29
- class SplatArg
30
- attr_reader node: Parser::AST::Node
31
-
32
- attr_accessor type: AST::Types::t?
33
-
34
- def initialize: (node: Parser::AST::Node) -> void
35
-
36
- include Equatable
37
- end
38
-
39
- class UnexpectedArg
40
- attr_reader node: Parser::AST::Node
41
-
42
- def initialize: (node: Parser::AST::Node) -> void
43
-
44
- include Equatable
45
- end
46
-
47
- class MissingArg
48
- attr_reader params: Interface::Function::Params::PositionalParams?
49
-
50
- def initialize: (params: Interface::Function::Params::PositionalParams?) -> void
51
-
52
- include Equatable
53
- end
54
-
55
- type arg = NodeParamPair | NodeTypePair | SplatArg | error_arg
56
-
57
- type error_arg = UnexpectedArg | MissingArg
58
-
59
- attr_reader args: Array[Parser::AST::Node]
60
-
61
- attr_reader index: Integer
62
-
63
- attr_reader positional_params: Interface::Function::Params::PositionalParams?
64
-
65
- attr_reader uniform: bool
66
-
67
- def initialize: (args: Array[Parser::AST::Node], index: Integer, positional_params: Interface::Function::Params::PositionalParams?, ?uniform: bool) -> void
68
-
69
- %a{pure} def node: () -> Parser::AST::Node?
70
-
71
- def following_args: () -> Array[Parser::AST::Node]
72
-
73
- %a{pure} def param: () -> Interface::Function::Params::PositionalParams::param?
74
-
75
- def update: (?index: Integer, ?positional_params: Interface::Function::Params::PositionalParams?, ?uniform: bool) -> PositionalArgs
76
-
77
- def next: () -> [arg, PositionalArgs]?
78
-
79
- def uniform_type: () -> AST::Types::t?
80
-
81
- def consume: (Integer n, node: Parser::AST::Node) -> [
82
- UnexpectedArg | Array[Interface::Function::Params::PositionalParams::param] | nil,
83
- PositionalArgs
84
- ]
85
-
86
- def consume0: (
87
- Integer n,
88
- node: Parser::AST::Node,
89
- params: Interface::Function::Params::PositionalParams?,
90
- ps: Array[Interface::Function::Params::PositionalParams::param]
91
- ) -> (Interface::Function::Params::PositionalParams | UnexpectedArg | nil)
92
- end
93
-
94
- class KeywordArgs
95
- class ArgTypePairs
96
- attr_reader pairs: Array[untyped]
97
-
98
- def initialize: (pairs: Array[untyped]) -> void
99
-
100
- include Equatable
101
-
102
- def []: (Integer index) -> untyped
103
-
104
- def size: () -> Integer
105
- end
106
-
107
- class SplatArg
108
- attr_reader node: Parser::AST::Node
109
-
110
- attr_accessor type: AST::Types::t?
111
-
112
- def initialize: (node: Parser::AST::Node) -> void
113
-
114
- include Equatable
115
- end
116
-
117
- class UnexpectedKeyword
118
- attr_reader keyword: Symbol?
119
-
120
- attr_reader node: Parser::AST::Node
121
-
122
- include Equatable
123
-
124
- def initialize: (keyword: Symbol?, node: Parser::AST::Node) -> void
125
-
126
- def key_node: () -> Parser::AST::Node?
127
-
128
- def value_node: () -> Parser::AST::Node?
129
- end
130
-
131
- class MissingKeyword
132
- attr_reader keywords: Set[Symbol]
133
-
134
- include Equatable
135
-
136
- def initialize: (keywords: Set[Symbol]) -> void
137
- end
138
-
139
- type arg = ArgTypePairs | SplatArg | error_arg
140
-
141
- type error_arg = UnexpectedKeyword | MissingKeyword
142
-
143
- attr_reader kwarg_nodes: Array[Parser::AST::Node]
144
-
145
- attr_reader keyword_params: Interface::Function::Params::KeywordParams
146
-
147
- attr_reader index: Integer
148
-
149
- attr_reader consumed_keywords: Set[Symbol]
150
-
151
- def initialize: (
152
- kwarg_nodes: Array[Parser::AST::Node],
153
- keyword_params: Interface::Function::Params::KeywordParams,
154
- ?index: ::Integer,
155
- ?consumed_keywords: Set[Symbol]
156
- ) -> void
157
-
158
- def update: (?index: Integer, ?consumed_keywords: Set[Symbol]) -> KeywordArgs
159
-
160
- def keyword_pair: () -> Parser::AST::Node?
161
-
162
- def required_keywords: () -> Hash[Symbol, AST::Types::t]
163
-
164
- def optional_keywords: () -> Hash[Symbol, AST::Types::t]
165
-
166
- %a{pure} def rest_type: () -> AST::Types::t?
167
-
168
- def keyword_type: (Symbol key) -> AST::Types::t?
169
-
170
- def all_keys: () -> Array[Symbol]
171
-
172
- def all_values: () -> Array[AST::Types::t]
173
-
174
- def possible_key_type: () -> AST::Types::t
175
-
176
- def possible_value_type: () -> AST::Types::t
177
-
178
- def next: () -> [arg, KeywordArgs]?
179
-
180
- def consume_keys: (Array[Symbol] keys, node: Parser::AST::Node) -> [UnexpectedKeyword | Array[AST::Types::t], KeywordArgs]
181
- end
182
-
183
- class BlockPassArg
184
- attr_reader node: Parser::AST::Node?
185
-
186
- attr_reader block: Interface::Block?
187
-
188
- def initialize: (node: Parser::AST::Node?, block: Interface::Block?) -> void
189
-
190
- include Equatable
191
-
192
- def no_block?: () -> bool
193
-
194
- def compatible?: () -> bool
195
-
196
- def block_missing?: () -> boolish
197
-
198
- def unexpected_block?: () -> boolish
199
-
200
- def pair: () -> [Parser::AST::Node, Interface::Function]?
201
-
202
- def node_type: () -> AST::Types::t
203
- end
204
-
205
- class ForwardedArgs
206
- attr_reader node: Parser::AST::Node
207
-
208
- attr_reader params: Interface::Function::Params
209
-
210
- def initialize: (node: Parser::AST::Node, params: Interface::Function::Params) -> void
211
- end
212
-
213
- attr_reader node: Parser::AST::Node
214
-
215
- attr_reader arguments: Array[Parser::AST::Node]
216
-
217
- attr_reader type: Interface::MethodType | AST::Types::Proc
218
-
219
- def initialize: (node: Parser::AST::Node, arguments: Array[Parser::AST::Node], type: Interface::MethodType | AST::Types::Proc) -> void
220
-
221
- attr_reader params (): Interface::Function::Params
222
-
223
- attr_reader block (): Interface::Block?
224
-
225
- def positional_params: () -> Interface::Function::Params::PositionalParams?
226
-
227
- def keyword_params: () -> Interface::Function::Params::KeywordParams
228
-
229
- def kwargs_node: () -> Parser::AST::Node?
230
-
231
- def forwarded_args_node: () -> Parser::AST::Node?
232
-
233
- def positional_arg: () -> PositionalArgs
234
-
235
- def keyword_args: () -> KeywordArgs
236
-
237
- def block_pass_arg: () -> BlockPassArg
238
-
239
- def each: () { (PositionalArgs::arg | KeywordArgs::arg) -> void } -> [ForwardedArgs?, Array[Diagnostic::Ruby::Base]]
240
- | () -> Enumerator[PositionalArgs::arg | KeywordArgs::arg, [ForwardedArgs?, Array[Diagnostic::Ruby::Base]]]
241
- end
242
- end
243
- end