steep 1.6.0 → 1.7.0.dev.2

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 (314) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +6 -0
  3. data/.github/workflows/ruby-windows.yml +2 -1
  4. data/.github/workflows/ruby.yml +9 -10
  5. data/.gitignore +0 -1
  6. data/Gemfile +1 -1
  7. data/Gemfile.lock +30 -28
  8. data/Rakefile +5 -0
  9. data/bin/output_test.rb +1 -0
  10. data/doc/narrowing.md +195 -0
  11. data/gemfile_steep/Gemfile +1 -1
  12. data/gemfile_steep/Gemfile.lock +31 -16
  13. data/guides/src/getting-started/getting-started.md +10 -11
  14. data/lib/steep/ast/ignore.rb +148 -0
  15. data/lib/steep/cli.rb +6 -1
  16. data/lib/steep/diagnostic/ruby.rb +16 -0
  17. data/lib/steep/drivers/utils/driver_helper.rb +22 -11
  18. data/lib/steep/node_helper.rb +12 -0
  19. data/lib/steep/project/dsl.rb +18 -21
  20. data/lib/steep/project/options.rb +39 -2
  21. data/lib/steep/project.rb +11 -7
  22. data/lib/steep/server/change_buffer.rb +2 -2
  23. data/lib/steep/server/interaction_worker.rb +61 -11
  24. data/lib/steep/server/worker_process.rb +3 -1
  25. data/lib/steep/services/completion_provider.rb +39 -8
  26. data/lib/steep/services/file_loader.rb +3 -2
  27. data/lib/steep/services/signature_help_provider.rb +20 -17
  28. data/lib/steep/services/type_check_service.rb +36 -8
  29. data/lib/steep/source/ignore_ranges.rb +69 -0
  30. data/lib/steep/source.rb +10 -4
  31. data/lib/steep/subtyping/check.rb +6 -0
  32. data/lib/steep/subtyping/result.rb +6 -0
  33. data/lib/steep/type_construction.rb +6 -151
  34. data/lib/steep/type_inference/case_when.rb +301 -0
  35. data/lib/steep/version.rb +1 -1
  36. data/lib/steep.rb +14 -1
  37. data/rbs_collection.steep.lock.yaml +8 -6
  38. data/sig/shims/parser.rbs +10 -0
  39. data/sig/shims/yaml.rbs +4 -0
  40. data/sig/steep/ast/ignore.rbs +66 -0
  41. data/sig/steep/diagnostic/ruby.rbs +8 -0
  42. data/sig/steep/node_helper.rbs +2 -0
  43. data/sig/steep/project/dsl.rbs +8 -4
  44. data/sig/steep/project/options.rbs +21 -1
  45. data/sig/steep/project.rbs +3 -3
  46. data/sig/steep/server/change_buffer.rbs +6 -4
  47. data/sig/steep/server/interaction_worker.rbs +10 -0
  48. data/sig/steep/server/worker_process.rbs +4 -4
  49. data/sig/steep/services/completion_provider.rbs +14 -1
  50. data/sig/steep/services/type_check_service.rbs +6 -1
  51. data/sig/steep/source/ignore_ranges.rbs +38 -0
  52. data/sig/steep/source.rbs +5 -2
  53. data/sig/steep/subtyping/check.rbs +4 -2
  54. data/sig/steep/subtyping/result.rbs +5 -1
  55. data/sig/steep/type_construction.rbs +1 -26
  56. data/sig/steep/type_inference/case_when.rbs +130 -0
  57. data/sig/steep.rbs +9 -0
  58. data/steep.gemspec +1 -1
  59. metadata +11 -258
  60. data/smoke/alias/Steepfile +0 -6
  61. data/smoke/alias/a.rb +0 -16
  62. data/smoke/alias/a.rbs +0 -10
  63. data/smoke/alias/b.rb +0 -6
  64. data/smoke/alias/c.rb +0 -8
  65. data/smoke/alias/test_expectations.yml +0 -96
  66. data/smoke/and/Steepfile +0 -6
  67. data/smoke/and/a.rb +0 -8
  68. data/smoke/and/test_expectations.yml +0 -29
  69. data/smoke/array/Steepfile +0 -6
  70. data/smoke/array/a.rb +0 -18
  71. data/smoke/array/b.rb +0 -12
  72. data/smoke/array/c.rb +0 -6
  73. data/smoke/array/test_expectations.yml +0 -103
  74. data/smoke/block/Steepfile +0 -6
  75. data/smoke/block/a.rb +0 -10
  76. data/smoke/block/a.rbs +0 -6
  77. data/smoke/block/b.rb +0 -13
  78. data/smoke/block/c.rb +0 -9
  79. data/smoke/block/c.rbs +0 -3
  80. data/smoke/block/d.rb +0 -11
  81. data/smoke/block/e.rb +0 -12
  82. data/smoke/block/e.rbs +0 -4
  83. data/smoke/block/test_expectations.yml +0 -133
  84. data/smoke/case/Steepfile +0 -6
  85. data/smoke/case/a.rb +0 -18
  86. data/smoke/case/test_expectations.yml +0 -47
  87. data/smoke/class/Steepfile +0 -6
  88. data/smoke/class/a.rb +0 -25
  89. data/smoke/class/a.rbs +0 -23
  90. data/smoke/class/b.rb +0 -5
  91. data/smoke/class/c.rb +0 -9
  92. data/smoke/class/f.rb +0 -10
  93. data/smoke/class/g.rb +0 -6
  94. data/smoke/class/h.rb +0 -19
  95. data/smoke/class/h.rbs +0 -6
  96. data/smoke/class/i.rb +0 -14
  97. data/smoke/class/i.rbs +0 -9
  98. data/smoke/class/test_expectations.yml +0 -117
  99. data/smoke/compact/Steepfile +0 -6
  100. data/smoke/compact/a.rb +0 -2
  101. data/smoke/compact/a.rbs +0 -5
  102. data/smoke/compact/b.rb +0 -2
  103. data/smoke/compact/test_expectations.yml +0 -18
  104. data/smoke/const/Steepfile +0 -6
  105. data/smoke/const/a.rb +0 -27
  106. data/smoke/const/b.rb +0 -7
  107. data/smoke/const/b.rbs +0 -5
  108. data/smoke/const/test_expectations.yml +0 -134
  109. data/smoke/diagnostics/Steepfile +0 -6
  110. data/smoke/diagnostics/a.rbs +0 -22
  111. data/smoke/diagnostics/argument_type_mismatch.rb +0 -1
  112. data/smoke/diagnostics/block_body_type_mismatch.rb +0 -1
  113. data/smoke/diagnostics/block_type_mismatch.rb +0 -3
  114. data/smoke/diagnostics/break_type_mismatch.rb +0 -1
  115. data/smoke/diagnostics/different_method_parameter_kind.rb +0 -9
  116. data/smoke/diagnostics/else_on_exhaustive_case.rb +0 -12
  117. data/smoke/diagnostics/incompatible_annotation.rb +0 -6
  118. data/smoke/diagnostics/incompatible_argument.rb +0 -1
  119. data/smoke/diagnostics/incompatible_assignment.rb +0 -8
  120. data/smoke/diagnostics/method_arity_mismatch.rb +0 -11
  121. data/smoke/diagnostics/method_body_type_mismatch.rb +0 -6
  122. data/smoke/diagnostics/method_definition_missing.rb +0 -2
  123. data/smoke/diagnostics/method_parameter_mismatch.rb +0 -10
  124. data/smoke/diagnostics/method_return_type_annotation_mismatch.rb +0 -7
  125. data/smoke/diagnostics/missing_keyword.rb +0 -1
  126. data/smoke/diagnostics/no_method.rb +0 -1
  127. data/smoke/diagnostics/proc_type_expected.rb +0 -3
  128. data/smoke/diagnostics/required_block_missing.rb +0 -1
  129. data/smoke/diagnostics/return_type_mismatch.rb +0 -6
  130. data/smoke/diagnostics/test_expectations.yml +0 -591
  131. data/smoke/diagnostics/unexpected_block_given.rb +0 -1
  132. data/smoke/diagnostics/unexpected_dynamic_method.rb +0 -3
  133. data/smoke/diagnostics/unexpected_jump.rb +0 -4
  134. data/smoke/diagnostics/unexpected_jump_value.rb +0 -3
  135. data/smoke/diagnostics/unexpected_keyword.rb +0 -1
  136. data/smoke/diagnostics/unexpected_splat.rb +0 -1
  137. data/smoke/diagnostics/unexpected_yield.rb +0 -6
  138. data/smoke/diagnostics/unknown_constant_assigned.rb +0 -7
  139. data/smoke/diagnostics/unresolved_overloading.rb +0 -1
  140. data/smoke/diagnostics/unsupported_syntax.rb +0 -2
  141. data/smoke/diagnostics-rbs/Steepfile +0 -8
  142. data/smoke/diagnostics-rbs/duplicated-method-definition.rbs +0 -20
  143. data/smoke/diagnostics-rbs/generic-parameter-mismatch.rbs +0 -7
  144. data/smoke/diagnostics-rbs/inherit-module.rbs +0 -2
  145. data/smoke/diagnostics-rbs/invalid-method-overload.rbs +0 -3
  146. data/smoke/diagnostics-rbs/invalid-type-application.rbs +0 -7
  147. data/smoke/diagnostics-rbs/invalid_variance_annotation.rbs +0 -3
  148. data/smoke/diagnostics-rbs/mixin-class-error.rbs +0 -6
  149. data/smoke/diagnostics-rbs/nonregular-type-alias.rbs +0 -3
  150. data/smoke/diagnostics-rbs/recursive-alias.rbs +0 -5
  151. data/smoke/diagnostics-rbs/recursive-class.rbs +0 -8
  152. data/smoke/diagnostics-rbs/recursive-type-alias.rbs +0 -3
  153. data/smoke/diagnostics-rbs/superclass-mismatch.rbs +0 -7
  154. data/smoke/diagnostics-rbs/test_expectations.yml +0 -300
  155. data/smoke/diagnostics-rbs/unknown-method-alias.rbs +0 -3
  156. data/smoke/diagnostics-rbs/unknown-type-name-2.rbs +0 -5
  157. data/smoke/diagnostics-rbs/unknown-type-name.rbs +0 -13
  158. data/smoke/diagnostics-rbs-duplicated/Steepfile +0 -6
  159. data/smoke/diagnostics-rbs-duplicated/a.rbs +0 -5
  160. data/smoke/diagnostics-rbs-duplicated/test_expectations.yml +0 -13
  161. data/smoke/diagnostics-ruby-unsat/Steepfile +0 -6
  162. data/smoke/diagnostics-ruby-unsat/a.rbs +0 -3
  163. data/smoke/diagnostics-ruby-unsat/test_expectations.yml +0 -27
  164. data/smoke/diagnostics-ruby-unsat/unsatisfiable_constraint.rb +0 -6
  165. data/smoke/dstr/Steepfile +0 -6
  166. data/smoke/dstr/a.rb +0 -5
  167. data/smoke/dstr/test_expectations.yml +0 -13
  168. data/smoke/ensure/Steepfile +0 -6
  169. data/smoke/ensure/a.rb +0 -18
  170. data/smoke/ensure/test_expectations.yml +0 -62
  171. data/smoke/enumerator/Steepfile +0 -6
  172. data/smoke/enumerator/a.rb +0 -6
  173. data/smoke/enumerator/b.rb +0 -17
  174. data/smoke/enumerator/test_expectations.yml +0 -47
  175. data/smoke/extension/Steepfile +0 -6
  176. data/smoke/extension/a.rb +0 -10
  177. data/smoke/extension/a.rbs +0 -13
  178. data/smoke/extension/b.rb +0 -10
  179. data/smoke/extension/c.rb +0 -9
  180. data/smoke/extension/d.rb +0 -2
  181. data/smoke/extension/e.rb +0 -2
  182. data/smoke/extension/e.rbs +0 -7
  183. data/smoke/extension/f.rb +0 -2
  184. data/smoke/extension/f.rbs +0 -3
  185. data/smoke/extension/test_expectations.yml +0 -73
  186. data/smoke/hash/Steepfile +0 -6
  187. data/smoke/hash/a.rb +0 -17
  188. data/smoke/hash/a.rbs +0 -8
  189. data/smoke/hash/b.rb +0 -6
  190. data/smoke/hash/c.rb +0 -15
  191. data/smoke/hash/d.rb +0 -5
  192. data/smoke/hash/e.rb +0 -1
  193. data/smoke/hash/e.rbs +0 -3
  194. data/smoke/hash/f.rb +0 -11
  195. data/smoke/hash/test_expectations.yml +0 -81
  196. data/smoke/hello/Steepfile +0 -6
  197. data/smoke/hello/hello.rb +0 -11
  198. data/smoke/hello/hello.rbs +0 -7
  199. data/smoke/hello/test_expectations.yml +0 -25
  200. data/smoke/if/Steepfile +0 -6
  201. data/smoke/if/a.rb +0 -20
  202. data/smoke/if/test_expectations.yml +0 -34
  203. data/smoke/implements/Steepfile +0 -6
  204. data/smoke/implements/a.rb +0 -12
  205. data/smoke/implements/a.rbs +0 -6
  206. data/smoke/implements/b.rb +0 -13
  207. data/smoke/implements/b.rbs +0 -12
  208. data/smoke/implements/test_expectations.yml +0 -23
  209. data/smoke/initialize/Steepfile +0 -6
  210. data/smoke/initialize/a.rb +0 -12
  211. data/smoke/initialize/a.rbs +0 -3
  212. data/smoke/initialize/test_expectations.yml +0 -1
  213. data/smoke/integer/Steepfile +0 -6
  214. data/smoke/integer/a.rb +0 -26
  215. data/smoke/integer/test_expectations.yml +0 -110
  216. data/smoke/interface/Steepfile +0 -6
  217. data/smoke/interface/a.rb +0 -12
  218. data/smoke/interface/a.rbs +0 -12
  219. data/smoke/interface/test_expectations.yml +0 -23
  220. data/smoke/kwbegin/Steepfile +0 -6
  221. data/smoke/kwbegin/a.rb +0 -7
  222. data/smoke/kwbegin/test_expectations.yml +0 -17
  223. data/smoke/lambda/Steepfile +0 -6
  224. data/smoke/lambda/a.rb +0 -10
  225. data/smoke/lambda/test_expectations.yml +0 -17
  226. data/smoke/literal/Steepfile +0 -6
  227. data/smoke/literal/a.rb +0 -11
  228. data/smoke/literal/b.rb +0 -7
  229. data/smoke/literal/literal_methods.rbs +0 -4
  230. data/smoke/literal/test_expectations.yml +0 -106
  231. data/smoke/map/Steepfile +0 -6
  232. data/smoke/map/a.rb +0 -5
  233. data/smoke/map/test_expectations.yml +0 -1
  234. data/smoke/method/Steepfile +0 -6
  235. data/smoke/method/a.rb +0 -21
  236. data/smoke/method/a.rbs +0 -4
  237. data/smoke/method/b.rb +0 -25
  238. data/smoke/method/c.rb +0 -5
  239. data/smoke/method/d.rb +0 -1
  240. data/smoke/method/d.rbs +0 -3
  241. data/smoke/method/test_expectations.yml +0 -121
  242. data/smoke/module/Steepfile +0 -6
  243. data/smoke/module/a.rb +0 -19
  244. data/smoke/module/a.rbs +0 -16
  245. data/smoke/module/b.rb +0 -6
  246. data/smoke/module/c.rb +0 -22
  247. data/smoke/module/d.rb +0 -4
  248. data/smoke/module/e.rb +0 -13
  249. data/smoke/module/f.rb +0 -11
  250. data/smoke/module/test_expectations.yml +0 -75
  251. data/smoke/regexp/Steepfile +0 -6
  252. data/smoke/regexp/a.rb +0 -109
  253. data/smoke/regexp/b.rb +0 -79
  254. data/smoke/regexp/test_expectations.yml +0 -615
  255. data/smoke/regression/Steepfile +0 -6
  256. data/smoke/regression/array.rb +0 -7
  257. data/smoke/regression/block_param_split.rb +0 -7
  258. data/smoke/regression/block_param_split.rbs +0 -3
  259. data/smoke/regression/empty_yield.rb +0 -5
  260. data/smoke/regression/empty_yield.rbs +0 -3
  261. data/smoke/regression/enumerator_product.rb +0 -1
  262. data/smoke/regression/fun.rb +0 -8
  263. data/smoke/regression/fun.rbs +0 -4
  264. data/smoke/regression/hash.rb +0 -7
  265. data/smoke/regression/hello world.rb +0 -1
  266. data/smoke/regression/issue_328.rb +0 -1
  267. data/smoke/regression/issue_328.rbs +0 -0
  268. data/smoke/regression/issue_332.rb +0 -11
  269. data/smoke/regression/issue_332.rbs +0 -19
  270. data/smoke/regression/issue_372.rb +0 -8
  271. data/smoke/regression/issue_372.rbs +0 -4
  272. data/smoke/regression/lambda.rb +0 -3
  273. data/smoke/regression/masgn.rb +0 -4
  274. data/smoke/regression/poly_new.rb +0 -2
  275. data/smoke/regression/poly_new.rbs +0 -4
  276. data/smoke/regression/range.rb +0 -5
  277. data/smoke/regression/set_divide.rb +0 -12
  278. data/smoke/regression/test_expectations.yml +0 -120
  279. data/smoke/regression/thread.rb +0 -7
  280. data/smoke/rescue/Steepfile +0 -6
  281. data/smoke/rescue/a.rb +0 -48
  282. data/smoke/rescue/test_expectations.yml +0 -79
  283. data/smoke/self/Steepfile +0 -6
  284. data/smoke/self/a.rb +0 -21
  285. data/smoke/self/a.rbs +0 -4
  286. data/smoke/self/test_expectations.yml +0 -23
  287. data/smoke/skip/Steepfile +0 -6
  288. data/smoke/skip/skip.rb +0 -13
  289. data/smoke/skip/test_expectations.yml +0 -23
  290. data/smoke/stdout/Steepfile +0 -6
  291. data/smoke/stdout/a.rb +0 -8
  292. data/smoke/stdout/a.rbs +0 -7
  293. data/smoke/stdout/test_expectations.yml +0 -1
  294. data/smoke/super/Steepfile +0 -6
  295. data/smoke/super/a.rb +0 -30
  296. data/smoke/super/a.rbs +0 -10
  297. data/smoke/super/test_expectations.yml +0 -69
  298. data/smoke/toplevel/Steepfile +0 -6
  299. data/smoke/toplevel/a.rb +0 -3
  300. data/smoke/toplevel/a.rbs +0 -3
  301. data/smoke/toplevel/test_expectations.yml +0 -15
  302. data/smoke/tsort/Steepfile +0 -7
  303. data/smoke/tsort/a.rb +0 -12
  304. data/smoke/tsort/test_expectations.yml +0 -1
  305. data/smoke/type_case/Steepfile +0 -6
  306. data/smoke/type_case/a.rb +0 -24
  307. data/smoke/type_case/test_expectations.yml +0 -58
  308. data/smoke/unexpected/Steepfile +0 -6
  309. data/smoke/unexpected/test_expectations.yml +0 -13
  310. data/smoke/unexpected/unexpected.rbs +0 -3
  311. data/smoke/yield/Steepfile +0 -6
  312. data/smoke/yield/a.rb +0 -15
  313. data/smoke/yield/b.rb +0 -6
  314. data/smoke/yield/test_expectations.yml +0 -88
@@ -1,8 +0,0 @@
1
- class Issue372
2
- def f(&block)
3
- end
4
-
5
- def g(&block)
6
- f(&block)
7
- end
8
- end
@@ -1,4 +0,0 @@
1
- class Issue372
2
- def f: () ?{ () -> void } -> void
3
- def g: () ?{ () -> void } -> void
4
- end
@@ -1,3 +0,0 @@
1
- module Mod
2
- ->(){}
3
- end
@@ -1,4 +0,0 @@
1
- * = [1,2,3]
2
- *, a = [1,2,3]
3
-
4
- p a
@@ -1,2 +0,0 @@
1
- # @type var a: PolyNew[String]
2
- a = PolyNew.new(a: "")
@@ -1,4 +0,0 @@
1
- class PolyNew[A]
2
- def initialize: (a: A) -> void
3
- def foo: () -> A
4
- end
@@ -1,5 +0,0 @@
1
- # @type var x: Range[String]
2
- x = "foo".."bar"
3
-
4
- # @type var y: Range[String | Integer]
5
- y = x
@@ -1,12 +0,0 @@
1
- d = Set["1","2","3"]
2
- d.ffffffff
3
-
4
- d.divide do |x, y|
5
- x.ggggg
6
-
7
- y.ggggg
8
- end
9
-
10
- d.divide do |x|
11
- x.ggggg
12
- end
@@ -1,120 +0,0 @@
1
- ---
2
- - file: array.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 1
7
- character: 6
8
- end:
9
- line: 1
10
- character: 9
11
- severity: ERROR
12
- message: 'Cannot find the declaration of class: `Foo`'
13
- code: Ruby::UnknownConstant
14
- - file: empty_yield.rb
15
- diagnostics:
16
- - range:
17
- start:
18
- line: 3
19
- character: 4
20
- end:
21
- line: 3
22
- character: 9
23
- severity: ERROR
24
- message: More positional arguments are required
25
- code: Ruby::InsufficientPositionalArguments
26
- - file: hash.rb
27
- diagnostics:
28
- - range:
29
- start:
30
- line: 1
31
- character: 6
32
- end:
33
- line: 1
34
- character: 9
35
- severity: ERROR
36
- message: 'Cannot find the declaration of class: `Foo`'
37
- code: Ruby::UnknownConstant
38
- - file: hello world.rb
39
- diagnostics:
40
- - range:
41
- start:
42
- line: 1
43
- character: 2
44
- end:
45
- line: 1
46
- character: 5
47
- severity: ERROR
48
- message: Type `::Integer` does not have method `foo`
49
- code: Ruby::NoMethod
50
- - file: issue_332.rb
51
- diagnostics:
52
- - range:
53
- start:
54
- line: 7
55
- character: 8
56
- end:
57
- line: 7
58
- character: 20
59
- severity: ERROR
60
- message: |-
61
- Cannot find compatible overloading of method `-` of type `(::Object & ::Issue332::_TimeDurationExtensions & ::Issue332::TimeDurationExtensions)`
62
- Method types:
63
- def -: (::Issue332::Duration) -> ::Time
64
- | (::Numeric) -> ::Time
65
- | (::Time) -> ::Float
66
- code: Ruby::UnresolvedOverloading
67
- - file: lambda.rb
68
- diagnostics:
69
- - range:
70
- start:
71
- line: 1
72
- character: 7
73
- end:
74
- line: 1
75
- character: 10
76
- severity: ERROR
77
- message: 'Cannot find the declaration of module: `Mod`'
78
- code: Ruby::UnknownConstant
79
- - file: set_divide.rb
80
- diagnostics:
81
- - range:
82
- start:
83
- line: 2
84
- character: 2
85
- end:
86
- line: 2
87
- character: 10
88
- severity: ERROR
89
- message: Type `::Set[::String]` does not have method `ffffffff`
90
- code: Ruby::NoMethod
91
- - range:
92
- start:
93
- line: 5
94
- character: 4
95
- end:
96
- line: 5
97
- character: 9
98
- severity: ERROR
99
- message: Type `::String` does not have method `ggggg`
100
- code: Ruby::NoMethod
101
- - range:
102
- start:
103
- line: 7
104
- character: 4
105
- end:
106
- line: 7
107
- character: 9
108
- severity: ERROR
109
- message: Type `::String` does not have method `ggggg`
110
- code: Ruby::NoMethod
111
- - range:
112
- start:
113
- line: 11
114
- character: 4
115
- end:
116
- line: 11
117
- character: 9
118
- severity: ERROR
119
- message: Type `::String` does not have method `ggggg`
120
- code: Ruby::NoMethod
@@ -1,7 +0,0 @@
1
- Thread.new do
2
- Thread.stop
3
- end
4
-
5
-
6
- Thread.start do
7
- end
@@ -1,6 +0,0 @@
1
- target :test do
2
- check "*.rb"
3
- signature "*.rbs"
4
-
5
- configure_code_diagnostics(Steep::Diagnostic::Ruby.all_error)
6
- end
data/smoke/rescue/a.rb DELETED
@@ -1,48 +0,0 @@
1
- # @type var a: Integer
2
-
3
- a = begin
4
- 'foo'
5
- rescue
6
- 1
7
- end
8
-
9
- # @type var b: Integer
10
-
11
- b = 'foo' rescue 1
12
-
13
- # @type var c: Integer
14
-
15
- c = begin
16
- 'foo'
17
- rescue RuntimeError
18
- :sym
19
- rescue StandardError
20
- 1
21
- end
22
-
23
- # @type var e: Integer
24
-
25
- e = begin
26
- 'foo'
27
- rescue RuntimeError
28
- :sym
29
- rescue StandardError
30
- 1
31
- else
32
- [1]
33
- end
34
-
35
- # @type method foo: (String) -> String
36
-
37
- def foo(a)
38
- 10
39
- rescue
40
- 'foo'
41
- end
42
-
43
- # when empty
44
- begin
45
- rescue
46
- else
47
- ensure
48
- end
@@ -1,79 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 3
7
- character: 0
8
- end:
9
- line: 7
10
- character: 7
11
- severity: ERROR
12
- message: |-
13
- Cannot assign a value of type `(::String | ::Integer)` to a variable of type `::Integer`
14
- (::String | ::Integer) <: ::Integer
15
- ::String <: ::Integer
16
- ::Object <: ::Integer
17
- ::BasicObject <: ::Integer
18
- code: Ruby::IncompatibleAssignment
19
- - range:
20
- start:
21
- line: 11
22
- character: 0
23
- end:
24
- line: 11
25
- character: 18
26
- severity: ERROR
27
- message: |-
28
- Cannot assign a value of type `(::String | ::Integer)` to a variable of type `::Integer`
29
- (::String | ::Integer) <: ::Integer
30
- ::String <: ::Integer
31
- ::Object <: ::Integer
32
- ::BasicObject <: ::Integer
33
- code: Ruby::IncompatibleAssignment
34
- - range:
35
- start:
36
- line: 15
37
- character: 0
38
- end:
39
- line: 21
40
- character: 7
41
- severity: ERROR
42
- message: |-
43
- Cannot assign a value of type `(::String | ::Symbol | ::Integer)` to a variable of type `::Integer`
44
- (::String | ::Symbol | ::Integer) <: ::Integer
45
- ::String <: ::Integer
46
- ::Object <: ::Integer
47
- ::BasicObject <: ::Integer
48
- code: Ruby::IncompatibleAssignment
49
- - range:
50
- start:
51
- line: 25
52
- character: 0
53
- end:
54
- line: 33
55
- character: 7
56
- severity: ERROR
57
- message: |-
58
- Cannot assign a value of type `(::Array[::Integer] | ::Symbol | ::Integer)` to a variable of type `::Integer`
59
- (::Array[::Integer] | ::Symbol | ::Integer) <: ::Integer
60
- ::Array[::Integer] <: ::Integer
61
- ::Object <: ::Integer
62
- ::BasicObject <: ::Integer
63
- code: Ruby::IncompatibleAssignment
64
- - range:
65
- start:
66
- line: 37
67
- character: 4
68
- end:
69
- line: 37
70
- character: 7
71
- severity: ERROR
72
- message: |-
73
- Cannot allow method body have type `(::Integer | ::String)` because declared as type `::String`
74
- (::Integer | ::String) <: ::String
75
- ::Integer <: ::String
76
- ::Numeric <: ::String
77
- ::Object <: ::String
78
- ::BasicObject <: ::String
79
- code: Ruby::MethodBodyTypeMismatch
data/smoke/self/Steepfile DELETED
@@ -1,6 +0,0 @@
1
- target :test do
2
- check "*.rb"
3
- signature "*.rbs"
4
-
5
- configure_code_diagnostics(Steep::Diagnostic::Ruby.all_error)
6
- end
data/smoke/self/a.rb DELETED
@@ -1,21 +0,0 @@
1
- def foo
2
- # @type self: A
3
-
4
- self.bar()
5
-
6
- tap do
7
- # @type self: A
8
-
9
- bar
10
- end
11
- end
12
-
13
- def bar
14
- # @type self: Object
15
-
16
- baz
17
-
18
- tap do
19
- baz
20
- end
21
- end
data/smoke/self/a.rbs DELETED
@@ -1,4 +0,0 @@
1
- class A
2
- def foo: -> untyped
3
- def bar: -> untyped
4
- end
@@ -1,23 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 16
7
- character: 2
8
- end:
9
- line: 16
10
- character: 5
11
- severity: ERROR
12
- message: Type `::Object` does not have method `baz`
13
- code: Ruby::NoMethod
14
- - range:
15
- start:
16
- line: 19
17
- character: 4
18
- end:
19
- line: 19
20
- character: 7
21
- severity: ERROR
22
- message: Type `::Object` does not have method `baz`
23
- code: Ruby::NoMethod
data/smoke/skip/Steepfile DELETED
@@ -1,6 +0,0 @@
1
- target :test do
2
- check "*.rb"
3
- signature "*.rbs"
4
-
5
- configure_code_diagnostics(Steep::Diagnostic::Ruby.all_error)
6
- end
data/smoke/skip/skip.rb DELETED
@@ -1,13 +0,0 @@
1
- __skip__ = begin
2
- self.no_such_method
3
- end
4
-
5
- # @type var foo: String
6
-
7
- foo = _ = begin
8
- self.no_such_method
9
- end
10
-
11
- foo = __any__ = begin
12
- self.no_such_method
13
- end
@@ -1,23 +0,0 @@
1
- ---
2
- - file: skip.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 8
7
- character: 7
8
- end:
9
- line: 8
10
- character: 21
11
- severity: ERROR
12
- message: Type `::Object` does not have method `no_such_method`
13
- code: Ruby::NoMethod
14
- - range:
15
- start:
16
- line: 12
17
- character: 7
18
- end:
19
- line: 12
20
- character: 21
21
- severity: ERROR
22
- message: Type `::Object` does not have method `no_such_method`
23
- code: Ruby::NoMethod
@@ -1,6 +0,0 @@
1
- target :test do
2
- check "*.rb"
3
- signature "*.rbs"
4
-
5
- configure_code_diagnostics(Steep::Diagnostic::Ruby.all_error)
6
- end
data/smoke/stdout/a.rb DELETED
@@ -1,8 +0,0 @@
1
- class A
2
- def write_to(io:)
3
- io.puts "Hello World"
4
- end
5
- end
6
-
7
- A.new.write_to(io: STDOUT)
8
- A.new.write_to(io: StringIO.new)
data/smoke/stdout/a.rbs DELETED
@@ -1,7 +0,0 @@
1
- interface _Puts
2
- def puts: (*untyped) -> void
3
- end
4
-
5
- class A
6
- def write_to: (io: _Puts) -> void
7
- end
@@ -1 +0,0 @@
1
- --- []
@@ -1,6 +0,0 @@
1
- target :test do
2
- check "*.rb"
3
- signature "*.rbs"
4
-
5
- configure_code_diagnostics(Steep::Diagnostic::Ruby.all_error)
6
- end
data/smoke/super/a.rb DELETED
@@ -1,30 +0,0 @@
1
- class A
2
- def foo(x)
3
- # @type self: A
4
-
5
- # @type var a: Integer
6
- a = super(x)
7
- a = super
8
-
9
- # @type var b: Object
10
- b = super(x)
11
-
12
- # @type var c: Integer
13
- c = foo(x)
14
- end
15
-
16
- def bar()
17
- # @type self: A
18
-
19
- super()
20
- super
21
- end
22
-
23
- def baz
24
- # @type self: A
25
-
26
- super()
27
-
28
- super
29
- end
30
- end
data/smoke/super/a.rbs DELETED
@@ -1,10 +0,0 @@
1
- class A
2
- def foo: (untyped) -> Integer
3
- include M
4
-
5
- def baz: () -> untyped
6
- end
7
-
8
- module M
9
- def foo: (untyped) -> Object
10
- end
@@ -1,69 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 6
7
- character: 4
8
- end:
9
- line: 6
10
- character: 16
11
- severity: ERROR
12
- message: |-
13
- Cannot assign a value of type `::Object` to a variable of type `::Integer`
14
- ::Object <: ::Integer
15
- ::BasicObject <: ::Integer
16
- code: Ruby::IncompatibleAssignment
17
- - range:
18
- start:
19
- line: 7
20
- character: 4
21
- end:
22
- line: 7
23
- character: 13
24
- severity: ERROR
25
- message: |-
26
- Cannot assign a value of type `::Object` to a variable of type `::Integer`
27
- ::Object <: ::Integer
28
- ::BasicObject <: ::Integer
29
- code: Ruby::IncompatibleAssignment
30
- - range:
31
- start:
32
- line: 19
33
- character: 4
34
- end:
35
- line: 19
36
- character: 11
37
- severity: ERROR
38
- message: Cannot detect the type of the expression
39
- code: Ruby::FallbackAny
40
- - range:
41
- start:
42
- line: 20
43
- character: 4
44
- end:
45
- line: 20
46
- character: 9
47
- severity: ERROR
48
- message: Cannot detect the type of the expression
49
- code: Ruby::FallbackAny
50
- - range:
51
- start:
52
- line: 26
53
- character: 4
54
- end:
55
- line: 26
56
- character: 11
57
- severity: ERROR
58
- message: No superclass method `baz` defined
59
- code: Ruby::UnexpectedSuper
60
- - range:
61
- start:
62
- line: 28
63
- character: 4
64
- end:
65
- line: 28
66
- character: 9
67
- severity: ERROR
68
- message: No superclass method `baz` defined
69
- code: Ruby::UnexpectedSuper
@@ -1,6 +0,0 @@
1
- target :test do
2
- check "*.rb"
3
- signature "*.rbs"
4
-
5
- configure_code_diagnostics(Steep::Diagnostic::Ruby.all_error)
6
- end
data/smoke/toplevel/a.rb DELETED
@@ -1,3 +0,0 @@
1
- def fizz_buzz(n)
2
- nil
3
- end
data/smoke/toplevel/a.rbs DELETED
@@ -1,3 +0,0 @@
1
- class Object
2
- def fizz_buzz: (Integer) -> String
3
- end
@@ -1,15 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 1
7
- character: 4
8
- end:
9
- line: 1
10
- character: 13
11
- severity: ERROR
12
- message: |-
13
- Cannot allow method body have type `nil` because declared as type `::String`
14
- nil <: ::String
15
- code: Ruby::MethodBodyTypeMismatch
@@ -1,7 +0,0 @@
1
- target :test do
2
- check "*.rb"
3
- signature "*.rbs"
4
- library "tsort"
5
-
6
- configure_code_diagnostics(Steep::Diagnostic::Ruby.all_error)
7
- end
data/smoke/tsort/a.rb DELETED
@@ -1,12 +0,0 @@
1
- require "tsort"
2
-
3
- # @type var g: Hash[Integer, Array[Integer]]
4
- g = {1=>[2, 3], 2=>[4], 3=>[2, 4], 4=>[]}
5
-
6
- # @type var each_node: ^() { (Integer) -> void } -> void
7
- each_node = -> (&b) { g.each_key(&b) }
8
- # @type var each_child: ^(Integer) { (Integer) -> void } -> void
9
- each_child = -> (n, &b) { g[n].each(&b) }
10
-
11
- # @type var xs: Array[Integer]
12
- xs = TSort.tsort(each_node, each_child)
@@ -1 +0,0 @@
1
- --- []
@@ -1,6 +0,0 @@
1
- target :test do
2
- check "*.rb"
3
- signature "*.rbs"
4
-
5
- configure_code_diagnostics(Steep::Diagnostic::Ruby.all_error)
6
- end
data/smoke/type_case/a.rb DELETED
@@ -1,24 +0,0 @@
1
- # @type var x: Integer | String | Symbol
2
-
3
- x = (_ = nil)
4
-
5
- case x
6
- when Integer, String
7
- x.foobar()
8
- end
9
-
10
- case x == (_ = 1)
11
- when Integer
12
- x.foobar
13
- end
14
-
15
- case x
16
- when 1
17
- x.foobar
18
- end
19
-
20
- case x
21
- when String
22
- # @type var x: Integer
23
- x + 1
24
- end