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,5 +0,0 @@
1
- class RecursiveAlias
2
- alias foo bar
3
- alias bar baz
4
- alias baz foo
5
- end
@@ -1,8 +0,0 @@
1
- class Foo < Bar
2
- end
3
-
4
- class Bar < Baz
5
- end
6
-
7
- class Baz < Foo
8
- end
@@ -1,3 +0,0 @@
1
- type foo = bar
2
- type bar = baz
3
- type baz = foo
@@ -1,7 +0,0 @@
1
- class SuperclassMismatch
2
- class Foo < String
3
- end
4
-
5
- class Foo < Integer
6
- end
7
- end
@@ -1,300 +0,0 @@
1
- ---
2
- - file: duplicated-method-definition.rbs
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 2
7
- character: 2
8
- end:
9
- line: 2
10
- character: 21
11
- severity: ERROR
12
- message: Non-overloading method definition of `foo` in `::DuplicatedMethodDefinitionError`
13
- cannot be duplicated
14
- code: RBS::DuplicatedMethodDefinition
15
- - range:
16
- start:
17
- line: 6
18
- character: 4
19
- end:
20
- line: 6
21
- character: 21
22
- severity: ERROR
23
- message: Non-overloading method definition of `f` in `::DuplicatedMethodDefinitionError::_Hello`
24
- cannot be duplicated
25
- code: RBS::DuplicatedMethodDefinition
26
- - range:
27
- start:
28
- line: 18
29
- character: 4
30
- end:
31
- line: 18
32
- character: 23
33
- severity: ERROR
34
- message: Non-overloading method definition of `g` in `::DuplicatedMethodDefinitionError::A`
35
- cannot be duplicated
36
- code: RBS::DuplicatedMethodDefinition
37
- - file: generic-parameter-mismatch.rbs
38
- diagnostics:
39
- - range:
40
- start:
41
- line: 5
42
- character: 2
43
- end:
44
- line: 6
45
- character: 5
46
- severity: ERROR
47
- message: Different generic parameters are specified across definitions of `::GenericParameterMismatchError::Foo`
48
- code: RBS::GenericParameterMismatch
49
- - file: inherit-module.rbs
50
- diagnostics:
51
- - range:
52
- start:
53
- line: 1
54
- character: 22
55
- end:
56
- line: 1
57
- character: 28
58
- severity: ERROR
59
- message: Cannot inherit from a module `::Kernel`
60
- code: RBS::InheritModuleError
61
- - file: invalid-method-overload.rbs
62
- diagnostics:
63
- - range:
64
- start:
65
- line: 2
66
- character: 2
67
- end:
68
- line: 2
69
- character: 27
70
- severity: ERROR
71
- message: Cannot find a non-overloading definition of `foo` in `::InvalidMethodOverload`
72
- code: RBS::InvalidMethodOverload
73
- - file: invalid-type-application.rbs
74
- diagnostics:
75
- - range:
76
- start:
77
- line: 2
78
- character: 13
79
- end:
80
- line: 2
81
- character: 23
82
- severity: ERROR
83
- message: Type `::Integer` is not generic but used as a generic type with 1 arguments
84
- code: RBS::InvalidTypeApplication
85
- - range:
86
- start:
87
- line: 4
88
- character: 13
89
- end:
90
- line: 4
91
- character: 24
92
- severity: ERROR
93
- message: Type `::Array` expects 1 arguments, but 2 arguments are given
94
- code: RBS::InvalidTypeApplication
95
- - range:
96
- start:
97
- line: 6
98
- character: 13
99
- end:
100
- line: 6
101
- character: 17
102
- severity: ERROR
103
- message: Type `::Hash` is generic but used as a non generic type
104
- code: RBS::InvalidTypeApplication
105
- - file: invalid_variance_annotation.rbs
106
- diagnostics:
107
- - range:
108
- start:
109
- line: 2
110
- character: 11
111
- end:
112
- line: 2
113
- character: 22
114
- severity: ERROR
115
- message: The variance of type parameter `A` is covariant, but used in incompatible
116
- position here
117
- code: RBS::InvalidVarianceAnnotation
118
- - file: mixin-class-error.rbs
119
- diagnostics:
120
- - range:
121
- start:
122
- line: 5
123
- character: 2
124
- end:
125
- line: 5
126
- character: 13
127
- severity: ERROR
128
- message: Cannot include a class `::Foo` in the definition of `::Bar`
129
- code: RBS::MixinClassError
130
- - file: nonregular-type-alias.rbs
131
- diagnostics:
132
- - range:
133
- start:
134
- line: 2
135
- character: 2
136
- end:
137
- line: 2
138
- character: 42
139
- severity: ERROR
140
- message: 'Type alias ::NonregularTypeAlias::t is defined *non-regular*: ::NonregularTypeAlias::t[::String,
141
- ::Integer]'
142
- code: RBS::NonregularTypeAlias
143
- - file: recursive-alias.rbs
144
- diagnostics:
145
- - range:
146
- start:
147
- line: 2
148
- character: 2
149
- end:
150
- line: 2
151
- character: 15
152
- severity: ERROR
153
- message: 'Circular method alias is detected in `::RecursiveAlias`: foo -> bar
154
- -> baz'
155
- code: RBS::RecursiveAlias
156
- - file: recursive-class.rbs
157
- diagnostics:
158
- - range:
159
- start:
160
- line: 1
161
- character: 0
162
- end:
163
- line: 2
164
- character: 3
165
- severity: ERROR
166
- message: 'Circular inheritance/mix-in is detected: ::Foo <: ::Bar <: ::Baz <:
167
- ::Foo'
168
- code: RBS::RecursiveAncestor
169
- - range:
170
- start:
171
- line: 4
172
- character: 0
173
- end:
174
- line: 5
175
- character: 3
176
- severity: ERROR
177
- message: 'Circular inheritance/mix-in is detected: ::Bar <: ::Baz <: ::Foo <:
178
- ::Bar'
179
- code: RBS::RecursiveAncestor
180
- - range:
181
- start:
182
- line: 7
183
- character: 0
184
- end:
185
- line: 8
186
- character: 3
187
- severity: ERROR
188
- message: 'Circular inheritance/mix-in is detected: ::Baz <: ::Foo <: ::Bar <:
189
- ::Baz'
190
- code: RBS::RecursiveAncestor
191
- - file: recursive-type-alias.rbs
192
- diagnostics:
193
- - range:
194
- start:
195
- line: 1
196
- character: 0
197
- end:
198
- line: 1
199
- character: 14
200
- severity: ERROR
201
- message: 'Type aliases cannot be *directly recursive*: ::foo'
202
- code: RBS::RecursiveTypeAlias
203
- - range:
204
- start:
205
- line: 2
206
- character: 0
207
- end:
208
- line: 2
209
- character: 14
210
- severity: ERROR
211
- message: 'Type aliases cannot be *directly recursive*: ::bar'
212
- code: RBS::RecursiveTypeAlias
213
- - range:
214
- start:
215
- line: 3
216
- character: 0
217
- end:
218
- line: 3
219
- character: 14
220
- severity: ERROR
221
- message: 'Type aliases cannot be *directly recursive*: ::baz'
222
- code: RBS::RecursiveTypeAlias
223
- - file: superclass-mismatch.rbs
224
- diagnostics:
225
- - range:
226
- start:
227
- line: 2
228
- character: 2
229
- end:
230
- line: 3
231
- character: 5
232
- severity: ERROR
233
- message: Different superclasses are specified for `::SuperclassMismatch::Foo`
234
- code: RBS::SuperclassMismatch
235
- - file: unknown-method-alias.rbs
236
- diagnostics:
237
- - range:
238
- start:
239
- line: 2
240
- character: 2
241
- end:
242
- line: 2
243
- character: 15
244
- severity: ERROR
245
- message: Cannot find the original method `bar` in `::UnknownMethodAlias`
246
- code: RBS::UnknownMethodAlias
247
- - file: unknown-type-name-2.rbs
248
- diagnostics:
249
- - range:
250
- start:
251
- line: 2
252
- character: 13
253
- end:
254
- line: 2
255
- character: 16
256
- severity: ERROR
257
- message: Cannot find type `::bar`
258
- code: RBS::UnknownTypeName
259
- - range:
260
- start:
261
- line: 4
262
- character: 9
263
- end:
264
- line: 4
265
- character: 14
266
- severity: ERROR
267
- message: Cannot find type `::World`
268
- code: RBS::UnknownTypeName
269
- - file: unknown-type-name.rbs
270
- diagnostics:
271
- - range:
272
- start:
273
- line: 6
274
- character: 2
275
- end:
276
- line: 6
277
- character: 15
278
- severity: ERROR
279
- message: Cannot find type `World`
280
- code: RBS::UnknownTypeName
281
- - range:
282
- start:
283
- line: 8
284
- character: 2
285
- end:
286
- line: 9
287
- character: 5
288
- severity: ERROR
289
- message: Cannot find type `ABC`
290
- code: RBS::UnknownTypeName
291
- - range:
292
- start:
293
- line: 11
294
- character: 15
295
- end:
296
- line: 11
297
- character: 18
298
- severity: ERROR
299
- message: Cannot find type `ZZZ`
300
- code: RBS::UnknownTypeName
@@ -1,3 +0,0 @@
1
- class UnknownMethodAlias
2
- alias foo bar
3
- end
@@ -1,5 +0,0 @@
1
- class UnknownTypeName
2
- type foo = bar
3
-
4
- Hello: World
5
- end
@@ -1,13 +0,0 @@
1
- class UnknownTypeName
2
- type foo = bar
3
-
4
- Hello: World
5
-
6
- include World
7
-
8
- class Foo < ABC
9
- end
10
-
11
- module Bar : ZZZ
12
- end
13
- 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
@@ -1,5 +0,0 @@
1
- class A
2
- end
3
-
4
- module A
5
- end
@@ -1,13 +0,0 @@
1
- ---
2
- - file: a.rbs
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 4
7
- character: 0
8
- end:
9
- line: 5
10
- character: 3
11
- severity: ERROR
12
- message: Declaration of `::A` is duplicated
13
- code: RBS::DuplicatedDeclaration
@@ -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
@@ -1,3 +0,0 @@
1
- class UnsatisfiableConstraint
2
- def foo: [A, B] (A) { (A) -> void } -> B
3
- end
@@ -1,27 +0,0 @@
1
- ---
2
- - file: unsatisfiable_constraint.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 3
7
- character: 0
8
- end:
9
- line: 6
10
- character: 3
11
- severity: ERROR
12
- message: |-
13
- Unsatisfiable constraint `::Array[untyped] <: A(2) <: ::String` is generated through (A(2)) { (A(2)) -> void } -> B(3)
14
- ::Array[untyped] <: ::String
15
- ::Object <: ::String
16
- ::BasicObject <: ::String
17
- code: Ruby::UnsatisfiableConstraint
18
- - range:
19
- start:
20
- line: 5
21
- character: 4
22
- end:
23
- line: 5
24
- character: 7
25
- severity: ERROR
26
- message: Type `::String` does not have method `foo`
27
- code: Ruby::NoMethod
@@ -1,6 +0,0 @@
1
- test = UnsatisfiableConstraint.new
2
-
3
- test.foo([]) do |x|
4
- # @type var x: String
5
- x.foo()
6
- end
data/smoke/dstr/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/dstr/a.rb DELETED
@@ -1,5 +0,0 @@
1
- # @type var b: String
2
-
3
- a = 0
4
-
5
- b = "Hello #{a.foo} world!"
@@ -1,13 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 5
7
- character: 15
8
- end:
9
- line: 5
10
- character: 18
11
- severity: ERROR
12
- message: Type `::Integer` does not have method `foo`
13
- 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/ensure/a.rb DELETED
@@ -1,18 +0,0 @@
1
- # @type var a: Integer
2
- # @type var b: Integer
3
-
4
- a = begin
5
- 'foo'
6
- ensure
7
- b = :foo
8
- 1
9
- end
10
-
11
- # @type method foo: (String) -> String
12
-
13
- def foo(a)
14
- 10
15
- ensure
16
- 1 + '1'
17
- a
18
- end
@@ -1,62 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 4
7
- character: 0
8
- end:
9
- line: 9
10
- character: 7
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
18
- - range:
19
- start:
20
- line: 7
21
- character: 6
22
- end:
23
- line: 7
24
- character: 14
25
- severity: ERROR
26
- message: |-
27
- Cannot assign a value of type `::Symbol` to a variable of type `::Integer`
28
- ::Symbol <: ::Integer
29
- ::Object <: ::Integer
30
- ::BasicObject <: ::Integer
31
- code: Ruby::IncompatibleAssignment
32
- - range:
33
- start:
34
- line: 13
35
- character: 4
36
- end:
37
- line: 13
38
- character: 7
39
- severity: ERROR
40
- message: |-
41
- Cannot allow method body have type `::Integer` because declared as type `::String`
42
- ::Integer <: ::String
43
- ::Numeric <: ::String
44
- ::Object <: ::String
45
- ::BasicObject <: ::String
46
- code: Ruby::MethodBodyTypeMismatch
47
- - range:
48
- start:
49
- line: 16
50
- character: 2
51
- end:
52
- line: 16
53
- character: 9
54
- severity: ERROR
55
- message: |-
56
- Cannot find compatible overloading of method `+` of type `::Integer`
57
- Method types:
58
- def +: (::Integer) -> ::Integer
59
- | (::Float) -> ::Float
60
- | (::Rational) -> ::Rational
61
- | (::Complex) -> ::Complex
62
- 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
@@ -1,6 +0,0 @@
1
- # @type var hash: Hash[Symbol, String]
2
-
3
- a = [1]
4
-
5
- hash = a.each.with_object("") do |x, y|
6
- end
@@ -1,17 +0,0 @@
1
- # @type var b: Array[String]
2
- # @type var c: Array[Integer]
3
-
4
- a = [1]
5
-
6
- b = a.each.with_object([]) do |i, xs|
7
- xs << i.to_s
8
- end
9
-
10
- c = a.each.with_object([]) do |i, xs|
11
- xs << i.to_s
12
- end
13
-
14
- # @type var d: String
15
- d = a.each.with_object([]) do |i, xs|
16
- xs << i.to_s
17
- end
@@ -1,47 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 5
7
- character: 7
8
- end:
9
- line: 6
10
- character: 3
11
- severity: ERROR
12
- message: |-
13
- Unsatisfiable constraint `::String <: U(1) <: ::Hash[::Symbol, ::String]` is generated through (U(1)) { (::Integer, U(1)) -> untyped } -> U(1)
14
- ::String <: ::Hash[::Symbol, ::String]
15
- ::Object <: ::Hash[::Symbol, ::String]
16
- ::BasicObject <: ::Hash[::Symbol, ::String]
17
- code: Ruby::UnsatisfiableConstraint
18
- - file: b.rb
19
- diagnostics:
20
- - range:
21
- start:
22
- line: 11
23
- character: 8
24
- end:
25
- line: 11
26
- character: 14
27
- severity: ERROR
28
- message: |-
29
- Cannot pass a value of type `::String` as an argument of type `::Integer`
30
- ::String <: ::Integer
31
- ::Object <: ::Integer
32
- ::BasicObject <: ::Integer
33
- code: Ruby::ArgumentTypeMismatch
34
- - range:
35
- start:
36
- line: 15
37
- character: 4
38
- end:
39
- line: 17
40
- character: 3
41
- severity: ERROR
42
- message: |-
43
- Unsatisfiable constraint `::Array[untyped] <: U(3) <: ::String` is generated through (U(3)) { (::Integer, U(3)) -> untyped } -> U(3)
44
- ::Array[untyped] <: ::String
45
- ::Object <: ::String
46
- ::BasicObject <: ::String
47
- code: Ruby::UnsatisfiableConstraint
@@ -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/extension/a.rb DELETED
@@ -1,10 +0,0 @@
1
- # @type var foo: Foo
2
-
3
- foo = (_ = nil)
4
-
5
- foo.try do |x|
6
- # @type var string: String
7
-
8
- string = x
9
- end
10
-
@@ -1,13 +0,0 @@
1
-
2
- class Object
3
- def try: [A] { (instance) -> A } -> A
4
- def f: -> Object
5
- end
6
-
7
- module Kernel
8
- def new_module_method: () -> void
9
- end
10
-
11
- class Foo
12
- def f: -> String
13
- end
data/smoke/extension/b.rb DELETED
@@ -1,10 +0,0 @@
1
- # @type var foo: Foo
2
- foo = (_ = nil)
3
-
4
- # @type var integer: Integer
5
-
6
- # Foo#f returns String because overridden
7
- integer = foo.f()
8
-
9
- # String#f returns Object because Object(X)#f is used
10
- integer = "".f()
data/smoke/extension/c.rb DELETED
@@ -1,9 +0,0 @@
1
- class Foo
2
- # @implements Foo
3
-
4
- def f()
5
- # @type var string: String
6
- string = super()
7
- string
8
- end
9
- end
data/smoke/extension/d.rb DELETED
@@ -1,2 +0,0 @@
1
- Foo.new_module_method()
2
- Object.new_module_method()