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,24 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- module Helper
5
- module ChildrenLevel
6
- def level_of_children: (Array[t] children) -> Array[Integer]
7
- end
8
-
9
- module NoFreeVariables
10
- @fvs: Set[variable]
11
-
12
- def free_variables: () -> Set[variable]
13
- end
14
-
15
- module NoChild
16
- def each_child: () { (t) -> void } -> void
17
- | () -> Enumerator[t, void]
18
-
19
- def map_type: () { (t) -> t } -> self
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,33 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- class Instance
5
- attr_reader location: untyped
6
-
7
- def initialize: (?location: untyped?) -> void
8
-
9
- def ==: (untyped other) -> bool
10
-
11
- def hash: () -> Integer
12
-
13
- alias eql? ==
14
-
15
- def subst: (Interface::Substitution s) -> t
16
-
17
- @@fvs: Set[variable]
18
- def free_variables: () -> Set[variable]
19
-
20
- include Helper::NoChild
21
-
22
- def to_s: () -> String
23
-
24
- def level: () -> Array[Integer]
25
-
26
- def with_location: (untyped new_location) -> untyped
27
-
28
- self.@instance: Instance
29
- def self.instance: () -> Instance
30
- end
31
- end
32
- end
33
- end
@@ -1,40 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- class Intersection
5
- attr_reader types: Array[t]
6
-
7
- attr_reader location: untyped
8
-
9
- def initialize: (types: Array[t], ?location: untyped?) -> void
10
-
11
- def self.build: (types: Array[t], ?location: untyped?) -> t
12
-
13
- def ==: (untyped other) -> bool
14
-
15
- @hash: Integer
16
- def hash: () -> Integer
17
-
18
- alias eql? ==
19
-
20
- def subst: (Interface::Substitution s) -> t
21
-
22
- def to_s: () -> String
23
-
24
- @fvs: Set[variable]
25
- def free_variables: () -> Set[variable]
26
-
27
- include Helper::ChildrenLevel
28
-
29
- def each_child: () { (t) -> void } -> void
30
- | () -> Enumerator[t, void]
31
-
32
- def map_type: () { (t) -> t } -> t
33
-
34
- def level: () -> Array[Integer]
35
-
36
- def with_location: (untyped new_location) -> Intersection
37
- end
38
- end
39
- end
40
- end
@@ -1,35 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- class Literal
5
- attr_reader location: untyped
6
-
7
- type value = Integer | String | Symbol | TrueClass | FalseClass
8
-
9
- attr_reader value: value
10
-
11
- def initialize: (value: value, ?location: untyped?) -> void
12
-
13
- def ==: (untyped other) -> bool
14
-
15
- def hash: () -> Integer
16
-
17
- alias eql? ==
18
-
19
- def subst: (Interface::Substitution s) -> Literal
20
-
21
- def to_s: () -> String
22
-
23
- include Helper::NoFreeVariables
24
-
25
- include Helper::NoChild
26
-
27
- def level: () -> Array[Integer]
28
-
29
- def with_location: (untyped new_location) -> Literal
30
-
31
- def back_type: () -> AST::Types::Name::Instance
32
- end
33
- end
34
- end
35
- end
@@ -1,83 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- module Logic
5
- class Base
6
- attr_reader location: untyped
7
-
8
- def subst: (Interface::Substitution s) -> self
9
-
10
- include Helper::NoFreeVariables
11
-
12
- include Helper::NoChild
13
-
14
- def hash: () -> Integer
15
-
16
- def ==: (untyped other) -> bool
17
-
18
- alias eql? ==
19
-
20
- def to_s: () -> String
21
-
22
- def level: () -> Array[Integer]
23
- end
24
-
25
- # A type for `!` (not) operator results.
26
- class Not < Base
27
- def initialize: (?location: untyped?) -> void
28
- end
29
-
30
- # A type for `foo.nil?` call results.
31
- class ReceiverIsNil < Base
32
- def initialize: (?location: untyped?) -> void
33
- end
34
-
35
- #
36
- class ReceiverIsNotNil < Base
37
- def initialize: (?location: untyped?) -> void
38
- end
39
-
40
- # A type for `receiver.is_a?(C)` call results.
41
- class ReceiverIsArg < Base
42
- def initialize: (?location: untyped?) -> void
43
- end
44
-
45
- # A type for `Class#===` call results.
46
- class ArgIsReceiver < Base
47
- def initialize: (?location: untyped?) -> void
48
- end
49
-
50
- # A type for `Object#===` call results.
51
- class ArgEqualsReceiver < Base
52
- def initialize: (?location: untyped?) -> void
53
- end
54
-
55
- # A type for `Class#<` or `Class#<=` call results.
56
- class ArgIsAncestor < Base
57
- def initialize: (?location: untyped?) -> void
58
- end
59
-
60
- # A type with truthy/falsy type environment.
61
- class Env < Base
62
- attr_reader truthy: TypeInference::TypeEnv
63
-
64
- attr_reader falsy: TypeInference::TypeEnv
65
-
66
- attr_reader type: t
67
-
68
- def initialize: (truthy: TypeInference::TypeEnv, falsy: TypeInference::TypeEnv, type: t, ?location: untyped) -> void
69
-
70
- def ==: (untyped other) -> bool
71
-
72
- alias eql? ==
73
-
74
- def hash: () -> Integer
75
-
76
- def inspect: () -> String
77
-
78
- alias to_s inspect
79
- end
80
- end
81
- end
82
- end
83
- end
@@ -1,84 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- # Types with names
5
- #
6
- module Name
7
- class Base
8
- attr_reader location: untyped
9
-
10
- attr_reader name: RBS::TypeName
11
-
12
- def initialize: (name: RBS::TypeName, ?location: untyped?) -> void
13
-
14
- include Helper::NoFreeVariables
15
-
16
- def subst: (Steep::Interface::Substitution s) -> self
17
-
18
- def level: () -> Array[Integer]
19
-
20
- def map_type: () { (t) -> t } -> self
21
- end
22
-
23
- class Applying < Base
24
- attr_reader args: Array[t]
25
-
26
- def initialize: (name: RBS::TypeName, args: Array[t], ?location: untyped?) -> void
27
-
28
- def ==: (untyped other) -> bool
29
-
30
- alias eql? ==
31
-
32
- @hash: Integer
33
- def hash: () -> Integer
34
-
35
- def to_s: () -> ::String
36
-
37
- def with_location: (untyped new_location) -> self
38
-
39
- def subst: (Steep::Interface::Substitution s) -> self
40
-
41
- @fvs: Set[variable]
42
- def free_variables: () -> Set[variable]
43
-
44
- def each_child: () { (t) -> void } -> void
45
- | () -> Enumerator[t, void]
46
-
47
- include Helper::ChildrenLevel
48
-
49
- def level: () -> Array[Integer]
50
-
51
- def map_type: () { (t) -> t } -> self
52
- end
53
-
54
- # Singleton of a class/module
55
- class Singleton < Base
56
- def ==: (untyped other) -> bool
57
-
58
- alias eql? ==
59
-
60
- def hash: () -> Integer
61
-
62
- def to_s: () -> ::String
63
-
64
- def with_location: (untyped new_location) -> Singleton
65
-
66
- include Helper::NoChild
67
- end
68
-
69
- # An instance of a class/module
70
- class Instance < Applying
71
- def to_module: () -> Singleton
72
- end
73
-
74
- # An interface type
75
- class Interface < Applying
76
- end
77
-
78
- # Type alias
79
- class Alias < Applying
80
- end
81
- end
82
- end
83
- end
84
- end
@@ -1,31 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- class Nil
5
- attr_reader location: untyped
6
-
7
- def initialize: (?location: untyped?) -> void
8
-
9
- def ==: (untyped other) -> bool
10
-
11
- def hash: () -> Integer
12
-
13
- alias eql? ==
14
-
15
- def subst: (Interface::Substitution s) -> Nil
16
-
17
- def to_s: () -> String
18
-
19
- include Helper::NoFreeVariables
20
-
21
- include Helper::NoChild
22
-
23
- def level: () -> Array[Integer]
24
-
25
- def with_location: (untyped new_location) -> Nil
26
-
27
- def back_type: () -> Name::Instance
28
- end
29
- end
30
- end
31
- end
@@ -1,53 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- class Proc
5
- attr_reader location: untyped
6
-
7
- attr_reader type: Interface::Function
8
-
9
- attr_reader self_type: AST::Types::t?
10
-
11
- attr_reader block: Interface::Block?
12
-
13
- def initialize: (type: Interface::Function, self_type: AST::Types::t?, block: Interface::Block?, ?location: untyped) -> void
14
-
15
- def ==: (untyped other) -> bool
16
-
17
- def hash: () -> Integer
18
-
19
- alias eql? ==
20
-
21
- def subst: (Interface::Substitution s) -> Proc
22
-
23
- def to_s: () -> ::String
24
-
25
- @fvs: Set[variable]
26
- def free_variables: () -> Set[variable]
27
-
28
- include Helper::ChildrenLevel
29
-
30
- def level: () -> Array[Integer]
31
-
32
- def with_location: (untyped new_location) -> Proc
33
-
34
- def map_type: () { (AST::Types::t) -> AST::Types::t } -> Proc
35
-
36
- # Returns true if the proc requires exactly one argument
37
- #
38
- # * One required argument,
39
- # * No optional/rest argument, and
40
- # * No keywords
41
- #
42
- def one_arg?: () -> bool
43
-
44
- def back_type: () -> AST::Types::t
45
-
46
- def block_required?: () -> bool
47
-
48
- def each_child: () { (AST::Types::t) -> void } -> void
49
- | () -> Enumerator[AST::Types::t, void]
50
- end
51
- end
52
- end
53
- end
@@ -1,39 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- class Record
5
- type key = Symbol | String | Integer
6
-
7
- attr_reader location: untyped
8
-
9
- attr_reader elements: Hash[key, t]
10
-
11
- def initialize: (elements: Hash[key, t], ?location: untyped) -> void
12
-
13
- def ==: (untyped other) -> bool
14
-
15
- def hash: () -> Integer
16
-
17
- alias eql? ==
18
-
19
- def subst: (Interface::Substitution s) -> Record
20
-
21
- def to_s: () -> String
22
-
23
- @fvs: Set[variable]
24
- def free_variables: () -> Set[variable]
25
-
26
- include Helper::ChildrenLevel
27
-
28
- def each_child: () { (t) -> void } -> void
29
- | () -> Enumerator[t, void]
30
-
31
- def map_type: () { (t) -> t } -> Record
32
-
33
- def level: () -> Array[Integer]
34
-
35
- def with_location: (untyped new_location) -> Record
36
- end
37
- end
38
- end
39
- end
@@ -1,33 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- class Self
5
- attr_reader location: untyped
6
-
7
- def initialize: (?location: untyped?) -> void
8
-
9
- def ==: (untyped other) -> bool
10
-
11
- def hash: () -> Integer
12
-
13
- alias eql? ==
14
-
15
- def to_s: () -> String
16
-
17
- include Helper::NoChild
18
-
19
- def subst: (Interface::Substitution s) -> t
20
-
21
- @@fvs: Set[variable]
22
- def free_variables: () -> Set[variable]
23
-
24
- def level: () -> Array[Integer]
25
-
26
- def with_location: (untyped new_location) -> Self
27
-
28
- self.@instance: Self
29
- def self.instance: () -> Self
30
- end
31
- end
32
- end
33
- end
@@ -1,29 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- class Top
5
- attr_reader location: untyped
6
-
7
- def initialize: (?location: untyped?) -> void
8
-
9
- def ==: (untyped other) -> bool
10
-
11
- def hash: () -> Integer
12
-
13
- alias eql? ==
14
-
15
- def subst: (Interface::Substitution s) -> Top
16
-
17
- def to_s: () -> String
18
-
19
- include Helper::NoFreeVariables
20
-
21
- include Helper::NoChild
22
-
23
- def level: () -> Array[Integer]
24
-
25
- def with_location: (untyped new_location) -> Top
26
- end
27
- end
28
- end
29
- end
@@ -1,37 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- class Tuple
5
- attr_reader types: Array[t]
6
-
7
- attr_reader location: untyped
8
-
9
- def initialize: (types: Array[t], ?location: untyped) -> void
10
-
11
- def ==: (untyped other) -> bool
12
-
13
- def hash: () -> Integer
14
-
15
- alias eql? ==
16
-
17
- def subst: (Interface::Substitution s) -> Tuple
18
-
19
- def to_s: () -> ::String
20
-
21
- @fvs: Set[variable]
22
- def free_variables: () -> Set[variable]
23
-
24
- include Helper::ChildrenLevel
25
-
26
- def each_child: () { (t) -> void } -> void
27
- | () -> Enumerator[t, void]
28
-
29
- def map_type: () { (t) -> t } -> Tuple
30
-
31
- def level: () -> Array[Integer]
32
-
33
- def with_location: (untyped new_location) -> Tuple
34
- end
35
- end
36
- end
37
- end
@@ -1,40 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- class Union
5
- attr_reader types: Array[t]
6
-
7
- attr_reader location: untyped
8
-
9
- def initialize: (types: Array[t], ?location: untyped) -> void
10
-
11
- def self.build: (types: Array[t], ?location: untyped) -> t
12
-
13
- def ==: (untyped other) -> bool
14
-
15
- @hash: Integer
16
- def hash: () -> Integer
17
-
18
- alias eql? ==
19
-
20
- def subst: (Interface::Substitution s) -> t
21
-
22
- def to_s: () -> ::String
23
-
24
- @fvs: Set[variable]
25
- def free_variables: () -> Set[variable]
26
-
27
- def each_child: () { (t) -> void } -> void
28
- | () -> Enumerator[t, void]
29
-
30
- def map_type: () { (t) -> t } -> t
31
-
32
- include Helper::ChildrenLevel
33
-
34
- def level: () -> Array[Integer]
35
-
36
- def with_location: (untyped new_location) -> Union
37
- end
38
- end
39
- end
40
- end
@@ -1,42 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- # Type variables
5
- class Var
6
- attr_reader name: Symbol
7
-
8
- attr_reader location: untyped
9
-
10
- def initialize: (name: Symbol, ?location: untyped?) -> void
11
-
12
- def ==: (untyped other) -> bool
13
-
14
- def hash: () -> Integer
15
-
16
- alias eql? ==
17
-
18
- self.@mutex: Thread::Mutex
19
- self.@max: Integer
20
-
21
- def self.fresh_name: (Symbol name) -> Symbol
22
-
23
- def self.fresh: (Symbol name, ?location: untyped?) -> Var
24
-
25
- def to_s: () -> String
26
-
27
- def subst: (Interface::Substitution s) -> t
28
-
29
- @fvs: Set[variable]
30
- def free_variables: () -> Set[variable]
31
-
32
- include Helper::NoChild
33
-
34
- def level: () -> Array[Integer]
35
-
36
- def update: (?name: Symbol, ?location: untyped) -> Var
37
-
38
- def with_location: (untyped new_location) -> Var
39
- end
40
- end
41
- end
42
- end
@@ -1,29 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- class Void
5
- attr_reader location: untyped
6
-
7
- def initialize: (?location: untyped?) -> void
8
-
9
- def ==: (untyped other) -> bool
10
-
11
- def hash: () -> Integer
12
-
13
- alias eql? ==
14
-
15
- def subst: (Interface::Substitution s) -> Void
16
-
17
- def to_s: () -> String
18
-
19
- include Helper::NoFreeVariables
20
-
21
- include Helper::NoChild
22
-
23
- def level: () -> Array[Integer]
24
-
25
- def with_location: (untyped new_location) -> Void
26
- end
27
- end
28
- end
29
- end
@@ -1,16 +0,0 @@
1
- module Steep
2
- module AST
3
- module Types
4
- type t = Any | Boolean | Bot | Nil | Top | Void | Literal
5
- | Class | Instance | Self
6
- | Intersection | Record | Tuple | Union
7
- | Name::Alias | Name::Instance | Name::Interface | Name::Singleton
8
- | Proc | Var
9
- | Logic::Not | Logic::ReceiverIsNil | Logic::ReceiverIsNotNil | Logic::ReceiverIsArg | Logic::ArgIsReceiver | Logic::ArgEqualsReceiver | Logic::ArgIsAncestor | Logic::Env
10
-
11
- # Variables and special types that is subject for substitution
12
- #
13
- type variable = Symbol | Class | Instance | Self
14
- end
15
- end
16
- end