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
data/smoke/extension/e.rb DELETED
@@ -1,2 +0,0 @@
1
- # @type var x: NumberLike
2
- x = 1 + NumberLike.new
@@ -1,7 +0,0 @@
1
- class NumberLike
2
- def to_number: -> Integer
3
- end
4
-
5
- class Integer
6
- def `+`: (NumberLike) -> NumberLike | ...
7
- end
data/smoke/extension/f.rb DELETED
@@ -1,2 +0,0 @@
1
- array = [1,2,3]
2
- array.__f__.__error__
@@ -1,3 +0,0 @@
1
- class Array[unchecked out X]
2
- def __f__: () -> X
3
- end
@@ -1,73 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 8
7
- character: 2
8
- end:
9
- line: 8
10
- character: 12
11
- severity: ERROR
12
- message: |-
13
- Cannot assign a value of type `::Foo` to a variable of type `::String`
14
- ::Foo <: ::String
15
- ::Object <: ::String
16
- ::BasicObject <: ::String
17
- code: Ruby::IncompatibleAssignment
18
- - file: b.rb
19
- diagnostics:
20
- - range:
21
- start:
22
- line: 7
23
- character: 0
24
- end:
25
- line: 7
26
- character: 17
27
- severity: ERROR
28
- message: |-
29
- Cannot assign a value of type `::String` to a variable of type `::Integer`
30
- ::String <: ::Integer
31
- ::Object <: ::Integer
32
- ::BasicObject <: ::Integer
33
- code: Ruby::IncompatibleAssignment
34
- - range:
35
- start:
36
- line: 10
37
- character: 0
38
- end:
39
- line: 10
40
- character: 16
41
- severity: ERROR
42
- message: |-
43
- Cannot assign a value of type `::Object` to a variable of type `::Integer`
44
- ::Object <: ::Integer
45
- ::BasicObject <: ::Integer
46
- code: Ruby::IncompatibleAssignment
47
- - file: c.rb
48
- diagnostics:
49
- - range:
50
- start:
51
- line: 6
52
- character: 4
53
- end:
54
- line: 6
55
- character: 20
56
- severity: ERROR
57
- message: |-
58
- Cannot assign a value of type `::Object` to a variable of type `::String`
59
- ::Object <: ::String
60
- ::BasicObject <: ::String
61
- code: Ruby::IncompatibleAssignment
62
- - file: f.rb
63
- diagnostics:
64
- - range:
65
- start:
66
- line: 2
67
- character: 12
68
- end:
69
- line: 2
70
- character: 21
71
- severity: ERROR
72
- message: Type `::Integer` does not have method `__error__`
73
- code: Ruby::NoMethod
data/smoke/hash/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/hash/a.rb DELETED
@@ -1,17 +0,0 @@
1
- { foo: "bar" }.each do |x, y|
2
- # @type var x1: Symbol
3
- # @type var y1: String
4
-
5
- x1 = x
6
- y1 = y
7
- end
8
-
9
- { foo: "bar" }.each.with_index do |x, y|
10
- # @type var a: Symbol
11
- # @type var b: String
12
- # @type var c: Integer
13
-
14
- a = x[0]
15
- b = x[1]
16
- c = y
17
- end
data/smoke/hash/a.rbs DELETED
@@ -1,8 +0,0 @@
1
- type t = {
2
- id: Integer,
3
- name: String
4
- }
5
-
6
- class Controller
7
- def params: -> { id: Integer, name: String }
8
- end
data/smoke/hash/b.rb DELETED
@@ -1,6 +0,0 @@
1
- # @type var x: Hash[Symbol, String?]
2
-
3
- x = { foo: "foo" }
4
- x = { foo: nil }
5
-
6
- x = { foo: 3 }
data/smoke/hash/c.rb DELETED
@@ -1,15 +0,0 @@
1
- # @type var params: t
2
- params = _ = nil
3
-
4
- id = params[:id]
5
- id.abcdefg
6
-
7
- name = params[:name]
8
- name.abcdefg
9
-
10
- params[(_=nil) ? :id : :name].abcdefg
11
-
12
- # @type var controller: Controller
13
- controller = _ = nil
14
-
15
- controller.params[:id] + 3
data/smoke/hash/d.rb DELETED
@@ -1,5 +0,0 @@
1
- # @type var params: { name: String, id: Integer }
2
-
3
- params = { id: 30, name: "Matz" }
4
-
5
- params = { id: "30", name: "foo", email: "matsumoto@soutaro.com" }
data/smoke/hash/e.rb DELETED
@@ -1 +0,0 @@
1
- Foo.new.get({ foo: 3 }).fffffffffffff
data/smoke/hash/e.rbs DELETED
@@ -1,3 +0,0 @@
1
- class Foo
2
- def get: [X] ({ foo: X }) -> X
3
- end
data/smoke/hash/f.rb DELETED
@@ -1,11 +0,0 @@
1
- # @type method commit: (Hash[Symbol, String?]) -> { repo: String, branch: String?, tag: String?, commit: String? }?
2
- def commit(hash)
3
- if repo = hash[:foo]
4
- {
5
- repo: repo,
6
- branch: hash[:bar],
7
- tag: hash[:baz],
8
- commit: hash[:commit]
9
- }
10
- end
11
- end
@@ -1,81 +0,0 @@
1
- ---
2
- - file: b.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 6
7
- character: 0
8
- end:
9
- line: 6
10
- character: 14
11
- severity: ERROR
12
- message: |-
13
- Cannot assign a value of type `::Hash[::Symbol, ::Integer]` to a variable of type `::Hash[::Symbol, (::String | nil)]`
14
- ::Hash[::Symbol, ::Integer] <: ::Hash[::Symbol, (::String | nil)]
15
- ::Integer <: (::String | nil)
16
- ::Integer <: ::String
17
- ::Numeric <: ::String
18
- ::Object <: ::String
19
- ::BasicObject <: ::String
20
- code: Ruby::IncompatibleAssignment
21
- - file: c.rb
22
- diagnostics:
23
- - range:
24
- start:
25
- line: 5
26
- character: 3
27
- end:
28
- line: 5
29
- character: 10
30
- severity: ERROR
31
- message: Type `::Integer` does not have method `abcdefg`
32
- code: Ruby::NoMethod
33
- - range:
34
- start:
35
- line: 8
36
- character: 5
37
- end:
38
- line: 8
39
- character: 12
40
- severity: ERROR
41
- message: Type `::String` does not have method `abcdefg`
42
- code: Ruby::NoMethod
43
- - range:
44
- start:
45
- line: 10
46
- character: 30
47
- end:
48
- line: 10
49
- character: 37
50
- severity: ERROR
51
- message: Type `(::Integer | ::String)` does not have method `abcdefg`
52
- code: Ruby::NoMethod
53
- - file: d.rb
54
- diagnostics:
55
- - range:
56
- start:
57
- line: 5
58
- character: 0
59
- end:
60
- line: 5
61
- character: 66
62
- severity: ERROR
63
- message: |-
64
- Cannot assign a value of type `{ :email => ::String, :id => ::String, :name => ::String }` to a variable of type `{ :id => ::Integer, :name => ::String }`
65
- { :email => ::String, :id => ::String, :name => ::String } <: { :id => ::Integer, :name => ::String }
66
- ::String <: ::Integer
67
- ::Object <: ::Integer
68
- ::BasicObject <: ::Integer
69
- code: Ruby::IncompatibleAssignment
70
- - file: e.rb
71
- diagnostics:
72
- - range:
73
- start:
74
- line: 1
75
- character: 24
76
- end:
77
- line: 1
78
- character: 37
79
- severity: ERROR
80
- message: Type `::Integer` does not have method `fffffffffffff`
81
- 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/hello/hello.rb DELETED
@@ -1,11 +0,0 @@
1
- # @type var x: _Foo
2
- # @type var y: _Bar
3
-
4
- x = (_ = nil)
5
- y = (_ = nil)
6
-
7
- a = x.foo
8
-
9
- b = y.foo
10
-
11
- x = y
@@ -1,7 +0,0 @@
1
- interface _Foo
2
- def foo: -> untyped
3
- end
4
-
5
- interface _Bar
6
- def bar: -> untyped
7
- end
@@ -1,25 +0,0 @@
1
- ---
2
- - file: hello.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 9
7
- character: 6
8
- end:
9
- line: 9
10
- character: 9
11
- severity: ERROR
12
- message: Type `::_Bar` does not have method `foo`
13
- code: Ruby::NoMethod
14
- - range:
15
- start:
16
- line: 11
17
- character: 0
18
- end:
19
- line: 11
20
- character: 5
21
- severity: ERROR
22
- message: |-
23
- Cannot assign a value of type `::_Bar` to a variable of type `::_Foo`
24
- ::_Bar <: ::_Foo
25
- code: Ruby::IncompatibleAssignment
data/smoke/if/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/if/a.rb DELETED
@@ -1,20 +0,0 @@
1
- # @type var a: String
2
-
3
- x = y = z = (_ = nil)
4
-
5
- a = if x
6
- :foo
7
- end
8
-
9
- if y
10
- :foo
11
- else
12
- "baz"
13
- end
14
-
15
- a = if z
16
- "foofoo"
17
- else
18
- 3
19
- end
20
-
@@ -1,34 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 5
7
- character: 0
8
- end:
9
- line: 7
10
- character: 7
11
- severity: ERROR
12
- message: |-
13
- Cannot assign a value of type `(::Symbol | nil)` to a variable of type `::String`
14
- (::Symbol | nil) <: ::String
15
- ::Symbol <: ::String
16
- ::Object <: ::String
17
- ::BasicObject <: ::String
18
- code: Ruby::IncompatibleAssignment
19
- - range:
20
- start:
21
- line: 15
22
- character: 0
23
- end:
24
- line: 19
25
- character: 7
26
- severity: ERROR
27
- message: |-
28
- Cannot assign a value of type `(::String | ::Integer)` to a variable of type `::String`
29
- (::String | ::Integer) <: ::String
30
- ::Integer <: ::String
31
- ::Numeric <: ::String
32
- ::Object <: ::String
33
- ::BasicObject <: ::String
34
- 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
@@ -1,12 +0,0 @@
1
- class A
2
- # @implements A
3
-
4
- def foo()
5
- end
6
-
7
- def bar()
8
- end
9
-
10
- def self.baz
11
- end
12
- end
@@ -1,6 +0,0 @@
1
- class A
2
- def foo: -> untyped
3
- def baz: -> untyped
4
- def self.bar: -> untyped
5
- def self.baz: -> untyped
6
- end
@@ -1,13 +0,0 @@
1
- class B
2
- Request = _ = Struct.new(:method, :path, keyword_init: true) do
3
- # @implements Request
4
-
5
- def post?
6
- method == "POST"
7
- end
8
-
9
- def get?
10
- method == "GET"
11
- end
12
- end
13
- end
@@ -1,12 +0,0 @@
1
- class B
2
- class Request
3
- attr_reader method: String
4
- attr_reader path: String
5
-
6
- def initialize: (method: String, path: String) -> void
7
-
8
- def post?: () -> bool
9
-
10
- def get?: () -> bool
11
- end
12
- end
@@ -1,23 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 1
7
- character: 6
8
- end:
9
- line: 1
10
- character: 7
11
- severity: ERROR
12
- message: Cannot find implementation of method `::A#baz`
13
- code: Ruby::MethodDefinitionMissing
14
- - range:
15
- start:
16
- line: 1
17
- character: 6
18
- end:
19
- line: 1
20
- character: 7
21
- severity: ERROR
22
- message: Cannot find implementation of method `::A.bar`
23
- code: Ruby::MethodDefinitionMissing
@@ -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,12 +0,0 @@
1
- class A
2
- # @implements A
3
-
4
- def initialize()
5
-
6
- end
7
-
8
- def foo()
9
- # initialize is a private method, so can be called here
10
- initialize()
11
- end
12
- end
@@ -1,3 +0,0 @@
1
- class A
2
- def initialize: () -> untyped
3
- 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/integer/a.rb DELETED
@@ -1,26 +0,0 @@
1
- # @type var x: Numeric
2
- x = _ = 1
3
- integer_1 = Integer(x)
4
- integer_1.foo
5
-
6
- integer_2 = Integer("1")
7
- integer_2.foo
8
-
9
- class WithToInt
10
- def to_int; 1; end
11
- end
12
- integer_3 = Integer(WithToInt.new)
13
- integer_3.foo
14
-
15
- class WithToI
16
- def to_i; 1; end
17
- end
18
- integer_4 = Integer(WithToI.new)
19
- integer_4.foo
20
-
21
- integer_5 = Integer("10", 2)
22
- integer_5.foo
23
-
24
- Integer(Object.new)
25
-
26
- Integer(nil)
@@ -1,110 +0,0 @@
1
- ---
2
- - file: a.rb
3
- diagnostics:
4
- - range:
5
- start:
6
- line: 4
7
- character: 10
8
- end:
9
- line: 4
10
- character: 13
11
- severity: ERROR
12
- message: Type `::Integer` does not have method `foo`
13
- code: Ruby::NoMethod
14
- - range:
15
- start:
16
- line: 7
17
- character: 10
18
- end:
19
- line: 7
20
- character: 13
21
- severity: ERROR
22
- message: Type `::Integer` does not have method `foo`
23
- code: Ruby::NoMethod
24
- - range:
25
- start:
26
- line: 9
27
- character: 6
28
- end:
29
- line: 9
30
- character: 15
31
- severity: ERROR
32
- message: 'Cannot find the declaration of class: `WithToInt`'
33
- code: Ruby::UnknownConstant
34
- - range:
35
- start:
36
- line: 12
37
- character: 20
38
- end:
39
- line: 12
40
- character: 29
41
- severity: ERROR
42
- message: 'Cannot find the declaration of constant: `WithToInt`'
43
- code: Ruby::UnknownConstant
44
- - range:
45
- start:
46
- line: 13
47
- character: 10
48
- end:
49
- line: 13
50
- character: 13
51
- severity: ERROR
52
- message: Type `::Integer` does not have method `foo`
53
- code: Ruby::NoMethod
54
- - range:
55
- start:
56
- line: 15
57
- character: 6
58
- end:
59
- line: 15
60
- character: 13
61
- severity: ERROR
62
- message: 'Cannot find the declaration of class: `WithToI`'
63
- code: Ruby::UnknownConstant
64
- - range:
65
- start:
66
- line: 18
67
- character: 20
68
- end:
69
- line: 18
70
- character: 27
71
- severity: ERROR
72
- message: 'Cannot find the declaration of constant: `WithToI`'
73
- code: Ruby::UnknownConstant
74
- - range:
75
- start:
76
- line: 19
77
- character: 10
78
- end:
79
- line: 19
80
- character: 13
81
- severity: ERROR
82
- message: Type `::Integer` does not have method `foo`
83
- code: Ruby::NoMethod
84
- - range:
85
- start:
86
- line: 22
87
- character: 10
88
- end:
89
- line: 22
90
- character: 13
91
- severity: ERROR
92
- message: Type `::Integer` does not have method `foo`
93
- code: Ruby::NoMethod
94
- - range:
95
- start:
96
- line: 24
97
- character: 0
98
- end:
99
- line: 24
100
- character: 19
101
- severity: ERROR
102
- message: |-
103
- Cannot find compatible overloading of method `Integer` of type `::Object`
104
- Method types:
105
- def Integer: ((::_ToInt | ::_ToI), ?exception: true) -> ::Integer
106
- | ((::_ToInt | ::_ToI), exception: bool) -> (::Integer | nil)
107
- | (::string, ?::int, ?exception: true) -> ::Integer
108
- | (::string, ?::int, exception: bool) -> (::Integer | nil)
109
- | (untyped, ?untyped, exception: false) -> nil
110
- 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/interface/a.rb DELETED
@@ -1,12 +0,0 @@
1
- class A
2
- # @dynamic foo
3
-
4
- def hello
5
- foo.foo.bar
6
-
7
- # @type var object: ::Object
8
- object = _ = nil
9
-
10
- object.object?
11
- end
12
- end
@@ -1,12 +0,0 @@
1
- class A
2
- def foo: -> _Foo
3
- def hello: -> void
4
-
5
- class Object
6
- def object?: -> bool
7
- end
8
-
9
- interface _Foo
10
- def foo: -> Object
11
- end
12
- end