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,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/block/a.rb DELETED
@@ -1,10 +0,0 @@
1
- # @type var a: A
2
-
3
- a = A.new
4
-
5
- # @type var i: Integer
6
- # @type var s: String
7
-
8
- s = a.foo
9
-
10
- i = a.foo { nil }
data/smoke/block/a.rbs DELETED
@@ -1,6 +0,0 @@
1
- class A
2
- def foo: { (String) -> untyped } -> String
3
- | -> Integer
4
-
5
- def bar: { (String) -> Integer } -> Symbol
6
- end
data/smoke/block/b.rb DELETED
@@ -1,13 +0,0 @@
1
- # @type var a: A
2
- a = (_ = nil)
3
-
4
- a.bar do |x|
5
- break 3
6
- end
7
-
8
- # @type var s: ::String
9
-
10
- s = a.bar do |x|
11
- # @type break: ::Integer
12
- break 3
13
- end
data/smoke/block/c.rb DELETED
@@ -1,9 +0,0 @@
1
- class OptionalBlock
2
- def optional_block
3
- yield
4
- 30
5
- end
6
- end
7
-
8
- OptionalBlock.new.optional_block()
9
- OptionalBlock.new.optional_block() { :foo }
data/smoke/block/c.rbs DELETED
@@ -1,3 +0,0 @@
1
- class OptionalBlock
2
- def optional_block: ?{ () -> void } -> Integer
3
- end
data/smoke/block/d.rb DELETED
@@ -1,11 +0,0 @@
1
- # @type var a: ^(Integer) -> String
2
- a = -> (x) { x.to_s }
3
-
4
- # @type var b: Array[Float]
5
-
6
- b = [1,2,3].map(&a)
7
-
8
- b = [1,2,3].map(&:to_s)
9
-
10
- [1,2,3].map(&:no_such_method)
11
- [1,2,3].map(&:divmod)
data/smoke/block/e.rb DELETED
@@ -1,12 +0,0 @@
1
- 123.instance_eval do
2
- self - 1
3
- end
4
-
5
- b = BlockWithSelf.new.instance_exec do
6
- @name = ""
7
- @id = 123
8
- end
9
-
10
- [1, ""][0].instance_eval do
11
- foo()
12
- end
data/smoke/block/e.rbs DELETED
@@ -1,4 +0,0 @@
1
- class BlockWithSelf
2
- @name: String
3
- @id: Integer
4
- end
@@ -1,133 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 8
7
- character: 0
8
- end:
9
- line: 8
10
- character: 9
11
- severity: ERROR
12
- message: |-
13
- Cannot assign a value of type `::Integer` to a variable of type `::String`
14
- ::Integer <: ::String
15
- ::Numeric <: ::String
16
- ::Object <: ::String
17
- ::BasicObject <: ::String
18
- code: Ruby::IncompatibleAssignment
19
- - range:
20
- start:
21
- line: 10
22
- character: 0
23
- end:
24
- line: 10
25
- character: 17
26
- severity: ERROR
27
- message: |-
28
- Cannot assign a value of type `::String` to a variable of type `::Integer`
29
- ::String <: ::Integer
30
- ::Object <: ::Integer
31
- ::BasicObject <: ::Integer
32
- code: Ruby::IncompatibleAssignment
33
- - file: b.rb
34
- diagnostics:
35
- - range:
36
- start:
37
- line: 5
38
- character: 2
39
- end:
40
- line: 5
41
- character: 9
42
- severity: ERROR
43
- message: |-
44
- Cannot break with a value of type `::Integer` because type `::Symbol` is assumed
45
- ::Integer <: ::Symbol
46
- ::Numeric <: ::Symbol
47
- ::Object <: ::Symbol
48
- ::BasicObject <: ::Symbol
49
- code: Ruby::BreakTypeMismatch
50
- - range:
51
- start:
52
- line: 10
53
- character: 0
54
- end:
55
- line: 13
56
- character: 3
57
- severity: ERROR
58
- message: |-
59
- Cannot assign a value of type `(::Integer | ::Symbol)` to a variable of type `::String`
60
- (::Integer | ::Symbol) <: ::String
61
- ::Integer <: ::String
62
- ::Numeric <: ::String
63
- ::Object <: ::String
64
- ::BasicObject <: ::String
65
- code: Ruby::IncompatibleAssignment
66
- - file: d.rb
67
- diagnostics:
68
- - range:
69
- start:
70
- line: 6
71
- character: 0
72
- end:
73
- line: 6
74
- character: 19
75
- severity: ERROR
76
- message: |-
77
- Cannot assign a value of type `::Array[::String]` to a variable of type `::Array[::Float]`
78
- ::Array[::String] <: ::Array[::Float]
79
- ::String <: ::Float
80
- ::Object <: ::Float
81
- ::BasicObject <: ::Float
82
- code: Ruby::IncompatibleAssignment
83
- - range:
84
- start:
85
- line: 8
86
- character: 0
87
- end:
88
- line: 8
89
- character: 23
90
- severity: ERROR
91
- message: |-
92
- Cannot assign a value of type `::Array[::String]` to a variable of type `::Array[::Float]`
93
- ::Array[::String] <: ::Array[::Float]
94
- ::String <: ::Float
95
- ::Object <: ::Float
96
- ::BasicObject <: ::Float
97
- code: Ruby::IncompatibleAssignment
98
- - range:
99
- start:
100
- line: 10
101
- character: 12
102
- end:
103
- line: 10
104
- character: 28
105
- severity: ERROR
106
- message: |-
107
- Cannot pass a value of type `::Proc` as a block-pass-argument of type `^(::Integer) -> U(3)`
108
- ::Proc <: ^(::Integer) -> U(3)
109
- code: Ruby::BlockTypeMismatch
110
- - range:
111
- start:
112
- line: 11
113
- character: 12
114
- end:
115
- line: 11
116
- character: 20
117
- severity: ERROR
118
- message: |-
119
- Cannot pass a value of type `::Proc` as a block-pass-argument of type `^(::Integer) -> U(4)`
120
- ::Proc <: ^(::Integer) -> U(4)
121
- code: Ruby::BlockTypeMismatch
122
- - file: e.rb
123
- diagnostics:
124
- - range:
125
- start:
126
- line: 11
127
- character: 2
128
- end:
129
- line: 11
130
- character: 5
131
- severity: ERROR
132
- message: Type `(::Integer | ::String)` does not have method `foo`
133
- code: Ruby::NoMethod
data/smoke/case/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/case/a.rb DELETED
@@ -1,18 +0,0 @@
1
- # @type var a: Integer
2
-
3
- a = case 1
4
- when 2
5
- 1
6
- when 0, 100
7
- ["String"]
8
- when 3
9
- nil
10
- when 4
11
- else
12
- "string"
13
- end
14
-
15
- a = case
16
- when 1+"a"
17
- 30
18
- end
@@ -1,47 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 3
7
- character: 0
8
- end:
9
- line: 13
10
- character: 7
11
- severity: ERROR
12
- message: |-
13
- Cannot assign a value of type `(::Integer | ::Array[::String] | nil | ::String)` to a variable of type `::Integer`
14
- (::Integer | ::Array[::String] | nil | ::String) <: ::Integer
15
- ::Array[::String] <: ::Integer
16
- ::Object <: ::Integer
17
- ::BasicObject <: ::Integer
18
- code: Ruby::IncompatibleAssignment
19
- - range:
20
- start:
21
- line: 15
22
- character: 0
23
- end:
24
- line: 18
25
- character: 7
26
- severity: ERROR
27
- message: |-
28
- Cannot assign a value of type `(::Integer | nil)` to a variable of type `::Integer`
29
- (::Integer | nil) <: ::Integer
30
- nil <: ::Integer
31
- code: Ruby::IncompatibleAssignment
32
- - range:
33
- start:
34
- line: 16
35
- character: 9
36
- end:
37
- line: 16
38
- character: 14
39
- severity: ERROR
40
- message: |-
41
- Cannot find compatible overloading of method `+` of type `::Integer`
42
- Method types:
43
- def +: (::Integer) -> ::Integer
44
- | (::Float) -> ::Float
45
- | (::Rational) -> ::Rational
46
- | (::Complex) -> ::Complex
47
- code: Ruby::UnresolvedOverloading
@@ -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/class/a.rb DELETED
@@ -1,25 +0,0 @@
1
- class A
2
- # A#foo is defined and the implementation is compatible.
3
- def foo(x)
4
- x + ""
5
- end
6
-
7
- # A#bar is defined but the implementation is incompatible.
8
- def bar(y)
9
- y
10
- end
11
-
12
- # Object#to_s is defined but the implementation is incompatible.
13
- def to_s
14
- 3
15
- end
16
-
17
- # No method definition given via signature, there is no type error.
18
- def to_str
19
- 5
20
- end
21
-
22
- def self.baz
23
- "baz"
24
- end
25
- end
data/smoke/class/a.rbs DELETED
@@ -1,23 +0,0 @@
1
- class A
2
- def foo: (String) -> untyped
3
- def bar: () -> String
4
- def self.baz: -> Integer
5
- end
6
-
7
- class B
8
- def name: -> String
9
- end
10
-
11
- class C
12
- def foo: -> instance
13
- def bar: -> instance
14
- end
15
-
16
- class D
17
- def initialize: (String) -> untyped
18
- def foo: -> untyped
19
- end
20
-
21
- interface _E
22
- def foo: -> untyped
23
- end
data/smoke/class/b.rb DELETED
@@ -1,5 +0,0 @@
1
- # @var type s: String
2
- # @var type a: Integer
3
-
4
- s = "".class.allocate
5
- s = 3.class.allocate
data/smoke/class/c.rb DELETED
@@ -1,9 +0,0 @@
1
- class B
2
- # @implements B
3
-
4
- # @dynamic name
5
- attr_reader :name
6
-
7
- # @dynamic type
8
- attr_reader :type
9
- end
data/smoke/class/f.rb DELETED
@@ -1,10 +0,0 @@
1
- # @type var e: _E
2
- # @type var d: D
3
-
4
- e = (_ = nil)
5
- d = (_ = nil)
6
-
7
- e = d
8
-
9
- e = _ = nil
10
- d = e
data/smoke/class/g.rb DELETED
@@ -1,6 +0,0 @@
1
- class B
2
- end
3
-
4
- class C
5
- # @implements ::B
6
- end
data/smoke/class/h.rb DELETED
@@ -1,19 +0,0 @@
1
- class WithSingletonConstructor
2
- # @dynamic foo
3
- attr_reader :foo
4
-
5
- def initialize(foo:)
6
- @foo = foo
7
- end
8
-
9
- def self.create()
10
- instance = new(foo: "hoge")
11
-
12
- instance.foo
13
-
14
- _ = instance
15
- end
16
-
17
- new(foo: "hoge")
18
- create().foo
19
- end
data/smoke/class/h.rbs DELETED
@@ -1,6 +0,0 @@
1
- class WithSingletonConstructor
2
- attr_reader foo: String
3
-
4
- def initialize: (foo: String) -> void
5
- def self.create: -> instance
6
- end
data/smoke/class/i.rb DELETED
@@ -1,14 +0,0 @@
1
- class IncompatibleChild
2
- def foo(arg)
3
- # @type var x: Symbol
4
- x = super()
5
-
6
- "123"
7
- end
8
-
9
- def initialize()
10
- super()
11
-
12
- super
13
- end
14
- end
data/smoke/class/i.rbs DELETED
@@ -1,9 +0,0 @@
1
- class IncompatibleSuper
2
- def foo: () -> Integer
3
- def initialize: (name: String) -> untyped
4
- end
5
-
6
- class IncompatibleChild < IncompatibleSuper
7
- def initialize: () -> untyped
8
- def foo: (Object) -> String
9
- end
@@ -1,117 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 8
7
- character: 10
8
- end:
9
- line: 8
10
- character: 11
11
- severity: ERROR
12
- message: The method parameter is incompatible with the declaration `() -> ::String`
13
- code: Ruby::MethodParameterMismatch
14
- - range:
15
- start:
16
- line: 13
17
- character: 6
18
- end:
19
- line: 13
20
- character: 10
21
- severity: ERROR
22
- message: |-
23
- Cannot allow method body have type `::Integer` because declared as type `::String`
24
- ::Integer <: ::String
25
- ::Numeric <: ::String
26
- ::Object <: ::String
27
- ::BasicObject <: ::String
28
- code: Ruby::MethodBodyTypeMismatch
29
- - range:
30
- start:
31
- line: 22
32
- character: 11
33
- end:
34
- line: 22
35
- character: 14
36
- severity: ERROR
37
- message: |-
38
- Cannot allow method body have type `::String` because declared as type `::Integer`
39
- ::String <: ::Integer
40
- ::Object <: ::Integer
41
- ::BasicObject <: ::Integer
42
- code: Ruby::MethodBodyTypeMismatch
43
- - file: c.rb
44
- diagnostics:
45
- - range:
46
- start:
47
- line: 1
48
- character: 6
49
- end:
50
- line: 1
51
- character: 7
52
- severity: ERROR
53
- message: "@dynamic annotation contains unknown method name `type`"
54
- code: Ruby::UnexpectedDynamicMethod
55
- - file: f.rb
56
- diagnostics:
57
- - range:
58
- start:
59
- line: 10
60
- character: 0
61
- end:
62
- line: 10
63
- character: 5
64
- severity: ERROR
65
- message: |-
66
- Cannot assign a value of type `::_E` to a variable of type `::D`
67
- ::_E <: ::D
68
- code: Ruby::IncompatibleAssignment
69
- - file: g.rb
70
- diagnostics:
71
- - range:
72
- start:
73
- line: 1
74
- character: 6
75
- end:
76
- line: 1
77
- character: 7
78
- severity: ERROR
79
- message: Cannot find implementation of method `::B#name`
80
- code: Ruby::MethodDefinitionMissing
81
- - range:
82
- start:
83
- line: 4
84
- character: 6
85
- end:
86
- line: 4
87
- character: 7
88
- severity: ERROR
89
- message: Cannot find implementation of method `::B#name`
90
- code: Ruby::MethodDefinitionMissing
91
- - file: i.rb
92
- diagnostics:
93
- - range:
94
- start:
95
- line: 4
96
- character: 4
97
- end:
98
- line: 4
99
- character: 15
100
- severity: ERROR
101
- message: |-
102
- Cannot assign a value of type `::Integer` to a variable of type `::Symbol`
103
- ::Integer <: ::Symbol
104
- ::Numeric <: ::Symbol
105
- ::Object <: ::Symbol
106
- ::BasicObject <: ::Symbol
107
- code: Ruby::IncompatibleAssignment
108
- - range:
109
- start:
110
- line: 10
111
- character: 4
112
- end:
113
- line: 10
114
- character: 11
115
- severity: ERROR
116
- message: 'More keyword arguments are required: name'
117
- code: Ruby::InsufficientKeywordArguments
@@ -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/compact/a.rb DELETED
@@ -1,2 +0,0 @@
1
- # @type var a: Array[Integer | bool]
2
- a = [1, nil, true].compact
data/smoke/compact/a.rbs DELETED
@@ -1,5 +0,0 @@
1
- module Compact
2
- class Foo
3
- def compact: () -> Array[String | bool | nil]
4
- end
5
- end
data/smoke/compact/b.rb DELETED
@@ -1,2 +0,0 @@
1
- # @type var y: Array[String | bool]
2
- y = Compact::Foo.new.compact
@@ -1,18 +0,0 @@
1
- ---
2
- - file: b.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 2
7
- character: 0
8
- end:
9
- line: 2
10
- character: 28
11
- severity: ERROR
12
- message: |-
13
- Cannot assign a value of type `::Array[(::String | bool | nil)]` to a variable of type `::Array[(::String | bool)]`
14
- ::Array[(::String | bool | nil)] <: ::Array[(::String | bool)]
15
- (::String | bool | nil) <: (::String | bool)
16
- nil <: (::String | bool)
17
- nil <: ::String
18
- code: Ruby::IncompatibleAssignment
@@ -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/const/a.rb DELETED
@@ -1,27 +0,0 @@
1
- # @type const A: Integer
2
- # @type var x: String
3
-
4
- x = A
5
-
6
- x = B
7
-
8
- module X
9
- # @type const A: Integer
10
-
11
- def foo
12
- # @type var x: String
13
-
14
- x = A
15
-
16
- x = B
17
- end
18
- end
19
-
20
-
21
- # @type const Foo::Bar::Baz: Integer
22
-
23
- x = Foo::Bar::Baz
24
-
25
- z = Foo
26
- x = z::Bar::Baz
27
- x = ::Foo::Bar::Baz
data/smoke/const/b.rb DELETED
@@ -1,7 +0,0 @@
1
- module Foo
2
- module Bar
3
- Baz = "Hello"
4
-
5
- Baz2 = "World"
6
- end
7
- end
data/smoke/const/b.rbs DELETED
@@ -1,5 +0,0 @@
1
- module Foo
2
- module Bar
3
- Baz: Integer
4
- end
5
- end