steep-relaxed 1.9.3.3

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 (165) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.gitmodules +0 -0
  4. data/CHANGELOG.md +1032 -0
  5. data/LICENSE +21 -0
  6. data/README.md +260 -0
  7. data/Rakefile +227 -0
  8. data/STDGEM_DEPENDENCIES.txt +59 -0
  9. data/Steepfile +68 -0
  10. data/bin/console +14 -0
  11. data/bin/generate-diagnostics-docs.rb +112 -0
  12. data/bin/mem_graph.rb +67 -0
  13. data/bin/mem_prof.rb +102 -0
  14. data/bin/output_rebaseline.rb +34 -0
  15. data/bin/output_test.rb +60 -0
  16. data/bin/rbs +20 -0
  17. data/bin/rbs-inline +19 -0
  18. data/bin/setup +9 -0
  19. data/bin/stackprof_test.rb +19 -0
  20. data/bin/steep +19 -0
  21. data/bin/steep-check.rb +251 -0
  22. data/bin/steep-prof +16 -0
  23. data/doc/narrowing.md +195 -0
  24. data/doc/shape.md +194 -0
  25. data/exe/steep +18 -0
  26. data/guides/README.md +5 -0
  27. data/guides/src/gem-rbs-collection/gem-rbs-collection.md +126 -0
  28. data/guides/src/getting-started/getting-started.md +163 -0
  29. data/guides/src/nil-optional/nil-optional.md +195 -0
  30. data/lib/steep/annotation_parser.rb +199 -0
  31. data/lib/steep/ast/annotation/collection.rb +172 -0
  32. data/lib/steep/ast/annotation.rb +137 -0
  33. data/lib/steep/ast/builtin.rb +104 -0
  34. data/lib/steep/ast/ignore.rb +148 -0
  35. data/lib/steep/ast/node/type_application.rb +88 -0
  36. data/lib/steep/ast/node/type_assertion.rb +81 -0
  37. data/lib/steep/ast/types/any.rb +35 -0
  38. data/lib/steep/ast/types/boolean.rb +45 -0
  39. data/lib/steep/ast/types/bot.rb +35 -0
  40. data/lib/steep/ast/types/class.rb +43 -0
  41. data/lib/steep/ast/types/factory.rb +557 -0
  42. data/lib/steep/ast/types/helper.rb +40 -0
  43. data/lib/steep/ast/types/instance.rb +42 -0
  44. data/lib/steep/ast/types/intersection.rb +93 -0
  45. data/lib/steep/ast/types/literal.rb +59 -0
  46. data/lib/steep/ast/types/logic.rb +84 -0
  47. data/lib/steep/ast/types/name.rb +128 -0
  48. data/lib/steep/ast/types/nil.rb +41 -0
  49. data/lib/steep/ast/types/proc.rb +117 -0
  50. data/lib/steep/ast/types/record.rb +79 -0
  51. data/lib/steep/ast/types/self.rb +43 -0
  52. data/lib/steep/ast/types/shared_instance.rb +11 -0
  53. data/lib/steep/ast/types/top.rb +35 -0
  54. data/lib/steep/ast/types/tuple.rb +60 -0
  55. data/lib/steep/ast/types/union.rb +97 -0
  56. data/lib/steep/ast/types/var.rb +65 -0
  57. data/lib/steep/ast/types/void.rb +35 -0
  58. data/lib/steep/cli.rb +401 -0
  59. data/lib/steep/diagnostic/deprecated/else_on_exhaustive_case.rb +20 -0
  60. data/lib/steep/diagnostic/deprecated/unknown_constant_assigned.rb +28 -0
  61. data/lib/steep/diagnostic/helper.rb +18 -0
  62. data/lib/steep/diagnostic/lsp_formatter.rb +78 -0
  63. data/lib/steep/diagnostic/result_printer2.rb +48 -0
  64. data/lib/steep/diagnostic/ruby.rb +1221 -0
  65. data/lib/steep/diagnostic/signature.rb +570 -0
  66. data/lib/steep/drivers/annotations.rb +52 -0
  67. data/lib/steep/drivers/check.rb +339 -0
  68. data/lib/steep/drivers/checkfile.rb +210 -0
  69. data/lib/steep/drivers/diagnostic_printer.rb +105 -0
  70. data/lib/steep/drivers/init.rb +66 -0
  71. data/lib/steep/drivers/langserver.rb +56 -0
  72. data/lib/steep/drivers/print_project.rb +113 -0
  73. data/lib/steep/drivers/stats.rb +203 -0
  74. data/lib/steep/drivers/utils/driver_helper.rb +143 -0
  75. data/lib/steep/drivers/utils/jobs_option.rb +26 -0
  76. data/lib/steep/drivers/vendor.rb +27 -0
  77. data/lib/steep/drivers/watch.rb +194 -0
  78. data/lib/steep/drivers/worker.rb +58 -0
  79. data/lib/steep/equatable.rb +23 -0
  80. data/lib/steep/expectations.rb +228 -0
  81. data/lib/steep/index/rbs_index.rb +350 -0
  82. data/lib/steep/index/signature_symbol_provider.rb +185 -0
  83. data/lib/steep/index/source_index.rb +167 -0
  84. data/lib/steep/interface/block.rb +103 -0
  85. data/lib/steep/interface/builder.rb +843 -0
  86. data/lib/steep/interface/function.rb +1090 -0
  87. data/lib/steep/interface/method_type.rb +330 -0
  88. data/lib/steep/interface/shape.rb +239 -0
  89. data/lib/steep/interface/substitution.rb +159 -0
  90. data/lib/steep/interface/type_param.rb +115 -0
  91. data/lib/steep/located_value.rb +20 -0
  92. data/lib/steep/method_name.rb +42 -0
  93. data/lib/steep/module_helper.rb +24 -0
  94. data/lib/steep/node_helper.rb +273 -0
  95. data/lib/steep/path_helper.rb +30 -0
  96. data/lib/steep/project/dsl.rb +268 -0
  97. data/lib/steep/project/group.rb +31 -0
  98. data/lib/steep/project/options.rb +63 -0
  99. data/lib/steep/project/pattern.rb +59 -0
  100. data/lib/steep/project/target.rb +92 -0
  101. data/lib/steep/project.rb +78 -0
  102. data/lib/steep/rake_task.rb +132 -0
  103. data/lib/steep/range_extension.rb +29 -0
  104. data/lib/steep/server/base_worker.rb +97 -0
  105. data/lib/steep/server/change_buffer.rb +73 -0
  106. data/lib/steep/server/custom_methods.rb +77 -0
  107. data/lib/steep/server/delay_queue.rb +45 -0
  108. data/lib/steep/server/interaction_worker.rb +492 -0
  109. data/lib/steep/server/lsp_formatter.rb +455 -0
  110. data/lib/steep/server/master.rb +922 -0
  111. data/lib/steep/server/target_group_files.rb +205 -0
  112. data/lib/steep/server/type_check_controller.rb +366 -0
  113. data/lib/steep/server/type_check_worker.rb +303 -0
  114. data/lib/steep/server/work_done_progress.rb +64 -0
  115. data/lib/steep/server/worker_process.rb +176 -0
  116. data/lib/steep/services/completion_provider.rb +802 -0
  117. data/lib/steep/services/content_change.rb +61 -0
  118. data/lib/steep/services/file_loader.rb +74 -0
  119. data/lib/steep/services/goto_service.rb +441 -0
  120. data/lib/steep/services/hover_provider/rbs.rb +88 -0
  121. data/lib/steep/services/hover_provider/ruby.rb +221 -0
  122. data/lib/steep/services/hover_provider/singleton_methods.rb +20 -0
  123. data/lib/steep/services/path_assignment.rb +46 -0
  124. data/lib/steep/services/signature_help_provider.rb +202 -0
  125. data/lib/steep/services/signature_service.rb +428 -0
  126. data/lib/steep/services/stats_calculator.rb +68 -0
  127. data/lib/steep/services/type_check_service.rb +394 -0
  128. data/lib/steep/services/type_name_completion.rb +236 -0
  129. data/lib/steep/signature/validator.rb +651 -0
  130. data/lib/steep/source/ignore_ranges.rb +69 -0
  131. data/lib/steep/source.rb +691 -0
  132. data/lib/steep/subtyping/cache.rb +30 -0
  133. data/lib/steep/subtyping/check.rb +1113 -0
  134. data/lib/steep/subtyping/constraints.rb +341 -0
  135. data/lib/steep/subtyping/relation.rb +101 -0
  136. data/lib/steep/subtyping/result.rb +324 -0
  137. data/lib/steep/subtyping/variable_variance.rb +89 -0
  138. data/lib/steep/test.rb +9 -0
  139. data/lib/steep/thread_waiter.rb +43 -0
  140. data/lib/steep/type_construction.rb +5183 -0
  141. data/lib/steep/type_inference/block_params.rb +416 -0
  142. data/lib/steep/type_inference/case_when.rb +303 -0
  143. data/lib/steep/type_inference/constant_env.rb +56 -0
  144. data/lib/steep/type_inference/context.rb +195 -0
  145. data/lib/steep/type_inference/logic_type_interpreter.rb +613 -0
  146. data/lib/steep/type_inference/method_call.rb +193 -0
  147. data/lib/steep/type_inference/method_params.rb +531 -0
  148. data/lib/steep/type_inference/multiple_assignment.rb +194 -0
  149. data/lib/steep/type_inference/send_args.rb +712 -0
  150. data/lib/steep/type_inference/type_env.rb +341 -0
  151. data/lib/steep/type_inference/type_env_builder.rb +138 -0
  152. data/lib/steep/typing.rb +321 -0
  153. data/lib/steep/version.rb +3 -0
  154. data/lib/steep.rb +369 -0
  155. data/manual/annotations.md +181 -0
  156. data/manual/ignore.md +20 -0
  157. data/manual/ruby-diagnostics.md +1879 -0
  158. data/sample/Steepfile +22 -0
  159. data/sample/lib/conference.rb +49 -0
  160. data/sample/lib/length.rb +35 -0
  161. data/sample/sig/conference.rbs +42 -0
  162. data/sample/sig/generics.rbs +15 -0
  163. data/sample/sig/length.rbs +34 -0
  164. data/steep-relaxed.gemspec +56 -0
  165. metadata +340 -0
@@ -0,0 +1,181 @@
1
+ # Annotations
2
+
3
+ ## Core Annotations
4
+
5
+ ### Variable type
6
+
7
+ Variable type annotation tells type of local variable.
8
+
9
+ #### Example
10
+
11
+ ```
12
+ # @type var x: String
13
+ # @type var klass: Class
14
+ ```
15
+
16
+ #### Syntax
17
+
18
+ * `@type` `var` *x* `:` *type*
19
+
20
+ ### Self type
21
+
22
+ Self type annotation tells type of `self`.
23
+
24
+ #### Example
25
+
26
+ ```
27
+ # @type self: Object
28
+ ```
29
+
30
+ #### Syntax
31
+
32
+ * `@type` `self` `:` *type*
33
+
34
+ ### Instance variable type
35
+
36
+ Instance variable type annotation tells type of instance variable.
37
+ This annotation applies to instance variable of current context.
38
+ If it's written in `module` declaration, it applies to instance variable of the module, not its instance.
39
+
40
+ #### Example
41
+
42
+ ```
43
+ # @type ivar @owner: Person
44
+ ```
45
+
46
+ #### Syntax
47
+
48
+ * `@type` `ivar` *ivar* `:` *type*
49
+
50
+ ### Global variable type
51
+
52
+ Global variable type annotation tells type of global variable.
53
+
54
+ #### Example
55
+
56
+ ```
57
+ # @type gvar $LOAD_PATH: Array<String>
58
+ ```
59
+
60
+ #### Syntax
61
+
62
+ * `@type` `gvar` *gvar* `:` *type*
63
+
64
+ ### Constant type
65
+
66
+ Constant type annotation tells type of constant.
67
+ Note that constant resolution is done syntactically.
68
+ Annotation on `File::Append` does not apply to `::File::Append`.
69
+
70
+ #### Example
71
+
72
+ ```
73
+ # @type const File::Append : Integer
74
+ ```
75
+
76
+ #### Syntax
77
+
78
+ * `@type` `const` *const* `:` *type*
79
+
80
+ ### Method type annotation
81
+
82
+ Method type annotation tells type of method being implemented in current scope.
83
+
84
+ This annotation is used to tell types of method parameters and its body.
85
+ Union method type cannot be written.
86
+
87
+ #### Example
88
+
89
+ ```
90
+ # @type method foo: (String) -> any
91
+ ```
92
+
93
+ #### Syntax
94
+
95
+ * `@type` `method` *method* `:` *single method type*
96
+
97
+ ## Module Annotations
98
+
99
+ Module annotations is about defining modules and classes in Ruby.
100
+ This kind of annotations should be written in module context.
101
+
102
+ ### Instance type annotation
103
+
104
+ Instance type annotation tells type of instance of class or module which is being defined.
105
+
106
+ #### Example
107
+
108
+ ```
109
+ # @type instance: Foo
110
+ ```
111
+
112
+ #### Syntax
113
+
114
+ * `@type` `instance` `:` *type*
115
+
116
+ ### Module type annotation
117
+
118
+ Module type annotation tells type of module of class or module which is being defined.
119
+
120
+ #### Example
121
+
122
+ ```
123
+ # @type module: Foo.class
124
+ ```
125
+
126
+ #### Syntax
127
+
128
+ * `@type` `module` `:` *type*
129
+
130
+ ### Instance/module ivar type annotation
131
+
132
+ This annotation tells instance variable of instance.
133
+
134
+ #### Example
135
+
136
+ ```
137
+ # @type instance ivar @x: String
138
+ # @type module ivar @klass: String.class
139
+ ```
140
+
141
+ #### Syntax
142
+
143
+ * `@type` `instance` `ivar` *ivar* `:` *type*
144
+ * `@type` `module` `ivar` *ivar* `:` *type*
145
+
146
+ ## Type assertion
147
+
148
+ Type assertion allows declaring type of an expression inline, without introducing new local variable with variable type annotation.
149
+
150
+ ### Example
151
+
152
+ ```
153
+ array = [] #: Array[String]
154
+
155
+ path = nil #: Pathname?
156
+ ```
157
+
158
+ ##### Syntax
159
+
160
+ * `#:` *type*
161
+
162
+ ## Type application
163
+
164
+ Type application is for generic method calls.
165
+
166
+ ### Example
167
+
168
+ ```
169
+ table = accounts.each_with_object({}) do |account, table| #$ Hash[String, Account]
170
+ table[account.email] = account
171
+ end
172
+ ```
173
+
174
+ The `each_with_object` method has `[T] (T) { (Account, T) -> void } -> T`,
175
+ and the type application syntax directly specifies the type of `T`.
176
+
177
+ So the resulting type is `(Hash[String, Account]) { (Account, Hash[String, Account]) -> void } -> Hash[String, Account]`.
178
+
179
+ #### Syntax
180
+
181
+ * `#$` *type*
data/manual/ignore.md ADDED
@@ -0,0 +1,20 @@
1
+ # Ignore diagnostics
2
+
3
+ Steep allows you to ignore diagnostics by adding comments to your code.
4
+
5
+ ```ruby
6
+ # Ignoring a range of lines
7
+
8
+ # steep:ignore:start
9
+
10
+ foo() # NoMethod is detected, but ignored
11
+
12
+ # steep:ignore:end
13
+ ```
14
+
15
+ ```ruby
16
+ # Ignoring a specific line
17
+
18
+ foo() # steep:ignore
19
+ foo() # steep:ignore NoMethod
20
+ ```