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/svar1.rb DELETED
@@ -1,13 +0,0 @@
1
- def foo
2
- "str" =~ /(str)/
3
- [$&, $1]
4
- end
5
-
6
- foo
7
-
8
- __END__
9
- # Classes
10
- class Object
11
- private
12
- def foo: -> [String?, String?]
13
- end
@@ -1,22 +0,0 @@
1
- class Foo
2
- attr_reader :foo
3
- def initialize(foo)
4
- @foo = foo
5
- end
6
- end
7
-
8
- def log
9
- [Foo.new(42)].map(&:foo)
10
- end
11
-
12
- __END__
13
- # Classes
14
- class Object
15
- private
16
- def log: -> (Array[Integer | untyped])
17
- end
18
-
19
- class Foo
20
- attr_reader foo: Integer | untyped
21
- def initialize: (Integer | untyped foo) -> void
22
- end
@@ -1,15 +0,0 @@
1
- class Foo
2
- attr_reader :foo
3
- def initialize
4
- @foo = [42]
5
- end
6
- end
7
-
8
- [Foo.new].flat_map(&:foo)
9
-
10
- __END__
11
- # Classes
12
- class Foo
13
- attr_reader foo: [Integer]
14
- def initialize: -> void
15
- end
@@ -1,13 +0,0 @@
1
- # This method call invokes (bottom type).boo, so the analysis may terminate
2
- # Currently, SymbolBlock translates bot receiver to any type
3
- [].each(&:boo)
4
-
5
- def foo
6
- end
7
-
8
- __END__
9
- # Classes
10
- class Object
11
- private
12
- def foo: -> nil
13
- end
data/smoke/symbol-proc.rb DELETED
@@ -1,25 +0,0 @@
1
- def foo
2
- [1, :sym, "str"].map(&:to_s)
3
- end
4
-
5
- class Foo
6
- def foo
7
- :foo
8
- end
9
- end
10
-
11
- def bar
12
- [Foo.new].map(&:foo)
13
- end
14
-
15
- __END__
16
- # Classes
17
- class Object
18
- private
19
- def foo: -> Array[String]
20
- def bar: -> Array[:foo]
21
- end
22
-
23
- class Foo
24
- def foo: -> :foo
25
- end
data/smoke/tap1.rb DELETED
@@ -1,18 +0,0 @@
1
- def bar(x)
2
- end
3
-
4
- def foo(x)
5
- x.tap {|n|
6
- bar(n)
7
- }
8
- end
9
-
10
- foo(1)
11
-
12
- __END__
13
- # Classes
14
- class Object
15
- private
16
- def bar: (Integer x) -> nil
17
- def foo: (Integer x) -> Integer
18
- end
data/smoke/toplevel.rb DELETED
@@ -1,13 +0,0 @@
1
- def foo(x)
2
- x
3
- end
4
-
5
- x = 1
6
- foo(x)
7
-
8
- __END__
9
- # Classes
10
- class Object
11
- private
12
- def foo: (Integer x) -> Integer
13
- end
data/smoke/two-map.rb DELETED
@@ -1,18 +0,0 @@
1
- def foo
2
- [1, 2, 3].map {|n| n.to_s }
3
- end
4
-
5
- def bar
6
- [1, 2, 3].map {|n| n + 1 }
7
- end
8
-
9
- foo
10
- bar
11
-
12
- __END__
13
- # Classes
14
- class Object
15
- private
16
- def foo: -> Array[String]
17
- def bar: -> Array[Integer]
18
- end
data/smoke/type_var.rb DELETED
@@ -1,11 +0,0 @@
1
- def number?(ty)
2
- %w[integer float].include?(ty).then { puts 1 }
3
- end
4
- number?('string')
5
-
6
- __END__
7
- # Classes
8
- class Object
9
- private
10
- def number?: (String ty) -> nil
11
- end
@@ -1,16 +0,0 @@
1
- def foo
2
- 1.0 * rand
3
- end
4
-
5
- foo
6
- 2.0 * unknown
7
-
8
- __END__
9
- # Errors
10
- smoke/typed_method.rb:6: [error] undefined method: Object#unknown
11
-
12
- # Classes
13
- class Object
14
- private
15
- def foo: -> Float
16
- end
@@ -1,13 +0,0 @@
1
- def foo
2
- x = begin
3
- return x
4
- 1
5
- end
6
- end
7
-
8
- __END__
9
- # Classes
10
- class Object
11
- private
12
- def foo: -> nil
13
- end
data/smoke/union-recv.rb DELETED
@@ -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/user-demo.rb DELETED
@@ -1,15 +0,0 @@
1
- class User
2
- def foo(name: "str", age: 0)
3
- @name, @age = name, age
4
- end
5
-
6
- attr_reader :name, :age
7
- end
8
-
9
- __END__
10
- # Classes
11
- class User
12
- def foo: (?name: String | untyped, ?age: Integer | untyped) -> ([String | untyped, Integer | untyped])
13
- attr_reader name: String | untyped
14
- attr_reader age: Integer | untyped
15
- end
@@ -1,27 +0,0 @@
1
- module Bar
2
- def bar
3
- :bar
4
- end
5
- end
6
-
7
- module Foo
8
- mod = rand < 0.5 ? Bar : "Not module"
9
-
10
- extend mod
11
-
12
- def foo
13
- :foo
14
- end
15
- end
16
-
17
- __END__
18
- # Classes
19
- module Bar
20
- def bar: -> :bar
21
- end
22
-
23
- module Foo
24
- extend Bar
25
-
26
- def foo: -> :foo
27
- end
@@ -1,27 +0,0 @@
1
- module Bar
2
- def bar
3
- :bar
4
- end
5
- end
6
-
7
- module Foo
8
- mod = rand < 0.5 ? Bar : "Not module"
9
-
10
- include mod
11
-
12
- def foo
13
- :foo
14
- end
15
- end
16
-
17
- __END__
18
- # Classes
19
- module Bar
20
- def bar: -> :bar
21
- end
22
-
23
- module Foo
24
- include Bar
25
-
26
- def foo: -> :foo
27
- end
@@ -1,17 +0,0 @@
1
- class Foo
2
- end
3
-
4
- class Bar
5
- include Foo
6
- end
7
-
8
- __END__
9
- # Errors
10
- smoke/wrong-include2.rb:5: [warning] attempted to include/extend non-module; ignored
11
-
12
- # Classes
13
- class Foo
14
- end
15
-
16
- class Bar
17
- end
data/smoke/wrong-rbs.rb DELETED
@@ -1,15 +0,0 @@
1
- def foo
2
- end
3
- def bar(n)
4
- end
5
- def baz(n=1)
6
- end
7
- def qux(a,n=1)
8
- end
9
-
10
- __END__
11
- # Errors
12
- smoke/wrong-rbs.rb:1: [error] RBS says that the arity may be 1, but the method definition requires at most 0 arguments
13
- smoke/wrong-rbs.rb:3: [error] RBS says that the arity may be 0, but the method definition requires at least 1 arguments
14
-
15
- # Classes
data/smoke/wrong-rbs.rbs DELETED
@@ -1,7 +0,0 @@
1
- class Object
2
- def foo: (?Integer) -> void
3
- def bar: (?Integer) -> void
4
- def baz: (?Integer) -> void
5
- def qux: (Integer) -> void
6
- | (Integer, Integer) -> void
7
- end
data/testbed/ao.rb DELETED
@@ -1,297 +0,0 @@
1
- # AO render benchmark
2
- # Original program (C) Syoyo Fujita in Javascript (and other languages)
3
- # https://code.google.com/p/aobench/
4
- # Ruby(yarv2llvm) version by Hideki Miura
5
- # mruby version by Hideki Miura
6
- #
7
-
8
- IMAGE_WIDTH = 64
9
- IMAGE_HEIGHT = 64
10
- NSUBSAMPLES = 2
11
- NAO_SAMPLES = 8
12
-
13
- class Vec
14
- # include Inline
15
- def initialize(x, y, z)
16
- @x = x
17
- @y = y
18
- @z = z
19
- end
20
-
21
- attr_accessor :x, :y, :z
22
-
23
- def vadd(b)
24
- Vec.new(@x + b.x, @y + b.y, @z + b.z)
25
- end
26
-
27
- def vsub(b)
28
- Vec.new(@x - b.x, @y - b.y, @z - b.z)
29
- end
30
- # make_inline_method :vsub
31
-
32
- def vcross(b)
33
- Vec.new(@y * b.z - @z * b.y,
34
- @z * b.x - @x * b.z,
35
- @x * b.y - @y * b.x)
36
- end
37
- # make_inline_method :vcross
38
-
39
- def vdot(b)
40
- r = @x * b.x + @y * b.y + @z * b.z
41
- r
42
- end
43
- # make_inline_method :vdot
44
-
45
- def vlength
46
- Math.sqrt(@x * @x + @y * @y + @z * @z)
47
- end
48
- # make_inline_method :vlength
49
-
50
- def vnormalize
51
- len = vlength
52
- v = Vec.new(@x, @y, @z)
53
- if len > 1.0e-17
54
- v.x = v.x / len
55
- v.y = v.y / len
56
- v.z = v.z / len
57
- end
58
- v
59
- end
60
- # make_inline_method :vnormalize
61
- end
62
-
63
- class Sphere
64
- def initialize(center, radius)
65
- @center = center
66
- @radius = radius
67
- end
68
-
69
- attr_reader :center, :radius
70
-
71
- def intersect(ray, isect)
72
- rs = ray.org.vsub(@center)
73
- b = rs.vdot(ray.dir)
74
- c = rs.vdot(rs) - (@radius * @radius)
75
- d = b * b - c
76
- if d > 0.0
77
- t = - b - Math.sqrt(d)
78
-
79
- if t > 0.0 and t < isect.t
80
- isect.t = t
81
- isect.hit = true
82
- isect.pl = Vec.new(ray.org.x + ray.dir.x * t,
83
- ray.org.y + ray.dir.y * t,
84
- ray.org.z + ray.dir.z * t)
85
- n = isect.pl.vsub(@center)
86
- isect.n = n.vnormalize
87
- end
88
- end
89
- end
90
- end
91
-
92
- class Plane
93
- def initialize(p, n)
94
- @p = p
95
- @n = n
96
- end
97
-
98
- def intersect(ray, isect)
99
- d = -@p.vdot(@n)
100
- v = ray.dir.vdot(@n)
101
- v0 = v
102
- if v < 0.0
103
- v0 = -v
104
- end
105
- if v0 < 1.0e-17
106
- return
107
- end
108
-
109
- t = -(ray.org.vdot(@n) + d) / v
110
-
111
- if t > 0.0 and t < isect.t
112
- isect.hit = true
113
- isect.t = t
114
- isect.n = @n
115
- isect.pl = Vec.new(ray.org.x + t * ray.dir.x,
116
- ray.org.y + t * ray.dir.y,
117
- ray.org.z + t * ray.dir.z)
118
- end
119
- end
120
- end
121
-
122
- class Ray
123
- def initialize(org, dir)
124
- @org = org
125
- @dir = dir
126
- end
127
-
128
- attr_accessor :org, :dir
129
- end
130
-
131
- class Isect
132
- def initialize
133
- @t = 10000000.0
134
- @hit = false
135
- @pl = Vec.new(0.0, 0.0, 0.0)
136
- @n = Vec.new(0.0, 0.0, 0.0)
137
- end
138
-
139
- attr_accessor :t, :hit, :pl, :n
140
- end
141
-
142
- def clamp(f)
143
- i = f * 255.5
144
- if i > 255.0
145
- i = 255.0
146
- end
147
- if i < 0.0
148
- i = 0.0
149
- end
150
- i.to_i
151
- end
152
-
153
- def otherBasis(n)
154
- zero = Vec.new(0.0, 0.0, 0.0)
155
- basis = [zero, zero, zero]
156
- basis[2] = Vec.new(n.x, n.y, n.z)
157
- basis[1] = Vec.new(0.0, 0.0, 0.0)
158
-
159
- if n.x < 0.6 and n.x > -0.6
160
- basis[1].x = 1.0
161
- elsif n.y < 0.6 and n.y > -0.6
162
- basis[1].y = 1.0
163
- elsif n.z < 0.6 and n.z > -0.6
164
- basis[1].z = 1.0
165
- else
166
- basis[1].x = 1.0
167
- end
168
-
169
- basis[0] = basis[1].vcross(basis[2])
170
- basis[0] = basis[0].vnormalize
171
-
172
- basis[1] = basis[2].vcross(basis[0])
173
- basis[1] = basis[1].vnormalize
174
-
175
- basis
176
- end
177
-
178
- class Scene
179
- def initialize
180
- @spheres = [
181
- Sphere.new(Vec.new(-2.0, 0.0, -3.5), 0.5),
182
- Sphere.new(Vec.new(-0.5, 0.0, -3.0), 0.5),
183
- Sphere.new(Vec.new(1.0, 0.0, -2.2), 0.5),
184
- ]
185
- @plane = Plane.new(Vec.new(0.0, -0.5, 0.0), Vec.new(0.0, 1.0, 0.0))
186
- end
187
-
188
- def ambient_occlusion(isect)
189
- basis = otherBasis(isect.n)
190
-
191
- ntheta = NAO_SAMPLES
192
- nphi = NAO_SAMPLES
193
- eps = 0.0001
194
- occlusion = 0.0
195
-
196
- p0 = Vec.new(isect.pl.x + eps * isect.n.x,
197
- isect.pl.y + eps * isect.n.y,
198
- isect.pl.z + eps * isect.n.z)
199
- nphi.times do |j|
200
- ntheta.times do |i|
201
- r = rand
202
- # r = $rand.rand
203
- phi = 2.0 * 3.14159265 * rand
204
- # phi = 2.0 * 3.14159265 * $rand.rand
205
- x = Math.cos(phi) * Math.sqrt(1.0 - r)
206
- y = Math.sin(phi) * Math.sqrt(1.0 - r)
207
- z = Math.sqrt(r)
208
-
209
- rx = x * basis[0].x + y * basis[1].x + z * basis[2].x
210
- ry = x * basis[0].y + y * basis[1].y + z * basis[2].y
211
- rz = x * basis[0].z + y * basis[1].z + z * basis[2].z
212
-
213
- raydir = Vec.new(rx, ry, rz)
214
- ray = Ray.new(p0, raydir)
215
-
216
- occisect = Isect.new
217
- @spheres[0].intersect(ray, occisect)
218
- @spheres[1].intersect(ray, occisect)
219
- @spheres[2].intersect(ray, occisect)
220
- @plane.intersect(ray, occisect)
221
- if occisect.hit
222
- occlusion = occlusion + 1.0
223
- else
224
- 0.0
225
- end
226
- 1.0
227
- end
228
- end
229
-
230
- occlusion = (ntheta.to_f * nphi.to_f - occlusion) / (ntheta.to_f * nphi.to_f)
231
- Vec.new(occlusion, occlusion, occlusion)
232
- end
233
-
234
- def render(w, h, nsubsamples)
235
- cnt = 0
236
- nsf = nsubsamples.to_f
237
- h.times do |y|
238
- w.times do |x|
239
- rad = Vec.new(0.0, 0.0, 0.0)
240
-
241
- # Subsmpling
242
- nsubsamples.times do |v|
243
- nsubsamples.times do |u|
244
- cnt = cnt + 1
245
- wf = w.to_f
246
- hf = h.to_f
247
- xf = x.to_f
248
- yf = y.to_f
249
- uf = u.to_f
250
- vf = v.to_f
251
-
252
- px = (xf + (uf / nsf) - (wf / 2.0)) / (wf / 2.0)
253
- py = -(yf + (vf / nsf) - (hf / 2.0)) / (hf / 2.0)
254
-
255
- eye = Vec.new(px, py, -1.0).vnormalize
256
-
257
- ray = Ray.new(Vec.new(0.0, 0.0, 0.0), eye)
258
-
259
- isect = Isect.new
260
- @spheres[0].intersect(ray, isect)
261
- @spheres[1].intersect(ray, isect)
262
- @spheres[2].intersect(ray, isect)
263
- @plane.intersect(ray, isect)
264
- if isect.hit
265
- col = ambient_occlusion(isect)
266
- rad.x = rad.x + col.x
267
- rad.y = rad.y + col.y
268
- rad.z = rad.z + col.z
269
- else
270
- 0.0
271
- end
272
- 1
273
- end
274
- end
275
-
276
- r = rad.x / (nsf * nsf)
277
- g = rad.y / (nsf * nsf)
278
- b = rad.z / (nsf * nsf)
279
- printf("%c", clamp(r))
280
- printf("%c", clamp(g))
281
- printf("%c", clamp(b))
282
- 1
283
- end
284
- end
285
- end
286
- end
287
-
288
- def top
289
- Scene.new.render(IMAGE_WIDTH, IMAGE_HEIGHT, NSUBSAMPLES)
290
- end
291
-
292
- top
293
-
294
- if $0 == __FILE__
295
- v = Vec.new(0.0, 0.0, 0.0)
296
- v.vadd(v)
297
- end
@@ -1,4 +0,0 @@
1
- require "diff/lcs"
2
-
3
- class T; end
4
- Diff::LCS.diff([T.new]+[T.new], [T.new]+[T.new]) {}
@@ -1,51 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- goodcheck (2.5.2)
5
- activesupport (>= 4.0, < 7.0)
6
- psych (>= 3.1, < 4.0)
7
- rainbow (~> 3.0.0)
8
- strong_json (>= 1.1, < 2.2)
9
-
10
- GEM
11
- remote: https://rubygems.org/
12
- specs:
13
- activesupport (6.0.3.3)
14
- concurrent-ruby (~> 1.0, >= 1.0.2)
15
- i18n (>= 0.7, < 2)
16
- minitest (~> 5.1)
17
- tzinfo (~> 1.1)
18
- zeitwerk (~> 2.2, >= 2.2.2)
19
- ansi (1.5.0)
20
- builder (3.2.4)
21
- concurrent-ruby (1.1.7)
22
- i18n (1.8.5)
23
- concurrent-ruby (~> 1.0)
24
- minitest (5.14.3)
25
- minitest-reporters (1.4.2)
26
- ansi
27
- builder
28
- minitest (>= 5.0)
29
- ruby-progressbar
30
- psych (3.2.0)
31
- rainbow (3.0.0)
32
- rake (13.0.1)
33
- ruby-progressbar (1.10.1)
34
- strong_json (1.1.0)
35
- thread_safe (0.3.6)
36
- tzinfo (1.2.7)
37
- thread_safe (~> 0.1)
38
- zeitwerk (2.4.0)
39
-
40
- PLATFORMS
41
- ruby
42
-
43
- DEPENDENCIES
44
- bundler (>= 1.16)
45
- goodcheck!
46
- minitest (~> 5.0)
47
- minitest-reporters (~> 1.4.2)
48
- rake (~> 13.0)
49
-
50
- BUNDLED WITH
51
- 2.1.2