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,72 +0,0 @@
1
- module Steep
2
- class Expectations
3
- type status = :expected | :missing | :unexpected
4
-
5
- class Diagnostic
6
- module DiagnosticSeverity = LanguageServer::Protocol::Constant::DiagnosticSeverity
7
-
8
- type position = { line: Integer, character: Integer }
9
-
10
- attr_reader start_position: position
11
-
12
- attr_reader end_position: position
13
-
14
- attr_reader severity: Steep::Diagnostic::LSPFormatter::severity
15
-
16
- attr_reader message: String
17
-
18
- attr_reader code: String
19
-
20
- def initialize: (start_position: position, end_position: position, severity: Steep::Diagnostic::LSPFormatter::severity, message: String, code: String) -> void
21
-
22
- def self.from_hash: (untyped) -> Diagnostic
23
-
24
- def self.from_lsp: (untyped) -> Diagnostic
25
-
26
- def to_hash: () -> Hash[String, untyped]
27
-
28
- def to_lsp: () -> Hash[Symbol, untyped]
29
-
30
- def lsp_severity: () -> Integer
31
-
32
- def sort_key: () -> Array[untyped]
33
- end
34
-
35
- class TestResult
36
- attr_reader path: Pathname
37
-
38
- attr_reader expectation: Array[Diagnostic]
39
-
40
- attr_reader actual: Array[Diagnostic]
41
-
42
- def initialize: (path: Pathname, expectation: Array[Diagnostic], actual: Array[Diagnostic]) -> void
43
-
44
- def empty?: () -> bool
45
-
46
- def satisfied?: () -> bool
47
-
48
- def each_diagnostics: () { ([status, Diagnostic]) -> void } -> void
49
- | () -> Enumerator[[status, Diagnostic], void]
50
-
51
- def expected_diagnostics: () -> Array[Diagnostic]
52
-
53
- def unexpected_diagnostics: () -> Array[Diagnostic]
54
-
55
- def missing_diagnostics: () -> Array[Diagnostic]
56
- end
57
-
58
- module LSP = LanguageServer::Protocol
59
-
60
- attr_reader diagnostics: Hash[Pathname, Array[Diagnostic]]
61
-
62
- def initialize: () -> void
63
-
64
- def test: (path: Pathname, diagnostics: Array[Diagnostic]) -> TestResult
65
-
66
- def self.empty: () -> instance
67
-
68
- def to_yaml: () -> String
69
-
70
- def self.load: (path: Pathname, content: String) -> instance
71
- end
72
- end
@@ -1,141 +0,0 @@
1
- module Steep
2
- module Index
3
- class RBSIndex
4
- class TypeEntry
5
- attr_reader type_name: RBS::TypeName
6
-
7
- type decl = RBS::AST::Declarations::Class
8
- | RBS::AST::Declarations::Module
9
- | RBS::AST::Declarations::Interface
10
- | RBS::AST::Declarations::TypeAlias
11
- | RBS::AST::Declarations::ClassAlias
12
- | RBS::AST::Declarations::ModuleAlias
13
-
14
- type ref = RBS::AST::Members::MethodDefinition
15
- | RBS::AST::Members::AttrWriter
16
- | RBS::AST::Members::AttrReader
17
- | RBS::AST::Members::AttrAccessor
18
- | RBS::AST::Members::Include
19
- | RBS::AST::Members::Extend
20
- | RBS::AST::Members::InstanceVariable
21
- | RBS::AST::Members::ClassVariable
22
- | RBS::AST::Members::ClassInstanceVariable
23
- | RBS::AST::Declarations::Module
24
- | RBS::AST::Declarations::Class
25
- | RBS::AST::Declarations::Constant
26
- | RBS::AST::Declarations::Global
27
- | RBS::AST::Declarations::TypeAlias
28
- | RBS::AST::Declarations::ClassAlias
29
- | RBS::AST::Declarations::ModuleAlias
30
-
31
- attr_reader declarations: Set[decl]
32
-
33
- attr_reader references: Set[ref]
34
-
35
- def initialize: (type_name: RBS::TypeName) -> void
36
-
37
- def add_declaration: (decl decl) -> self
38
-
39
- def add_reference: (ref) -> self
40
- end
41
-
42
- class MethodEntry
43
- attr_reader method_name: method_name
44
-
45
- type decl = RBS::AST::Members::MethodDefinition
46
- | RBS::AST::Members::Alias
47
- | RBS::AST::Members::AttrWriter
48
- | RBS::AST::Members::AttrReader
49
- | RBS::AST::Members::AttrAccessor
50
-
51
- type ref = RBS::AST::Members::Alias
52
-
53
- attr_reader declarations: Set[decl]
54
-
55
- attr_reader references: Set[ref]
56
-
57
- def initialize: (method_name: method_name) -> void
58
-
59
- def add_declaration: (decl) -> self
60
- end
61
-
62
- class ConstantEntry
63
- attr_reader const_name: RBS::TypeName
64
-
65
- type decl = RBS::AST::Declarations::Constant
66
-
67
- attr_reader declarations: Set[decl]
68
-
69
- def initialize: (const_name: RBS::TypeName) -> void
70
-
71
- def add_declaration: (decl) -> self
72
- end
73
-
74
- class GlobalEntry
75
- attr_reader global_name: Symbol
76
-
77
- type decl = RBS::AST::Declarations::Global
78
-
79
- attr_reader declarations: Set[decl]
80
-
81
- def initialize: (global_name: Symbol) -> void
82
-
83
- def add_declaration: (decl) -> self
84
- end
85
-
86
- attr_reader type_index: Hash[RBS::TypeName, TypeEntry]
87
-
88
- attr_reader method_index: Hash[method_name, MethodEntry]
89
-
90
- attr_reader const_index: Hash[RBS::TypeName, ConstantEntry]
91
-
92
- attr_reader global_index: Hash[Symbol, GlobalEntry]
93
-
94
- def initialize: () -> void
95
-
96
- def entry: (type_name: RBS::TypeName) -> TypeEntry
97
- | (method_name: method_name) -> MethodEntry
98
- | (const_name: RBS::TypeName) -> ConstantEntry
99
- | (global_name: Symbol) -> GlobalEntry
100
-
101
- def each_entry: () { (TypeEntry | MethodEntry | ConstantEntry | GlobalEntry) -> void } -> void
102
- | () -> Enumerator[TypeEntry | MethodEntry | ConstantEntry | GlobalEntry, void]
103
-
104
- def add_type_declaration: (RBS::TypeName type_name, TypeEntry::decl declaration) -> TypeEntry
105
-
106
- def add_method_declaration: (method_name, MethodEntry::decl member) -> MethodEntry
107
-
108
- def add_constant_declaration: (RBS::TypeName const_name, ConstantEntry::decl decl) -> ConstantEntry
109
-
110
- def add_global_declaration: (Symbol global_name, GlobalEntry::decl decl) -> GlobalEntry
111
-
112
- def each_declaration: (type_name: RBS::TypeName) { (TypeEntry) -> void } -> void
113
- | (type_name: RBS::TypeName) -> Enumerator[TypeEntry, void]
114
- | (method_name: method_name) { (MethodEntry) -> void } -> void
115
- | (method_name: method_name) -> Enumerator[MethodEntry, void]
116
- | (const_name: RBS::TypeName) { (ConstantEntry) -> void } -> void
117
- | (const_name: RBS::TypeName) -> Enumerator[ConstantEntry, void]
118
- | (global_name: Symbol) { (GlobalEntry) -> void } -> void
119
- | (global_name: Symbol) -> Enumerator[GlobalEntry, void]
120
-
121
- # `type_name` is referred from `ref`
122
- #
123
- def add_type_reference: (RBS::TypeName type_name, TypeEntry::ref ref) -> TypeEntry
124
-
125
- def each_reference: (type_name: RBS::TypeName) { (TypeEntry::ref) -> void } -> void
126
- | (type_name: RBS::TypeName) -> Enumerator[TypeEntry::ref, void]
127
-
128
- class Builder
129
- attr_reader index: RBSIndex
130
-
131
- def initialize: (index: RBSIndex) -> void
132
-
133
- def member: (RBS::TypeName type_name, RBS::AST::Members::t | RBS::AST::Declarations::t member) -> void
134
-
135
- def type_reference: (RBS::Types::t, from: TypeEntry::ref) -> void
136
-
137
- def env: (RBS::Environment env) -> void
138
- end
139
- end
140
- end
141
- end
@@ -1,41 +0,0 @@
1
- use LanguageServer::Protocol::Constant::SymbolKind
2
-
3
- module Steep
4
- module Index
5
- class SignatureSymbolProvider
6
- module LSP = LanguageServer::Protocol
7
-
8
- class SymbolInformation
9
- attr_reader name: String
10
-
11
- attr_reader location: RBS::Location[untyped, untyped]
12
-
13
- attr_reader container_name: String?
14
-
15
- attr_reader kind: SymbolKind::t
16
-
17
- def initialize: (name: String, location: RBS::Location[untyped, untyped], container_name: String?, kind: SymbolKind::t) -> void
18
- end
19
-
20
- attr_reader project: Project
21
-
22
- attr_reader indexes: Array[RBSIndex]
23
-
24
- attr_reader assignment: Services::PathAssignment
25
-
26
- def initialize: (project: Project, assignment: Services::PathAssignment) -> void
27
-
28
- def self.test_type_name: (String query, RBS::TypeName type_name) -> bool
29
-
30
- alias self.test_const_name self.test_type_name
31
-
32
- def self.test_global_name: (String query, Symbol global_name) -> bool
33
-
34
- def self.test_method_name: (String query, method_name) -> bool
35
-
36
- def assigned?: (Pathname) -> bool
37
-
38
- def query_symbol: (String query) -> Array[SymbolInformation]
39
- end
40
- end
41
- end
@@ -1,63 +0,0 @@
1
- module Steep
2
- module Index
3
- class SourceIndex
4
- class ConstantEntry
5
- attr_reader name: untyped
6
-
7
- attr_reader definitions: untyped
8
-
9
- attr_reader references: untyped
10
-
11
- def initialize: (name: untyped) -> void
12
-
13
- def add_definition: (untyped node) -> untyped
14
-
15
- def add_reference: (untyped node) -> untyped
16
-
17
- def merge!: (untyped other) -> untyped
18
- end
19
-
20
- class MethodEntry
21
- attr_reader name: untyped
22
-
23
- attr_reader definitions: untyped
24
-
25
- attr_reader references: untyped
26
-
27
- def initialize: (name: untyped) -> void
28
-
29
- def add_definition: (untyped node) -> untyped
30
-
31
- def add_reference: (untyped node) -> untyped
32
-
33
- def merge!: (untyped other) -> untyped
34
- end
35
-
36
- attr_reader source: untyped
37
-
38
- attr_reader constant_index: untyped
39
-
40
- attr_reader method_index: untyped
41
-
42
- attr_reader parent: untyped
43
-
44
- attr_reader count: untyped
45
-
46
- attr_reader parent_count: untyped
47
-
48
- def initialize: (source: untyped, ?parent: untyped?) -> void
49
-
50
- def new_child: () -> untyped
51
-
52
- def merge!: (untyped child) -> untyped
53
-
54
- def add_definition: (definition: untyped, ?constant: untyped?, ?method: untyped?) -> untyped
55
-
56
- def add_reference: (ref: untyped, ?constant: untyped?, ?method: untyped?) -> untyped
57
-
58
- def entry: (?constant: untyped?, ?method: untyped?) -> untyped
59
-
60
- def reference: (?constant_node: untyped?) -> untyped
61
- end
62
- end
63
- end
@@ -1,41 +0,0 @@
1
- module Steep
2
- module Interface
3
- class Block
4
- attr_reader type: Function
5
-
6
- attr_reader self_type: AST::Types::t?
7
-
8
- attr_reader optional: bool
9
-
10
- def initialize: (type: Function, self_type: AST::Types::t?, optional: bool) -> void
11
-
12
- def optional?: () -> bool
13
-
14
- def required?: () -> bool
15
-
16
- def to_optional: () -> Block
17
-
18
- def ==: (untyped other) -> bool
19
-
20
- alias eql? ==
21
-
22
- def hash: () -> Integer
23
-
24
- def closed?: () -> bool
25
-
26
- def subst: (Substitution s) -> Block
27
-
28
- @fvs: Set[AST::Types::variable]
29
-
30
- def free_variables: () -> Set[AST::Types::variable]
31
-
32
- def to_s: () -> ::String
33
-
34
- def map_type: () { (AST::Types::t) -> AST::Types::t } -> Block
35
-
36
- def +: (Block other) -> Block
37
-
38
- def to_proc_type: () -> AST::Types::t
39
- end
40
- end
41
- end
@@ -1,152 +0,0 @@
1
- use RBS::TypeName
2
-
3
- module Steep
4
- module Interface
5
- class Builder
6
- class Config
7
- # Type of `self` type included immediately in the type expression
8
- #
9
- attr_reader self_type: AST::Types::t?
10
-
11
- # Type of `class` type included immediately in the type expression
12
- #
13
- attr_reader class_type: AST::Types::t?
14
-
15
- # Type of `instance` type included immediately in the type expression
16
- #
17
- attr_reader instance_type: AST::Types::t?
18
-
19
- # Upper bounds of type variables
20
- attr_reader variable_bounds: Hash[Symbol, AST::Types::t?]
21
-
22
- def initialize: (self_type: AST::Types::t?, variable_bounds: Hash[Symbol, AST::Types::t?]) -> void
23
- | (self_type: AST::Types::t?, class_type: AST::Types::t, instance_type: AST::Types::t, variable_bounds: Hash[Symbol, AST::Types::t?]) -> void
24
-
25
- def subst: () -> Substitution?
26
-
27
- def self.empty: () -> Config
28
-
29
- def upper_bound: (Symbol) -> AST::Types::t?
30
-
31
- private
32
-
33
- def validate: () -> self
34
-
35
- def validate_fvs: (Symbol name, AST::Types::t?) -> void
36
- end
37
-
38
- attr_reader factory: AST::Types::Factory
39
-
40
- # # No type application (if generic), no self-instance-module resolution
41
- attr_reader object_shape_cache: Hash[TypeName, Shape?]
42
-
43
- attr_reader union_shape_cache: Hash[AST::Types::Union, Shape?]
44
-
45
- attr_reader singleton_shape_cache: Hash[TypeName, Shape?]
46
-
47
- def initialize: (AST::Types::Factory) -> void
48
-
49
- def fetch_cache: [KEY] (Hash[KEY, Shape?], KEY) { () -> Shape? } -> Shape?
50
-
51
- # Returns a shape of given type with respect to Config
52
- #
53
- # * If `self` occurs in the given type, it returns types with `self`
54
- # * If `self` doesn't occur in the given type, it returns type withohut `self`, that is resolved to `config.self_type`
55
- #
56
- def shape: (AST::Types::t, Config) -> Shape?
57
-
58
- # Returns a shape of given type with respect to Config
59
- #
60
- # The `self` types included in the returned Shape is the `self` type in the top level
61
- #
62
- # * `raw_shape(<self>)` -> may return a shape with `self`
63
- # * `raw_shape(<Array[self]>) -> returns a shape that returns `self` from `#first` method
64
- #
65
- def raw_shape: (AST::Types::t, Config) -> Shape?
66
-
67
- def self_shape: (AST::Types::t, Config) -> Shape?
68
-
69
- private
70
-
71
- def object_shape: (RBS::TypeName) -> Shape
72
-
73
- def singleton_shape: (RBS::TypeName) -> Shape
74
-
75
- def union_shape: (AST::Types::t, Array[Shape]) -> Shape?
76
-
77
- def intersection_shape: (AST::Types::t, Array[Shape]) -> Shape?
78
-
79
- def proc_shape: (AST::Types::Proc, Shape) -> Shape
80
-
81
- def tuple_shape: (AST::Types::Tuple) { (AST::Types::Name::Instance) -> Shape? } -> Shape?
82
-
83
- def record_shape: (AST::Types::Record) { (AST::Types::Name::Instance) -> Shape? } -> Shape?
84
-
85
- # Substitution for `self`/`instance`/`class` types, built from the name of given type
86
- #
87
- def class_subst: (AST::Types::Name::Instance | AST::Types::Name::Singleton) -> Substitution
88
-
89
- def interface_subst: (AST::Types::Name::Interface) -> Substitution
90
-
91
- # Substitution for type application of class instance, type alias, or interface types
92
- def app_subst: (AST::Types::Name::Instance | AST::Types::Name::Alias | AST::Types::Name::Interface) -> Substitution
93
-
94
- def method_name_for: (RBS::Definition::Method::TypeDef, Symbol name) -> method_name
95
-
96
- def replace_primitive_method: (method_name, RBS::Definition::Method::TypeDef, MethodType) -> MethodType
97
-
98
- # # Calculates the shape of given class, based on `public_only` and Config
99
- # #
100
- # # Returns `nil` if a type that cannot calculate Shape is given.
101
- # #
102
- # # * `public_only`: If false, returns a shape with private methods.
103
- # #
104
- # def shape: (AST::Types::t, public_only: bool, config: Config) -> Shape?
105
-
106
- # private
107
-
108
- @subtyping: Subtyping::Check?
109
-
110
- def subtyping: () -> Subtyping::Check
111
-
112
- # # Fetch and update cache
113
- # #
114
- # # Cache if given type is cacheable:
115
- # #
116
- # # * `self`, `instance`, `class` is not cacheable
117
- # # * Type variables are not cacheable
118
- # #
119
- # def fetch_cache: (AST::Types::t, bool public_only, Config) { () -> Shape? } -> Shape?
120
-
121
- # def include_self?: (AST::Types::t) -> bool
122
-
123
- # def definition_builder: () -> RBS::DefinitionBuilder
124
-
125
- # def object_shape: (
126
- # AST::Types::Name::Instance | AST::Types::Name::Singleton | AST::Types::Name::Interface,
127
- # bool public_only,
128
- # boolish keep_self,
129
- # boolish keep_instance,
130
- # boolish keep_singleton
131
- # ) -> Shape
132
-
133
- # def raw_object_shape: (
134
- # AST::Types::Name::Instance | AST::Types::Name::Singleton | AST::Types::Name::Interface,
135
- # bool public_only,
136
- # Substitution subst
137
- # ) -> Shape
138
-
139
- # def union_shape: (AST::Types::t, Array[Shape], bool public_only) -> Shape
140
-
141
- # def intersection_shape: (AST::Types::t, Array[Shape], bool public_only) -> Shape
142
-
143
- # def tuple_shape: (AST::Types::Tuple, bool public_only, Config) -> Shape
144
-
145
- # def record_shape: (AST::Types::Record, bool public_only, Config) -> Shape?
146
-
147
- # def proc_shape: (AST::Types::Proc, bool public_only, Config) -> Shape?
148
-
149
-
150
- end
151
- end
152
- end