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,23 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 5
7
- character: 12
8
- end:
9
- line: 5
10
- character: 15
11
- severity: ERROR
12
- message: Type `::A::Object` does not have method `bar`
13
- code: Ruby::NoMethod
14
- - range:
15
- start:
16
- line: 10
17
- character: 11
18
- end:
19
- line: 10
20
- character: 18
21
- severity: ERROR
22
- message: Type `::Object` does not have method `object?`
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/kwbegin/a.rb DELETED
@@ -1,7 +0,0 @@
1
- # @type var a: Integer
2
-
3
- a = begin
4
- # @type var x: String
5
- x = '1'
6
- x
7
- end
@@ -1,17 +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: 3
11
- severity: ERROR
12
- message: |-
13
- Cannot assign a value of type `::String` to a variable of type `::Integer`
14
- ::String <: ::Integer
15
- ::Object <: ::Integer
16
- ::BasicObject <: ::Integer
17
- 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/lambda/a.rb DELETED
@@ -1,10 +0,0 @@
1
- # @type var a: Integer
2
-
3
- a = -> (x, y) do
4
- # @type var x: String
5
- # @type var y: String
6
- x + y
7
- end["foo", "bar"]
8
-
9
- # @type var c: ^(Integer) -> Integer
10
- c = -> (x) { x + 1 }
@@ -1,17 +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: 17
11
- severity: ERROR
12
- message: |-
13
- Cannot assign a value of type `::String` to a variable of type `::Integer`
14
- ::String <: ::Integer
15
- ::Object <: ::Integer
16
- ::BasicObject <: ::Integer
17
- 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/literal/a.rb DELETED
@@ -1,11 +0,0 @@
1
- # @type var x: String
2
- # @type var y: Integer
3
-
4
- x = 1
5
-
6
- x = :foo
7
-
8
- y = "foo"
9
-
10
- x = true
11
- y = false
data/smoke/literal/b.rb DELETED
@@ -1,7 +0,0 @@
1
- l = LiteralMethods.new
2
-
3
- l.foo(3)
4
- l.foo(4)
5
-
6
- l.bar(foo: :foo)
7
- l.bar(foo: :bar)
@@ -1,4 +0,0 @@
1
- class LiteralMethods
2
- def foo: (3) -> 4
3
- def bar: (foo: :foo) -> 5
4
- end
@@ -1,106 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 4
7
- character: 0
8
- end:
9
- line: 4
10
- character: 5
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: 6
22
- character: 0
23
- end:
24
- line: 6
25
- character: 8
26
- severity: ERROR
27
- message: |-
28
- Cannot assign a value of type `::Symbol` to a variable of type `::String`
29
- ::Symbol <: ::String
30
- ::Object <: ::String
31
- ::BasicObject <: ::String
32
- code: Ruby::IncompatibleAssignment
33
- - range:
34
- start:
35
- line: 8
36
- character: 0
37
- end:
38
- line: 8
39
- character: 9
40
- severity: ERROR
41
- message: |-
42
- Cannot assign a value of type `::String` to a variable of type `::Integer`
43
- ::String <: ::Integer
44
- ::Object <: ::Integer
45
- ::BasicObject <: ::Integer
46
- code: Ruby::IncompatibleAssignment
47
- - range:
48
- start:
49
- line: 10
50
- character: 0
51
- end:
52
- line: 10
53
- character: 8
54
- severity: ERROR
55
- message: |-
56
- Cannot assign a value of type `bool` to a variable of type `::String`
57
- bool <: ::String
58
- (true | false) <: ::String
59
- true <: ::String
60
- ::TrueClass <: ::String
61
- ::Object <: ::String
62
- ::BasicObject <: ::String
63
- code: Ruby::IncompatibleAssignment
64
- - range:
65
- start:
66
- line: 11
67
- character: 0
68
- end:
69
- line: 11
70
- character: 9
71
- severity: ERROR
72
- message: |-
73
- Cannot assign a value of type `bool` to a variable of type `::Integer`
74
- bool <: ::Integer
75
- (true | false) <: ::Integer
76
- true <: ::Integer
77
- ::TrueClass <: ::Integer
78
- ::Object <: ::Integer
79
- ::BasicObject <: ::Integer
80
- code: Ruby::IncompatibleAssignment
81
- - file: b.rb
82
- diagnostics:
83
- - range:
84
- start:
85
- line: 4
86
- character: 6
87
- end:
88
- line: 4
89
- character: 7
90
- severity: ERROR
91
- message: |-
92
- Cannot pass a value of type `::Integer` as an argument of type `3`
93
- ::Integer <: 3
94
- code: Ruby::ArgumentTypeMismatch
95
- - range:
96
- start:
97
- line: 7
98
- character: 11
99
- end:
100
- line: 7
101
- character: 15
102
- severity: ERROR
103
- message: |-
104
- Cannot pass a value of type `::Symbol` as an argument of type `:foo`
105
- ::Symbol <: :foo
106
- code: Ruby::ArgumentTypeMismatch
data/smoke/map/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/map/a.rb DELETED
@@ -1,5 +0,0 @@
1
- a = [1,2,3]
2
-
3
- # @type var b: Array[Integer]
4
-
5
- b = a.map {|x| x.to_i }
@@ -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/method/a.rb DELETED
@@ -1,21 +0,0 @@
1
- # @type method foo: (Integer, y: Integer) -> String
2
-
3
- def foo(x, y:)
4
- # @type var z: String
5
-
6
- z = x
7
-
8
- z = y
9
-
10
- 3
11
- end
12
-
13
- # @type method bar: (Integer) -> String
14
-
15
- def bar(x, y)
16
- # @type var z: String
17
-
18
- z = x
19
-
20
- z = y
21
- end
data/smoke/method/a.rbs DELETED
@@ -1,4 +0,0 @@
1
- class X
2
- def foo: (String) -> Integer
3
- | (Integer) -> String
4
- end
data/smoke/method/b.rb DELETED
@@ -1,25 +0,0 @@
1
- class A
2
- # @implements X
3
-
4
- def foo(x)
5
- :foobar
6
- end
7
- end
8
-
9
- class B
10
- # @implements X
11
-
12
- # @type method foo: (::String | ::Integer) -> untyped
13
- def foo(x)
14
- 3
15
- end
16
- end
17
-
18
- class C
19
- # @implements X
20
-
21
- # @type method foo: (Symbol) -> Symbol
22
- def foo(x)
23
- :foo
24
- end
25
- end
data/smoke/method/c.rb DELETED
@@ -1,5 +0,0 @@
1
- a = 123
2
-
3
- a = -a
4
- b = !a
5
- c = a.nil?
data/smoke/method/d.rb DELETED
@@ -1 +0,0 @@
1
- KeywordMethod.new.hello(type: 123)
data/smoke/method/d.rbs DELETED
@@ -1,3 +0,0 @@
1
- class KeywordMethod
2
- def hello: (type: Integer) -> void
3
- end
@@ -1,121 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 3
7
- character: 4
8
- end:
9
- line: 3
10
- character: 7
11
- severity: ERROR
12
- message: |-
13
- Cannot allow method body have type `::Integer` because declared as type `::String`
14
- ::Integer <: ::String
15
- ::Numeric <: ::String
16
- ::Object <: ::String
17
- ::BasicObject <: ::String
18
- code: Ruby::MethodBodyTypeMismatch
19
- - range:
20
- start:
21
- line: 6
22
- character: 2
23
- end:
24
- line: 6
25
- character: 7
26
- severity: ERROR
27
- message: |-
28
- Cannot assign a value of type `::Integer` to a variable of type `::String`
29
- ::Integer <: ::String
30
- ::Numeric <: ::String
31
- ::Object <: ::String
32
- ::BasicObject <: ::String
33
- code: Ruby::IncompatibleAssignment
34
- - range:
35
- start:
36
- line: 8
37
- character: 2
38
- end:
39
- line: 8
40
- character: 7
41
- severity: ERROR
42
- message: |-
43
- Cannot assign a value of type `::Integer` to a variable of type `::String`
44
- ::Integer <: ::String
45
- ::Numeric <: ::String
46
- ::Object <: ::String
47
- ::BasicObject <: ::String
48
- code: Ruby::IncompatibleAssignment
49
- - range:
50
- start:
51
- line: 15
52
- character: 11
53
- end:
54
- line: 15
55
- character: 12
56
- severity: ERROR
57
- message: The method parameter is incompatible with the declaration `(::Integer)
58
- -> ::String`
59
- code: Ruby::MethodParameterMismatch
60
- - range:
61
- start:
62
- line: 18
63
- character: 2
64
- end:
65
- line: 18
66
- character: 7
67
- severity: ERROR
68
- message: |-
69
- Cannot assign a value of type `::Integer` to a variable of type `::String`
70
- ::Integer <: ::String
71
- ::Numeric <: ::String
72
- ::Object <: ::String
73
- ::BasicObject <: ::String
74
- code: Ruby::IncompatibleAssignment
75
- - file: b.rb
76
- diagnostics:
77
- - range:
78
- start:
79
- line: 1
80
- character: 6
81
- end:
82
- line: 1
83
- character: 7
84
- severity: ERROR
85
- message: 'Cannot find the declaration of class: `A`'
86
- code: Ruby::UnknownConstant
87
- - range:
88
- start:
89
- line: 4
90
- character: 6
91
- end:
92
- line: 4
93
- character: 9
94
- severity: ERROR
95
- message: |-
96
- Cannot allow method body have type `::Symbol` because declared as type `(::Integer | ::String)`
97
- ::Symbol <: (::Integer | ::String)
98
- ::Symbol <: ::Integer
99
- ::Object <: ::Integer
100
- ::BasicObject <: ::Integer
101
- code: Ruby::MethodBodyTypeMismatch
102
- - range:
103
- start:
104
- line: 9
105
- character: 6
106
- end:
107
- line: 9
108
- character: 7
109
- severity: ERROR
110
- message: 'Cannot find the declaration of class: `B`'
111
- code: Ruby::UnknownConstant
112
- - range:
113
- start:
114
- line: 18
115
- character: 6
116
- end:
117
- line: 18
118
- character: 7
119
- severity: ERROR
120
- message: 'Cannot find the declaration of class: `C`'
121
- code: Ruby::UnknownConstant
@@ -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/module/a.rb DELETED
@@ -1,19 +0,0 @@
1
- module A
2
- # @implements A
3
-
4
- def count
5
- # @type var n: ::Integer
6
- n = 0
7
-
8
- each do |_|
9
- n = n + 1
10
- end
11
-
12
- # @type var s: String
13
- s = n
14
-
15
- foo()
16
-
17
- n
18
- end
19
- end
data/smoke/module/a.rbs DELETED
@@ -1,16 +0,0 @@
1
- interface _Each2[A, B]
2
- def each: { (A) -> untyped } -> B
3
- end
4
-
5
- module A : _Each2[Integer, A]
6
- def count: () -> Integer
7
- end
8
-
9
- module X
10
- def foo: () -> Integer
11
- end
12
-
13
- module Palette
14
- def self?.defacto_palette: -> Array[Array[Integer]]
15
- def self.nestopia_palette: -> Array[Array[Integer]]
16
- end
data/smoke/module/b.rb DELETED
@@ -1,6 +0,0 @@
1
- # @type var klass: Class
2
- # @type var mod: Module
3
-
4
- 3.is_a?(3.class)
5
- klass = 3.class
6
- mod = "".class
data/smoke/module/c.rb DELETED
@@ -1,22 +0,0 @@
1
- module A
2
- # @implements A
3
-
4
- def count
5
- if block_given?
6
- n = 0
7
-
8
- each do |_|
9
- n = n + 1
10
- end
11
-
12
- n
13
- else
14
- 0
15
- end
16
- end
17
-
18
- # ok
19
- block_given?
20
-
21
- no_such_method_in_module
22
- end
data/smoke/module/d.rb DELETED
@@ -1,4 +0,0 @@
1
- # If there is a same name module definition, it automatically implements.
2
-
3
- module X
4
- end
data/smoke/module/e.rb DELETED
@@ -1,13 +0,0 @@
1
- # If module has a @implements annotation, it wins
2
-
3
- module X
4
- # @implements A
5
-
6
- def count
7
- 3
8
- end
9
-
10
- def foo
11
- "3"
12
- end
13
- end
data/smoke/module/f.rb DELETED
@@ -1,11 +0,0 @@
1
- module Palette
2
- module_function
3
-
4
- # @dynamic self.defacto_palette
5
-
6
- def defacto_palette
7
- []
8
- end
9
-
10
- # @dynamic nestopia_palette
11
- end
@@ -1,75 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 13
7
- character: 4
8
- end:
9
- line: 13
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: 15
22
- character: 4
23
- end:
24
- line: 15
25
- character: 7
26
- severity: ERROR
27
- message: Type `(::Object & ::_Each2[::Integer, ::A] & ::A)` does not have method
28
- `foo`
29
- code: Ruby::NoMethod
30
- - file: c.rb
31
- diagnostics:
32
- - range:
33
- start:
34
- line: 21
35
- character: 2
36
- end:
37
- line: 21
38
- character: 26
39
- severity: ERROR
40
- message: Type `singleton(::A)` does not have method `no_such_method_in_module`
41
- code: Ruby::NoMethod
42
- - file: d.rb
43
- diagnostics:
44
- - range:
45
- start:
46
- line: 3
47
- character: 7
48
- end:
49
- line: 3
50
- character: 8
51
- severity: ERROR
52
- message: Cannot find implementation of method `::X#foo`
53
- code: Ruby::MethodDefinitionMissing
54
- - file: f.rb
55
- diagnostics:
56
- - range:
57
- start:
58
- line: 1
59
- character: 7
60
- end:
61
- line: 1
62
- character: 14
63
- severity: ERROR
64
- message: Cannot find implementation of method `::Palette.nestopia_palette`
65
- code: Ruby::MethodDefinitionMissing
66
- - range:
67
- start:
68
- line: 1
69
- character: 7
70
- end:
71
- line: 1
72
- character: 14
73
- severity: ERROR
74
- message: "@dynamic annotation contains unknown method name `nestopia_palette`"
75
- code: Ruby::UnexpectedDynamicMethod
@@ -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