typeprof 0.15.3 → 0.20.3

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 (366) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/main.yml +1 -1
  3. data/Gemfile.lock +5 -5
  4. data/doc/ide.md +81 -0
  5. data/doc/typeprof-for-ide-log.png +0 -0
  6. data/doc/typeprof-for-ide.png +0 -0
  7. data/exe/typeprof +5 -1
  8. data/lib/typeprof/analyzer.rb +235 -56
  9. data/lib/typeprof/arguments.rb +1 -0
  10. data/lib/typeprof/builtin.rb +23 -23
  11. data/lib/typeprof/cli.rb +23 -5
  12. data/lib/typeprof/code-range.rb +177 -0
  13. data/lib/typeprof/config.rb +41 -20
  14. data/lib/typeprof/container-type.rb +3 -0
  15. data/lib/typeprof/export.rb +191 -15
  16. data/lib/typeprof/import.rb +33 -9
  17. data/lib/typeprof/insns-def.rb +1 -0
  18. data/lib/typeprof/iseq.rb +224 -17
  19. data/lib/typeprof/lsp.rb +884 -0
  20. data/lib/typeprof/method.rb +15 -11
  21. data/lib/typeprof/type.rb +50 -42
  22. data/lib/typeprof/utils.rb +18 -1
  23. data/lib/typeprof/version.rb +1 -1
  24. data/lib/typeprof.rb +3 -5
  25. data/typeprof-lsp +3 -0
  26. data/typeprof.gemspec +2 -2
  27. data/vscode/.gitignore +5 -0
  28. data/vscode/.vscode/launch.json +16 -0
  29. data/vscode/.vscodeignore +7 -0
  30. data/vscode/README.md +22 -0
  31. data/vscode/development.md +31 -0
  32. data/vscode/package-lock.json +3249 -0
  33. data/vscode/package.json +71 -0
  34. data/vscode/sandbox/test.rb +24 -0
  35. data/vscode/src/extension.ts +299 -0
  36. data/vscode/tsconfig.json +15 -0
  37. metadata +21 -334
  38. data/smoke/alias.rb +0 -31
  39. data/smoke/alias2.rb +0 -21
  40. data/smoke/any-cbase.rb +0 -5
  41. data/smoke/any1.rb +0 -16
  42. data/smoke/any2.rb +0 -18
  43. data/smoke/arguments.rb +0 -17
  44. data/smoke/arguments2.rb +0 -56
  45. data/smoke/array-each.rb +0 -15
  46. data/smoke/array-each2.rb +0 -16
  47. data/smoke/array-each3.rb +0 -13
  48. data/smoke/array-ltlt.rb +0 -14
  49. data/smoke/array-ltlt2.rb +0 -17
  50. data/smoke/array-map.rb +0 -12
  51. data/smoke/array-map2.rb +0 -11
  52. data/smoke/array-map3.rb +0 -23
  53. data/smoke/array-mul.rb +0 -18
  54. data/smoke/array-plus1.rb +0 -11
  55. data/smoke/array-plus2.rb +0 -16
  56. data/smoke/array-pop.rb +0 -12
  57. data/smoke/array-range-aref.rb +0 -71
  58. data/smoke/array-replace.rb +0 -13
  59. data/smoke/array-s-aref.rb +0 -12
  60. data/smoke/array1.rb +0 -27
  61. data/smoke/array10.rb +0 -15
  62. data/smoke/array11.rb +0 -14
  63. data/smoke/array12.rb +0 -25
  64. data/smoke/array13.rb +0 -31
  65. data/smoke/array14.rb +0 -14
  66. data/smoke/array15.rb +0 -16
  67. data/smoke/array2.rb +0 -28
  68. data/smoke/array3.rb +0 -26
  69. data/smoke/array4.rb +0 -15
  70. data/smoke/array5.rb +0 -14
  71. data/smoke/array6.rb +0 -17
  72. data/smoke/array7.rb +0 -14
  73. data/smoke/array8.rb +0 -13
  74. data/smoke/array9.rb +0 -13
  75. data/smoke/attr-module.rb +0 -24
  76. data/smoke/attr-vis.rb +0 -43
  77. data/smoke/attr-vis.rbs +0 -4
  78. data/smoke/attr.rb +0 -28
  79. data/smoke/autoload.rb +0 -14
  80. data/smoke/backtrace.rb +0 -33
  81. data/smoke/block-ambiguous.rb +0 -37
  82. data/smoke/block-args1-rest.rb +0 -64
  83. data/smoke/block-args1.rb +0 -60
  84. data/smoke/block-args2-rest.rb +0 -64
  85. data/smoke/block-args2.rb +0 -60
  86. data/smoke/block-args3-rest.rb +0 -75
  87. data/smoke/block-args3.rb +0 -71
  88. data/smoke/block-blockarg.rb +0 -28
  89. data/smoke/block-kwarg.rb +0 -53
  90. data/smoke/block1.rb +0 -23
  91. data/smoke/block10.rb +0 -15
  92. data/smoke/block11.rb +0 -40
  93. data/smoke/block12.rb +0 -23
  94. data/smoke/block13.rb +0 -9
  95. data/smoke/block13.rbs +0 -3
  96. data/smoke/block14.rb +0 -18
  97. data/smoke/block2.rb +0 -15
  98. data/smoke/block3.rb +0 -38
  99. data/smoke/block4.rb +0 -19
  100. data/smoke/block5.rb +0 -21
  101. data/smoke/block6.rb +0 -21
  102. data/smoke/block7.rb +0 -19
  103. data/smoke/block8.rb +0 -28
  104. data/smoke/block9.rb +0 -13
  105. data/smoke/block_given.rb +0 -37
  106. data/smoke/blown.rb +0 -13
  107. data/smoke/break1.rb +0 -19
  108. data/smoke/break2.rb +0 -16
  109. data/smoke/break3.rb +0 -13
  110. data/smoke/break4.rb +0 -17
  111. data/smoke/case.rb +0 -17
  112. data/smoke/case2.rb +0 -18
  113. data/smoke/case3.rb +0 -17
  114. data/smoke/class-hierarchy.rb +0 -54
  115. data/smoke/class-hierarchy2.rb +0 -27
  116. data/smoke/class-new.rb +0 -15
  117. data/smoke/class.rb +0 -7
  118. data/smoke/class_eval.rb +0 -22
  119. data/smoke/class_instance_var.rb +0 -9
  120. data/smoke/class_method.rb +0 -25
  121. data/smoke/class_method2.rb +0 -21
  122. data/smoke/class_method3.rb +0 -29
  123. data/smoke/constant1.rb +0 -46
  124. data/smoke/constant2.rb +0 -36
  125. data/smoke/constant3.rb +0 -10
  126. data/smoke/constant4.rb +0 -12
  127. data/smoke/context-sensitive1.rb +0 -13
  128. data/smoke/cvar.rb +0 -31
  129. data/smoke/cvar2.rb +0 -17
  130. data/smoke/define_method.rb +0 -16
  131. data/smoke/define_method2.rb +0 -18
  132. data/smoke/define_method3.rb +0 -14
  133. data/smoke/define_method3.rbs +0 -3
  134. data/smoke/define_method4.rb +0 -15
  135. data/smoke/define_method4.rbs +0 -3
  136. data/smoke/define_method5.rb +0 -12
  137. data/smoke/define_method6.rb +0 -19
  138. data/smoke/define_method7.rb +0 -18
  139. data/smoke/demo.rb +0 -81
  140. data/smoke/demo1.rb +0 -17
  141. data/smoke/demo10.rb +0 -21
  142. data/smoke/demo11.rb +0 -12
  143. data/smoke/demo2.rb +0 -15
  144. data/smoke/demo3.rb +0 -17
  145. data/smoke/demo4.rb +0 -27
  146. data/smoke/demo5.rb +0 -16
  147. data/smoke/demo6.rb +0 -22
  148. data/smoke/demo7.rb +0 -15
  149. data/smoke/demo8.rb +0 -19
  150. data/smoke/demo9.rb +0 -18
  151. data/smoke/dummy-execution1.rb +0 -15
  152. data/smoke/dummy-execution2.rb +0 -16
  153. data/smoke/dummy_element.rb +0 -14
  154. data/smoke/ensure1.rb +0 -21
  155. data/smoke/enum_for.rb +0 -15
  156. data/smoke/enum_for2.rb +0 -17
  157. data/smoke/enumerator.rb +0 -16
  158. data/smoke/expandarray1.rb +0 -23
  159. data/smoke/expandarray2.rb +0 -24
  160. data/smoke/extended.rb +0 -38
  161. data/smoke/fib.rb +0 -28
  162. data/smoke/flip-flop.rb +0 -28
  163. data/smoke/flow1.rb +0 -17
  164. data/smoke/flow10.rb +0 -17
  165. data/smoke/flow11.rb +0 -17
  166. data/smoke/flow2.rb +0 -15
  167. data/smoke/flow3.rb +0 -15
  168. data/smoke/flow4.rb +0 -5
  169. data/smoke/flow5.rb +0 -20
  170. data/smoke/flow6.rb +0 -20
  171. data/smoke/flow7.rb +0 -21
  172. data/smoke/flow8.rb +0 -14
  173. data/smoke/flow9.rb +0 -12
  174. data/smoke/for.rb +0 -9
  175. data/smoke/freeze.rb +0 -12
  176. data/smoke/function.rb +0 -17
  177. data/smoke/gvar.rb +0 -14
  178. data/smoke/gvar2.rb +0 -15
  179. data/smoke/gvar2.rbs +0 -1
  180. data/smoke/hash-bot.rb +0 -12
  181. data/smoke/hash-fetch.rb +0 -28
  182. data/smoke/hash-merge-bang.rb +0 -12
  183. data/smoke/hash1.rb +0 -20
  184. data/smoke/hash2.rb +0 -13
  185. data/smoke/hash3.rb +0 -14
  186. data/smoke/hash4.rb +0 -11
  187. data/smoke/hash5.rb +0 -14
  188. data/smoke/huge_union.rb +0 -86
  189. data/smoke/identifier_keywords.rb +0 -17
  190. data/smoke/included.rb +0 -38
  191. data/smoke/inheritance.rb +0 -34
  192. data/smoke/inheritance2.rb +0 -35
  193. data/smoke/inherited.rb +0 -26
  194. data/smoke/initialize.rb +0 -28
  195. data/smoke/instance_eval.rb +0 -18
  196. data/smoke/instance_eval2.rb +0 -10
  197. data/smoke/instance_eval3.rb +0 -25
  198. data/smoke/instance_eval4.rb +0 -12
  199. data/smoke/int_times.rb +0 -15
  200. data/smoke/integer.rb +0 -11
  201. data/smoke/ivar.rb +0 -31
  202. data/smoke/ivar2.rb +0 -30
  203. data/smoke/ivar3.rb +0 -17
  204. data/smoke/ivar3.rbs +0 -3
  205. data/smoke/ivar4.rb +0 -21
  206. data/smoke/kernel-class.rb +0 -13
  207. data/smoke/keyword1.rb +0 -12
  208. data/smoke/keyword2.rb +0 -12
  209. data/smoke/keyword3.rb +0 -12
  210. data/smoke/keyword4.rb +0 -12
  211. data/smoke/keyword5.rb +0 -16
  212. data/smoke/kwrest.rb +0 -13
  213. data/smoke/kwrest.rbs +0 -3
  214. data/smoke/kwsplat1.rb +0 -43
  215. data/smoke/kwsplat2.rb +0 -13
  216. data/smoke/lit-complex.rb +0 -10
  217. data/smoke/lit-encoding.rb +0 -10
  218. data/smoke/manual-rbs.rb +0 -29
  219. data/smoke/manual-rbs.rbs +0 -3
  220. data/smoke/manual-rbs2.rb +0 -21
  221. data/smoke/manual-rbs2.rbs +0 -8
  222. data/smoke/manual-rbs3.rb +0 -13
  223. data/smoke/manual-rbs3.rbs +0 -3
  224. data/smoke/masgn1.rb +0 -14
  225. data/smoke/masgn2.rb +0 -18
  226. data/smoke/masgn3.rb +0 -13
  227. data/smoke/method_in_branch.rb +0 -23
  228. data/smoke/method_missing.rb +0 -29
  229. data/smoke/module1.rb +0 -29
  230. data/smoke/module2.rb +0 -28
  231. data/smoke/module3.rb +0 -33
  232. data/smoke/module4.rb +0 -35
  233. data/smoke/module5.rb +0 -17
  234. data/smoke/module6.rb +0 -40
  235. data/smoke/module_function1.rb +0 -29
  236. data/smoke/module_function2.rb +0 -29
  237. data/smoke/multiple-include.rb +0 -15
  238. data/smoke/multiple-superclass.rb +0 -28
  239. data/smoke/next1.rb +0 -21
  240. data/smoke/next2.rb +0 -17
  241. data/smoke/noname.rb +0 -9
  242. data/smoke/object-send1.rb +0 -23
  243. data/smoke/object-send2.rb +0 -10
  244. data/smoke/object-send3.rb +0 -18
  245. data/smoke/once.rb +0 -13
  246. data/smoke/optional1.rb +0 -14
  247. data/smoke/optional2.rb +0 -16
  248. data/smoke/optional3.rb +0 -11
  249. data/smoke/or_raise.rb +0 -18
  250. data/smoke/parameterizedd-self.rb +0 -20
  251. data/smoke/parameterizedd-self2.rb +0 -15
  252. data/smoke/pathname1.rb +0 -14
  253. data/smoke/pathname2.rb +0 -14
  254. data/smoke/pattern-match1.rb +0 -19
  255. data/smoke/pattern-match2.rb +0 -16
  256. data/smoke/prepend1.rb +0 -33
  257. data/smoke/prepend2.rb +0 -10
  258. data/smoke/prepend2.rbs +0 -9
  259. data/smoke/primitive_method.rb +0 -19
  260. data/smoke/printf.rb +0 -20
  261. data/smoke/proc.rb +0 -20
  262. data/smoke/proc2.rb +0 -17
  263. data/smoke/proc3.rb +0 -15
  264. data/smoke/proc4.rb +0 -12
  265. data/smoke/proc5.rb +0 -19
  266. data/smoke/proc6.rb +0 -13
  267. data/smoke/proc7.rb +0 -32
  268. data/smoke/public.rb +0 -38
  269. data/smoke/range.rb +0 -14
  270. data/smoke/rbs-alias.rb +0 -10
  271. data/smoke/rbs-alias.rbs +0 -4
  272. data/smoke/rbs-attr.rb +0 -27
  273. data/smoke/rbs-attr.rbs +0 -5
  274. data/smoke/rbs-attr2.rb +0 -11
  275. data/smoke/rbs-attr2.rbs +0 -3
  276. data/smoke/rbs-extend.rb +0 -10
  277. data/smoke/rbs-extend.rbs +0 -7
  278. data/smoke/rbs-interface.rb +0 -25
  279. data/smoke/rbs-interface.rbs +0 -12
  280. data/smoke/rbs-module.rb +0 -26
  281. data/smoke/rbs-module.rbs +0 -4
  282. data/smoke/rbs-opt-and-rest.rb +0 -10
  283. data/smoke/rbs-opt-and-rest.rbs +0 -3
  284. data/smoke/rbs-proc1.rb +0 -10
  285. data/smoke/rbs-proc1.rbs +0 -3
  286. data/smoke/rbs-proc2.rb +0 -21
  287. data/smoke/rbs-proc2.rbs +0 -3
  288. data/smoke/rbs-proc3.rb +0 -14
  289. data/smoke/rbs-proc3.rbs +0 -4
  290. data/smoke/rbs-record.rb +0 -18
  291. data/smoke/rbs-record.rbs +0 -4
  292. data/smoke/rbs-tyvar.rb +0 -19
  293. data/smoke/rbs-tyvar.rbs +0 -5
  294. data/smoke/rbs-tyvar2.rb +0 -21
  295. data/smoke/rbs-tyvar2.rbs +0 -9
  296. data/smoke/rbs-tyvar3.rb +0 -18
  297. data/smoke/rbs-tyvar3.rbs +0 -5
  298. data/smoke/rbs-tyvar4.rb +0 -37
  299. data/smoke/rbs-tyvar5.rb +0 -13
  300. data/smoke/rbs-tyvar5.rbs +0 -8
  301. data/smoke/rbs-tyvar6.rb +0 -18
  302. data/smoke/rbs-tyvar6.rbs +0 -12
  303. data/smoke/rbs-tyvar7.rb +0 -12
  304. data/smoke/rbs-tyvar7.rbs +0 -7
  305. data/smoke/rbs-vars.rb +0 -35
  306. data/smoke/rbs-vars.rbs +0 -7
  307. data/smoke/redo1.rb +0 -22
  308. data/smoke/redo2.rb +0 -23
  309. data/smoke/req-keyword.rb +0 -13
  310. data/smoke/require1.rb +0 -13
  311. data/smoke/require2.rb +0 -13
  312. data/smoke/rescue1.rb +0 -21
  313. data/smoke/rescue2.rb +0 -23
  314. data/smoke/rescue3.rb +0 -20
  315. data/smoke/rescue4.rb +0 -17
  316. data/smoke/respond_to.rb +0 -23
  317. data/smoke/rest-farg.rb +0 -11
  318. data/smoke/rest1.rb +0 -26
  319. data/smoke/rest2.rb +0 -31
  320. data/smoke/rest3.rb +0 -37
  321. data/smoke/rest4.rb +0 -19
  322. data/smoke/rest5.rb +0 -11
  323. data/smoke/rest6.rb +0 -12
  324. data/smoke/retry1.rb +0 -21
  325. data/smoke/return.rb +0 -14
  326. data/smoke/reveal.rb +0 -13
  327. data/smoke/simple.rb +0 -12
  328. data/smoke/singleton_class.rb +0 -8
  329. data/smoke/singleton_method.rb +0 -12
  330. data/smoke/step.rb +0 -18
  331. data/smoke/string-split.rb +0 -12
  332. data/smoke/struct-keyword_init.rb +0 -10
  333. data/smoke/struct.rb +0 -13
  334. data/smoke/struct2.rb +0 -25
  335. data/smoke/struct3.rb +0 -14
  336. data/smoke/struct4.rb +0 -7
  337. data/smoke/struct5.rb +0 -16
  338. data/smoke/struct6.rb +0 -15
  339. data/smoke/struct7.rb +0 -17
  340. data/smoke/stub-keyword.rb +0 -10
  341. data/smoke/super1.rb +0 -69
  342. data/smoke/super2.rb +0 -16
  343. data/smoke/super3.rb +0 -20
  344. data/smoke/super4.rb +0 -45
  345. data/smoke/super5.rb +0 -38
  346. data/smoke/svar1.rb +0 -13
  347. data/smoke/symbol-proc-attr.rb +0 -22
  348. data/smoke/symbol-proc-attr2.rb +0 -15
  349. data/smoke/symbol-proc-bot.rb +0 -13
  350. data/smoke/symbol-proc.rb +0 -25
  351. data/smoke/tap1.rb +0 -18
  352. data/smoke/toplevel.rb +0 -13
  353. data/smoke/two-map.rb +0 -18
  354. data/smoke/type_var.rb +0 -11
  355. data/smoke/typed_method.rb +0 -16
  356. data/smoke/uninitialize-var.rb +0 -13
  357. data/smoke/union-recv.rb +0 -35
  358. data/smoke/user-demo.rb +0 -15
  359. data/smoke/wrong-extend.rb +0 -27
  360. data/smoke/wrong-include.rb +0 -27
  361. data/smoke/wrong-include2.rb +0 -17
  362. data/smoke/wrong-rbs.rb +0 -15
  363. data/smoke/wrong-rbs.rbs +0 -7
  364. data/testbed/ao.rb +0 -297
  365. data/testbed/diff-lcs-entrypoint.rb +0 -4
  366. data/testbed/goodcheck-Gemfile.lock +0 -51
data/smoke/flow10.rb DELETED
@@ -1,17 +0,0 @@
1
- def foo
2
- if block_given?
3
- yield 42
4
- else
5
- 1.0
6
- end
7
- end
8
-
9
- foo
10
- foo {|n| n.to_s }
11
-
12
- __END__
13
- # Classes
14
- class Object
15
- private
16
- def foo: ?{ (Integer) -> String } -> (Float | String)
17
- end
data/smoke/flow11.rb DELETED
@@ -1,17 +0,0 @@
1
- def foo(arg)
2
- if Integer === arg
3
- arg
4
- else
5
- 42
6
- end
7
- end
8
-
9
- foo("str")
10
- foo(1)
11
-
12
- __END__
13
- # Classes
14
- class Object
15
- private
16
- def foo: (Integer | String arg) -> Integer
17
- end
data/smoke/flow2.rb DELETED
@@ -1,15 +0,0 @@
1
- def foo(x)
2
- x.is_a?(Integer) ? x : x
3
- 1
4
- end
5
- foo(unknown)
6
-
7
- __END__
8
- # Errors
9
- smoke/flow2.rb:5: [error] undefined method: Object#unknown
10
-
11
- # Classes
12
- class Object
13
- private
14
- def foo: (untyped x) -> Integer
15
- end
data/smoke/flow3.rb DELETED
@@ -1,15 +0,0 @@
1
- def foo(x)
2
- if x
3
- x + 1
4
- end
5
- end
6
-
7
- foo(1)
8
- foo(nil)
9
-
10
- __END__
11
- # Classes
12
- class Object
13
- private
14
- def foo: (Integer? x) -> Integer?
15
- end
data/smoke/flow4.rb DELETED
@@ -1,5 +0,0 @@
1
- while begin l = r = true; l or r end
2
- end
3
-
4
- __END__
5
- # Classes
data/smoke/flow5.rb DELETED
@@ -1,20 +0,0 @@
1
- def foo(x)
2
- case x
3
- when Integer
4
- x
5
- when String
6
- x.to_i
7
- else
8
- raise
9
- end
10
- end
11
-
12
- foo(1)
13
- foo("1")
14
-
15
- __END__
16
- # Classes
17
- class Object
18
- private
19
- def foo: (Integer | String x) -> Integer
20
- end
data/smoke/flow6.rb DELETED
@@ -1,20 +0,0 @@
1
- def foo(x)
2
- "s" + case x
3
- when Integer
4
- x.to_s
5
- when String
6
- x
7
- else
8
- raise
9
- end
10
- end
11
-
12
- foo(1)
13
- foo("1")
14
-
15
- __END__
16
- # Classes
17
- class Object
18
- private
19
- def foo: (Integer | String x) -> String
20
- end
data/smoke/flow7.rb DELETED
@@ -1,21 +0,0 @@
1
- def foo(n)
2
- case n
3
- when Integer
4
- n + 1
5
- when String
6
- n + "STR"
7
- else
8
- n
9
- end
10
- end
11
-
12
- foo(42)
13
- foo("str")
14
- foo(:sym)
15
-
16
- __END__
17
- # Classes
18
- class Object
19
- private
20
- def foo: (:sym | Integer | String n) -> (:sym | Integer | String)
21
- end
data/smoke/flow8.rb DELETED
@@ -1,14 +0,0 @@
1
- def foo(n)
2
- n = n || 42
3
- n
4
- end
5
-
6
- foo(1)
7
- foo(nil)
8
-
9
- __END__
10
- # Classes
11
- class Object
12
- private
13
- def foo: (Integer? n) -> Integer
14
- end
data/smoke/flow9.rb DELETED
@@ -1,12 +0,0 @@
1
- def foo(obj)
2
- if obj ? true : obj.foo(1)
3
- "foo"
4
- end
5
- end
6
-
7
- __END__
8
- # Classes
9
- class Object
10
- private
11
- def foo: (untyped obj) -> String?
12
- end
data/smoke/for.rb DELETED
@@ -1,9 +0,0 @@
1
- for x in [[1, 2]]
2
- p x
3
- end
4
-
5
- __END__
6
- # Revealed types
7
- # smoke/for.rb:2 #=> [Integer, Integer]?
8
-
9
- # Classes
data/smoke/freeze.rb DELETED
@@ -1,12 +0,0 @@
1
- def foo
2
- [1].freeze
3
- end
4
-
5
- foo
6
-
7
- __END__
8
- # Classes
9
- class Object
10
- private
11
- def foo: -> [Integer]
12
- end
data/smoke/function.rb DELETED
@@ -1,17 +0,0 @@
1
- def no_argument
2
- "str"
3
- end
4
-
5
- def one_argument(x)
6
- end
7
-
8
- no_argument
9
- one_argument(1)
10
-
11
- __END__
12
- # Classes
13
- class Object
14
- private
15
- def no_argument: -> String
16
- def one_argument: (Integer x) -> nil
17
- end
data/smoke/gvar.rb DELETED
@@ -1,14 +0,0 @@
1
- $foo = 1
2
- $foo = "str"
3
- def log(x); end
4
- log($foo)
5
-
6
- __END__
7
- # Global variables
8
- $foo: Integer | String
9
-
10
- # Classes
11
- class Object
12
- private
13
- def log: (Integer | String x) -> nil
14
- end
data/smoke/gvar2.rb DELETED
@@ -1,15 +0,0 @@
1
- $foo = 1
2
-
3
- def log
4
- $foo
5
- end
6
-
7
- __END__
8
- # Errors
9
- smoke/gvar2.rb:1: [warning] inconsistent assignment to RBS-declared variable
10
-
11
- # Classes
12
- class Object
13
- private
14
- def log: -> String
15
- end
data/smoke/gvar2.rbs DELETED
@@ -1 +0,0 @@
1
- $foo : String
data/smoke/hash-bot.rb DELETED
@@ -1,12 +0,0 @@
1
- def foo
2
- h = {}
3
- h[1] ||= []
4
- h
5
- end
6
-
7
- __END__
8
- # Classes
9
- class Object
10
- private
11
- def foo: -> Hash[Integer, Array[untyped]]
12
- end
data/smoke/hash-fetch.rb DELETED
@@ -1,28 +0,0 @@
1
- h = { a: :A, b: :B }
2
-
3
- def foo(h)
4
- h.fetch(:a) #=> :A | :B
5
- end
6
- def bar(h)
7
- h.fetch(:a, :C) #=> :A | :B | :C
8
- end
9
- def baz(h)
10
- n = nil
11
- [h.fetch(:a) do |k| #=> :A | :B | :C
12
- n = k #=> :A | :B
13
- :C
14
- end, n]
15
- end
16
-
17
- foo(h)
18
- bar(h)
19
- baz(h)
20
-
21
- __END__
22
- # Classes
23
- class Object
24
- private
25
- def foo: ({a: :A, b: :B} h) -> (:A | :B)
26
- def bar: ({a: :A, b: :B} h) -> (:A | :B | :C)
27
- def baz: ({a: :A, b: :B} h) -> ([:A | :B | :C, (:a | :b)?])
28
- end
@@ -1,12 +0,0 @@
1
- def foo
2
- h = { a: 42 }
3
- h0 = h.merge!({ b: "str" })
4
- return h0, h
5
- end
6
-
7
- __END__
8
- # Classes
9
- class Object
10
- private
11
- def foo: -> [{a: Integer}, {a: Integer, b: String}]
12
- end
data/smoke/hash1.rb DELETED
@@ -1,20 +0,0 @@
1
- def foo
2
- { int: 1, str: "str" }
3
- end
4
-
5
- foo
6
-
7
- def bar
8
- # This returns {Integer=>Integer | String, String=>String} but RBS cannot express it
9
- { 1 => 1, 2 => "str", "s" => "s" }
10
- end
11
-
12
- bar
13
-
14
- __END__
15
- # Classes
16
- class Object
17
- private
18
- def foo: -> {int: Integer, str: String}
19
- def bar: -> (Hash[Integer | String, Integer | String])
20
- end
data/smoke/hash2.rb DELETED
@@ -1,13 +0,0 @@
1
- def foo
2
- h = { int: 1, str: "str" }
3
- h[:int]
4
- end
5
-
6
- foo
7
-
8
- __END__
9
- # Classes
10
- class Object
11
- private
12
- def foo: -> Integer
13
- end
data/smoke/hash3.rb DELETED
@@ -1,14 +0,0 @@
1
- def foo
2
- h = {}
3
- h[:int] = 1
4
- h[:str] = "str"
5
- h
6
- end
7
-
8
- foo
9
- __END__
10
- # Classes
11
- class Object
12
- private
13
- def foo: -> {int: Integer, str: String}
14
- end
data/smoke/hash4.rb DELETED
@@ -1,11 +0,0 @@
1
- def foo
2
- Hash.new { |h, k| h[k] = [] }
3
- end
4
-
5
- foo
6
- __END__
7
- # Classes
8
- class Object
9
- private
10
- def foo: -> Hash[untyped, untyped]
11
- end
data/smoke/hash5.rb DELETED
@@ -1,14 +0,0 @@
1
- class Foo
2
- def foo
3
- h = {}
4
- key = ["str"]
5
- h[key] = 1
6
- h[key]
7
- end
8
- end
9
- Foo.new.foo
10
- __END__
11
- # Classes
12
- class Foo
13
- def foo: -> Integer
14
- end
data/smoke/huge_union.rb DELETED
@@ -1,86 +0,0 @@
1
- class C0; end
2
- class C1 < C0; def foo(n); end; end
3
- class C2 < C0; def foo(n); end; end
4
- class C3 < C0; def foo(n); end; end
5
- class C4 < C0; def foo(n); end; end
6
- class C5 < C0; def foo(n); end; end
7
- class C6 < C0; def foo(n); end; end
8
- class C7 < C0; def foo(n); end; end
9
- class C8 < C0; def foo(n); end; end
10
- class C9 < C0; def foo(n); end; end
11
- class C10 < C0; def foo(n); end; end
12
- class C11 < C0; def foo(n); end; end
13
- class C12 < C0; def foo(n); end; end
14
-
15
- def dispatch_foo(n)
16
- n.foo("str")
17
- end
18
-
19
- dispatch_foo(C1.new)
20
- dispatch_foo(C2.new)
21
- dispatch_foo(C3.new)
22
- dispatch_foo(C4.new)
23
- dispatch_foo(C5.new)
24
- dispatch_foo(C6.new)
25
- dispatch_foo(C7.new)
26
- dispatch_foo(C8.new)
27
- dispatch_foo(C9.new)
28
- dispatch_foo(C10.new)
29
-
30
- __END__
31
- # Classes
32
- class Object
33
- private
34
- def dispatch_foo: (C0 n) -> nil
35
- end
36
-
37
- class C0
38
- end
39
-
40
- class C1 < C0
41
- def foo: (String n) -> nil
42
- end
43
-
44
- class C2 < C0
45
- def foo: (String n) -> nil
46
- end
47
-
48
- class C3 < C0
49
- def foo: (String n) -> nil
50
- end
51
-
52
- class C4 < C0
53
- def foo: (String n) -> nil
54
- end
55
-
56
- class C5 < C0
57
- def foo: (String n) -> nil
58
- end
59
-
60
- class C6 < C0
61
- def foo: (String n) -> nil
62
- end
63
-
64
- class C7 < C0
65
- def foo: (String n) -> nil
66
- end
67
-
68
- class C8 < C0
69
- def foo: (String n) -> nil
70
- end
71
-
72
- class C9 < C0
73
- def foo: (String n) -> nil
74
- end
75
-
76
- class C10 < C0
77
- def foo: (String n) -> nil
78
- end
79
-
80
- class C11 < C0
81
- def foo: (String n) -> nil
82
- end
83
-
84
- class C12 < C0
85
- def foo: (String n) -> nil
86
- end
@@ -1,17 +0,0 @@
1
- def type(type)
2
- end
3
-
4
- def out(*out)
5
- end
6
-
7
- def untyped(untyped:)
8
- end
9
-
10
- __END__
11
- # Classes
12
- class Object
13
- private
14
- def type: (untyped `type`) -> nil
15
- def out: (*untyped `out`) -> nil
16
- def untyped: (untyped: untyped) -> nil
17
- end
data/smoke/included.rb DELETED
@@ -1,38 +0,0 @@
1
- module Foo
2
- @included = []
3
- def self.included(klass)
4
- @included << klass
5
- end
6
- end
7
-
8
- class C
9
- include Foo
10
- end
11
-
12
- class D
13
- include Foo
14
- end
15
-
16
- class E
17
- include Foo
18
- end
19
-
20
- __END__
21
- # Classes
22
- module Foo
23
- self.@included: Array[singleton(C) | singleton(D) | singleton(E)]
24
-
25
- def self.included: (singleton(C) | singleton(D) | singleton(E) klass) -> (Array[singleton(C) | singleton(D) | singleton(E)])
26
- end
27
-
28
- class C
29
- include Foo
30
- end
31
-
32
- class D
33
- include Foo
34
- end
35
-
36
- class E
37
- include Foo
38
- end
data/smoke/inheritance.rb DELETED
@@ -1,34 +0,0 @@
1
- class A
2
- def foo(x)
3
- bar(x)
4
- end
5
-
6
- def bar(x)
7
- end
8
-
9
- def self.test(x)
10
- end
11
- end
12
-
13
- class B < A
14
- def bar(x)
15
- end
16
- end
17
-
18
- A.new.foo(1)
19
- B.new.foo("str")
20
- B.new.bar(nil)
21
- A.test(1)
22
- B.test("str")
23
-
24
- __END__
25
- # Classes
26
- class A
27
- def foo: (Integer | String x) -> nil
28
- def bar: (Integer | String x) -> nil
29
- def self.test: (Integer | String x) -> nil
30
- end
31
-
32
- class B < A
33
- def bar: ((Integer | String)? x) -> nil
34
- end
@@ -1,35 +0,0 @@
1
- class SuperBase
2
- def self.foo
3
- self
4
- end
5
- end
6
-
7
- class Base < SuperBase
8
- def self.foo
9
- super
10
- end
11
- end
12
-
13
- class A < Base
14
- foo
15
- end
16
-
17
- class B < Base
18
- foo
19
- end
20
-
21
- __END__
22
- # Classes
23
- class SuperBase
24
- def self.foo: -> (singleton(A) | singleton(B))
25
- end
26
-
27
- class Base < SuperBase
28
- def self.foo: -> (singleton(A) | singleton(B))
29
- end
30
-
31
- class A < Base
32
- end
33
-
34
- class B < Base
35
- end
data/smoke/inherited.rb DELETED
@@ -1,26 +0,0 @@
1
- class Foo
2
- @inherited = []
3
- def self.inherited(klass)
4
- @inherited << klass
5
- end
6
- end
7
-
8
- class Bar < Foo
9
- end
10
-
11
- class Baz < Foo
12
- end
13
-
14
- __END__
15
- # Classes
16
- class Foo
17
- self.@inherited: Array[singleton(Bar) | singleton(Baz)]
18
-
19
- def self.inherited: (singleton(Bar) | singleton(Baz) klass) -> (Array[singleton(Bar) | singleton(Baz)])
20
- end
21
-
22
- class Bar < Foo
23
- end
24
-
25
- class Baz < Foo
26
- end
data/smoke/initialize.rb DELETED
@@ -1,28 +0,0 @@
1
- class A
2
- def initialize(x)
3
- @int = 1
4
- @str = "str"
5
- @val = x
6
- end
7
- end
8
-
9
- def log(x)
10
- end
11
- log A.new(1)
12
- A.new("str")
13
- A.new(nil)
14
-
15
- __END__
16
- # Classes
17
- class Object
18
- private
19
- def log: (A x) -> nil
20
- end
21
-
22
- class A
23
- @int: Integer
24
- @str: String
25
- @val: (Integer | String)?
26
-
27
- def initialize: ((Integer | String)? x) -> void
28
- end
@@ -1,18 +0,0 @@
1
- class C
2
- def self.foo(&blk)
3
- new.instance_eval(&blk)
4
- end
5
- def log(n)
6
- end
7
- end
8
-
9
- C.foo do
10
- log(42)
11
- end
12
-
13
- __END__
14
- # Classes
15
- class C
16
- def self.foo: { (C) -> nil } -> nil
17
- def log: (Integer n) -> nil
18
- end
@@ -1,10 +0,0 @@
1
- a = ""
2
- a.instance_eval do
3
- @a = 1
4
- end
5
-
6
- __END__
7
- # Classes
8
- class String
9
- @a: Integer
10
- end