rbs 4.1.0.pre.2-java

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 (574) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.github/dependabot.yml +24 -0
  5. data/.github/workflows/bundle-update.yml +63 -0
  6. data/.github/workflows/c-check.yml +61 -0
  7. data/.github/workflows/comments.yml +37 -0
  8. data/.github/workflows/dependabot.yml +30 -0
  9. data/.github/workflows/jruby.yml +67 -0
  10. data/.github/workflows/milestone.yml +83 -0
  11. data/.github/workflows/ruby.yml +158 -0
  12. data/.github/workflows/rust.yml +184 -0
  13. data/.github/workflows/truffleruby.yml +54 -0
  14. data/.github/workflows/typecheck.yml +39 -0
  15. data/.github/workflows/wasm.yml +53 -0
  16. data/.github/workflows/windows.yml +49 -0
  17. data/.gitignore +38 -0
  18. data/.rubocop.yml +72 -0
  19. data/BSDL +22 -0
  20. data/CHANGELOG.md +2292 -0
  21. data/COPYING +56 -0
  22. data/README.md +240 -0
  23. data/Rakefile +869 -0
  24. data/Steepfile +53 -0
  25. data/config.yml +913 -0
  26. data/core/array.rbs +4142 -0
  27. data/core/basic_object.rbs +376 -0
  28. data/core/binding.rbs +148 -0
  29. data/core/builtin.rbs +278 -0
  30. data/core/class.rbs +223 -0
  31. data/core/comparable.rbs +192 -0
  32. data/core/complex.rbs +812 -0
  33. data/core/constants.rbs +96 -0
  34. data/core/data.rbs +415 -0
  35. data/core/dir.rbs +993 -0
  36. data/core/encoding.rbs +1368 -0
  37. data/core/enumerable.rbs +2506 -0
  38. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  39. data/core/enumerator/product.rbs +92 -0
  40. data/core/enumerator.rbs +705 -0
  41. data/core/env.rbs +6 -0
  42. data/core/errno.rbs +682 -0
  43. data/core/errors.rbs +789 -0
  44. data/core/exception.rbs +485 -0
  45. data/core/false_class.rbs +82 -0
  46. data/core/fiber.rbs +570 -0
  47. data/core/fiber_error.rbs +11 -0
  48. data/core/file.rbs +2045 -0
  49. data/core/file_constants.rbs +463 -0
  50. data/core/file_stat.rbs +534 -0
  51. data/core/file_test.rbs +331 -0
  52. data/core/float.rbs +1316 -0
  53. data/core/gc.rbs +788 -0
  54. data/core/global_variables.rbs +184 -0
  55. data/core/hash.rbs +2183 -0
  56. data/core/integer.rbs +1374 -0
  57. data/core/io/buffer.rbs +995 -0
  58. data/core/io/wait.rbs +48 -0
  59. data/core/io.rbs +3472 -0
  60. data/core/kernel.rbs +3172 -0
  61. data/core/marshal.rbs +207 -0
  62. data/core/match_data.rbs +637 -0
  63. data/core/math.rbs +770 -0
  64. data/core/method.rbs +422 -0
  65. data/core/module.rbs +1856 -0
  66. data/core/nil_class.rbs +210 -0
  67. data/core/numeric.rbs +832 -0
  68. data/core/object.rbs +108 -0
  69. data/core/object_space/weak_key_map.rbs +166 -0
  70. data/core/object_space.rbs +197 -0
  71. data/core/pathname.rbs +1322 -0
  72. data/core/proc.rbs +905 -0
  73. data/core/process.rbs +2316 -0
  74. data/core/ractor.rbs +924 -0
  75. data/core/random.rbs +255 -0
  76. data/core/range.rbs +1209 -0
  77. data/core/rational.rbs +502 -0
  78. data/core/rb_config.rbs +88 -0
  79. data/core/rbs/ops.rbs +154 -0
  80. data/core/rbs/unnamed/argf.rbs +1236 -0
  81. data/core/rbs/unnamed/env_class.rbs +1214 -0
  82. data/core/rbs/unnamed/main_class.rbs +123 -0
  83. data/core/rbs/unnamed/random.rbs +186 -0
  84. data/core/refinement.rbs +59 -0
  85. data/core/regexp.rbs +1974 -0
  86. data/core/ruby.rbs +53 -0
  87. data/core/ruby_vm.rbs +809 -0
  88. data/core/rubygems/basic_specification.rbs +6 -0
  89. data/core/rubygems/config_file.rbs +38 -0
  90. data/core/rubygems/dependency_installer.rbs +6 -0
  91. data/core/rubygems/errors.rbs +109 -0
  92. data/core/rubygems/installer.rbs +15 -0
  93. data/core/rubygems/path_support.rbs +6 -0
  94. data/core/rubygems/platform.rbs +7 -0
  95. data/core/rubygems/request_set.rbs +49 -0
  96. data/core/rubygems/requirement.rbs +148 -0
  97. data/core/rubygems/rubygems.rbs +1105 -0
  98. data/core/rubygems/source_list.rbs +15 -0
  99. data/core/rubygems/specification.rbs +23 -0
  100. data/core/rubygems/stream_ui.rbs +5 -0
  101. data/core/rubygems/uninstaller.rbs +10 -0
  102. data/core/rubygems/version.rbs +293 -0
  103. data/core/set.rbs +751 -0
  104. data/core/signal.rbs +110 -0
  105. data/core/string.rbs +5532 -0
  106. data/core/struct.rbs +668 -0
  107. data/core/symbol.rbs +482 -0
  108. data/core/thread.rbs +1826 -0
  109. data/core/thread_group.rbs +79 -0
  110. data/core/time.rbs +1793 -0
  111. data/core/trace_point.rbs +483 -0
  112. data/core/true_class.rbs +98 -0
  113. data/core/unbound_method.rbs +337 -0
  114. data/core/warning.rbs +87 -0
  115. data/docs/CONTRIBUTING.md +107 -0
  116. data/docs/aliases.md +79 -0
  117. data/docs/architecture.md +110 -0
  118. data/docs/collection.md +192 -0
  119. data/docs/config.md +171 -0
  120. data/docs/data_and_struct.md +86 -0
  121. data/docs/encoding.md +56 -0
  122. data/docs/gem.md +56 -0
  123. data/docs/inline.md +634 -0
  124. data/docs/rbs_by_example.md +309 -0
  125. data/docs/repo.md +125 -0
  126. data/docs/rust.md +96 -0
  127. data/docs/sigs.md +167 -0
  128. data/docs/stdlib.md +147 -0
  129. data/docs/syntax.md +940 -0
  130. data/docs/tools.md +17 -0
  131. data/docs/type_fingerprint.md +21 -0
  132. data/docs/wasm_serialization.md +80 -0
  133. data/exe/rbs +7 -0
  134. data/ext/rbs_extension/ast_translation.c +1855 -0
  135. data/ext/rbs_extension/ast_translation.h +41 -0
  136. data/ext/rbs_extension/class_constants.c +187 -0
  137. data/ext/rbs_extension/class_constants.h +104 -0
  138. data/ext/rbs_extension/compat.h +10 -0
  139. data/ext/rbs_extension/extconf.rb +40 -0
  140. data/ext/rbs_extension/legacy_location.c +294 -0
  141. data/ext/rbs_extension/legacy_location.h +82 -0
  142. data/ext/rbs_extension/main.c +613 -0
  143. data/ext/rbs_extension/rbs_extension.h +16 -0
  144. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  145. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  146. data/goodcheck.yml +91 -0
  147. data/include/rbs/ast.h +1047 -0
  148. data/include/rbs/defines.h +99 -0
  149. data/include/rbs/lexer.h +207 -0
  150. data/include/rbs/location.h +40 -0
  151. data/include/rbs/parser.h +153 -0
  152. data/include/rbs/serialize.h +39 -0
  153. data/include/rbs/string.h +47 -0
  154. data/include/rbs/util/rbs_allocator.h +59 -0
  155. data/include/rbs/util/rbs_assert.h +20 -0
  156. data/include/rbs/util/rbs_buffer.h +83 -0
  157. data/include/rbs/util/rbs_constant_pool.h +155 -0
  158. data/include/rbs/util/rbs_encoding.h +282 -0
  159. data/include/rbs/util/rbs_unescape.h +24 -0
  160. data/include/rbs.h +14 -0
  161. data/lib/rbs/ancestor_graph.rb +92 -0
  162. data/lib/rbs/annotate/annotations.rb +199 -0
  163. data/lib/rbs/annotate/formatter.rb +82 -0
  164. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  165. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  166. data/lib/rbs/annotate.rb +8 -0
  167. data/lib/rbs/ast/annotation.rb +29 -0
  168. data/lib/rbs/ast/comment.rb +29 -0
  169. data/lib/rbs/ast/declarations.rb +472 -0
  170. data/lib/rbs/ast/directives.rb +49 -0
  171. data/lib/rbs/ast/members.rb +451 -0
  172. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  173. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  174. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  175. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  176. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  177. data/lib/rbs/ast/ruby/members.rb +762 -0
  178. data/lib/rbs/ast/type_param.rb +235 -0
  179. data/lib/rbs/ast/visitor.rb +137 -0
  180. data/lib/rbs/buffer.rb +189 -0
  181. data/lib/rbs/builtin_names.rb +58 -0
  182. data/lib/rbs/cli/colored_io.rb +48 -0
  183. data/lib/rbs/cli/diff.rb +84 -0
  184. data/lib/rbs/cli/validate.rb +294 -0
  185. data/lib/rbs/cli.rb +1253 -0
  186. data/lib/rbs/collection/cleaner.rb +38 -0
  187. data/lib/rbs/collection/config/lockfile.rb +92 -0
  188. data/lib/rbs/collection/config/lockfile_generator.rb +269 -0
  189. data/lib/rbs/collection/config.rb +81 -0
  190. data/lib/rbs/collection/installer.rb +32 -0
  191. data/lib/rbs/collection/sources/base.rb +14 -0
  192. data/lib/rbs/collection/sources/git.rb +265 -0
  193. data/lib/rbs/collection/sources/local.rb +81 -0
  194. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  195. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  196. data/lib/rbs/collection/sources.rb +38 -0
  197. data/lib/rbs/collection.rb +16 -0
  198. data/lib/rbs/constant.rb +28 -0
  199. data/lib/rbs/definition.rb +415 -0
  200. data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
  201. data/lib/rbs/definition_builder/method_builder.rb +295 -0
  202. data/lib/rbs/definition_builder.rb +1054 -0
  203. data/lib/rbs/diff.rb +131 -0
  204. data/lib/rbs/environment/class_entry.rb +69 -0
  205. data/lib/rbs/environment/module_entry.rb +66 -0
  206. data/lib/rbs/environment/use_map.rb +77 -0
  207. data/lib/rbs/environment.rb +1028 -0
  208. data/lib/rbs/environment_loader.rb +167 -0
  209. data/lib/rbs/environment_walker.rb +155 -0
  210. data/lib/rbs/errors.rb +634 -0
  211. data/lib/rbs/factory.rb +18 -0
  212. data/lib/rbs/file_finder.rb +28 -0
  213. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  214. data/lib/rbs/inline_parser.rb +568 -0
  215. data/lib/rbs/location_aux.rb +170 -0
  216. data/lib/rbs/locator.rb +247 -0
  217. data/lib/rbs/method_type.rb +145 -0
  218. data/lib/rbs/namespace.rb +154 -0
  219. data/lib/rbs/parser/lex_result.rb +15 -0
  220. data/lib/rbs/parser/token.rb +23 -0
  221. data/lib/rbs/parser_aux.rb +142 -0
  222. data/lib/rbs/prototype/helpers.rb +197 -0
  223. data/lib/rbs/prototype/node_usage.rb +99 -0
  224. data/lib/rbs/prototype/rb.rb +816 -0
  225. data/lib/rbs/prototype/rbi.rb +625 -0
  226. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  227. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  228. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  229. data/lib/rbs/prototype/runtime.rb +680 -0
  230. data/lib/rbs/repository.rb +127 -0
  231. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  232. data/lib/rbs/resolver/type_name_resolver.rb +167 -0
  233. data/lib/rbs/rewriter.rb +70 -0
  234. data/lib/rbs/sorter.rb +198 -0
  235. data/lib/rbs/source.rb +99 -0
  236. data/lib/rbs/substitution.rb +83 -0
  237. data/lib/rbs/subtractor.rb +204 -0
  238. data/lib/rbs/test/errors.rb +80 -0
  239. data/lib/rbs/test/guaranteed.rb +30 -0
  240. data/lib/rbs/test/hook.rb +212 -0
  241. data/lib/rbs/test/observer.rb +19 -0
  242. data/lib/rbs/test/setup.rb +84 -0
  243. data/lib/rbs/test/setup_helper.rb +50 -0
  244. data/lib/rbs/test/tester.rb +167 -0
  245. data/lib/rbs/test/type_check.rb +457 -0
  246. data/lib/rbs/test.rb +112 -0
  247. data/lib/rbs/type_alias_dependency.rb +100 -0
  248. data/lib/rbs/type_alias_regularity.rb +126 -0
  249. data/lib/rbs/type_name.rb +122 -0
  250. data/lib/rbs/types.rb +1604 -0
  251. data/lib/rbs/unit_test/convertibles.rb +177 -0
  252. data/lib/rbs/unit_test/spy.rb +138 -0
  253. data/lib/rbs/unit_test/type_assertions.rb +383 -0
  254. data/lib/rbs/unit_test/with_aliases.rb +145 -0
  255. data/lib/rbs/unit_test.rb +6 -0
  256. data/lib/rbs/validator.rb +186 -0
  257. data/lib/rbs/variance_calculator.rb +189 -0
  258. data/lib/rbs/vendorer.rb +71 -0
  259. data/lib/rbs/version.rb +5 -0
  260. data/lib/rbs/wasm/deserializer.rb +213 -0
  261. data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
  262. data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
  263. data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
  264. data/lib/rbs/wasm/jars/asm-util.jar +0 -0
  265. data/lib/rbs/wasm/jars/asm.jar +0 -0
  266. data/lib/rbs/wasm/jars/compiler.jar +0 -0
  267. data/lib/rbs/wasm/jars/log.jar +0 -0
  268. data/lib/rbs/wasm/jars/runtime.jar +0 -0
  269. data/lib/rbs/wasm/jars/wasi.jar +0 -0
  270. data/lib/rbs/wasm/jars/wasm.jar +0 -0
  271. data/lib/rbs/wasm/location.rb +61 -0
  272. data/lib/rbs/wasm/parser.rb +137 -0
  273. data/lib/rbs/wasm/rbs_parser.wasm +0 -0
  274. data/lib/rbs/wasm/runtime.rb +217 -0
  275. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  276. data/lib/rbs/writer.rb +424 -0
  277. data/lib/rbs.rb +117 -0
  278. data/lib/rdoc/discover.rb +20 -0
  279. data/lib/rdoc_plugin/parser.rb +163 -0
  280. data/rbs.gemspec +68 -0
  281. data/schema/annotation.json +14 -0
  282. data/schema/comment.json +26 -0
  283. data/schema/decls.json +326 -0
  284. data/schema/function.json +87 -0
  285. data/schema/location.json +56 -0
  286. data/schema/members.json +266 -0
  287. data/schema/methodType.json +50 -0
  288. data/schema/typeParam.json +52 -0
  289. data/schema/types.json +317 -0
  290. data/sig/ancestor_builder.rbs +163 -0
  291. data/sig/ancestor_graph.rbs +60 -0
  292. data/sig/annotate/annotations.rbs +102 -0
  293. data/sig/annotate/formatter.rbs +24 -0
  294. data/sig/annotate/rdoc_annotater.rbs +85 -0
  295. data/sig/annotate/rdoc_source.rbs +32 -0
  296. data/sig/annotation.rbs +27 -0
  297. data/sig/ast/ruby/annotations.rbs +470 -0
  298. data/sig/ast/ruby/comment_block.rbs +127 -0
  299. data/sig/ast/ruby/declarations.rbs +158 -0
  300. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  301. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  302. data/sig/ast/ruby/members.rbs +198 -0
  303. data/sig/buffer.rbs +108 -0
  304. data/sig/builtin_names.rbs +44 -0
  305. data/sig/cli/colored_io.rbs +15 -0
  306. data/sig/cli/diff.rbs +15 -0
  307. data/sig/cli/validate.rbs +47 -0
  308. data/sig/cli.rbs +89 -0
  309. data/sig/collection/cleaner.rbs +13 -0
  310. data/sig/collection/config/lockfile.rbs +74 -0
  311. data/sig/collection/config/lockfile_generator.rbs +68 -0
  312. data/sig/collection/config.rbs +46 -0
  313. data/sig/collection/installer.rbs +17 -0
  314. data/sig/collection/sources.rbs +214 -0
  315. data/sig/collection.rbs +4 -0
  316. data/sig/comment.rbs +26 -0
  317. data/sig/constant.rbs +21 -0
  318. data/sig/declarations.rbs +274 -0
  319. data/sig/definition.rbs +232 -0
  320. data/sig/definition_builder.rbs +181 -0
  321. data/sig/diff.rbs +28 -0
  322. data/sig/directives.rbs +77 -0
  323. data/sig/environment/class_entry.rbs +50 -0
  324. data/sig/environment/module_entry.rbs +50 -0
  325. data/sig/environment.rbs +286 -0
  326. data/sig/environment_loader.rbs +111 -0
  327. data/sig/environment_walker.rbs +65 -0
  328. data/sig/errors.rbs +408 -0
  329. data/sig/factory.rbs +5 -0
  330. data/sig/file_finder.rbs +28 -0
  331. data/sig/inline_parser/comment_association.rbs +71 -0
  332. data/sig/inline_parser.rbs +126 -0
  333. data/sig/location.rbs +135 -0
  334. data/sig/locator.rbs +56 -0
  335. data/sig/manifest.yaml +5 -0
  336. data/sig/members.rbs +258 -0
  337. data/sig/method_builder.rbs +89 -0
  338. data/sig/method_types.rbs +58 -0
  339. data/sig/namespace.rbs +161 -0
  340. data/sig/parser.rbs +164 -0
  341. data/sig/prototype/helpers.rbs +29 -0
  342. data/sig/prototype/node_usage.rbs +20 -0
  343. data/sig/prototype/rb.rbs +96 -0
  344. data/sig/prototype/rbi.rbs +75 -0
  345. data/sig/prototype/runtime.rbs +182 -0
  346. data/sig/rbs.rbs +21 -0
  347. data/sig/rdoc/rbs.rbs +67 -0
  348. data/sig/repository.rbs +85 -0
  349. data/sig/resolver/constant_resolver.rbs +92 -0
  350. data/sig/resolver/context.rbs +34 -0
  351. data/sig/resolver/type_name_resolver.rbs +61 -0
  352. data/sig/rewriter.rbs +45 -0
  353. data/sig/shims/bundler.rbs +38 -0
  354. data/sig/shims/enumerable.rbs +5 -0
  355. data/sig/shims/rubygems.rbs +19 -0
  356. data/sig/sorter.rbs +41 -0
  357. data/sig/source.rbs +48 -0
  358. data/sig/substitution.rbs +48 -0
  359. data/sig/subtractor.rbs +37 -0
  360. data/sig/test/errors.rbs +52 -0
  361. data/sig/test/guranteed.rbs +9 -0
  362. data/sig/test/type_check.rbs +19 -0
  363. data/sig/test.rbs +82 -0
  364. data/sig/type_alias_dependency.rbs +53 -0
  365. data/sig/type_alias_regularity.rbs +98 -0
  366. data/sig/type_param.rbs +115 -0
  367. data/sig/typename.rbs +89 -0
  368. data/sig/types.rbs +578 -0
  369. data/sig/unit_test/convertibles.rbs +154 -0
  370. data/sig/unit_test/spy.rbs +22 -0
  371. data/sig/unit_test/type_assertions.rbs +211 -0
  372. data/sig/unit_test/with_aliases.rbs +136 -0
  373. data/sig/use_map.rbs +35 -0
  374. data/sig/util.rbs +9 -0
  375. data/sig/validator.rbs +63 -0
  376. data/sig/variance_calculator.rbs +87 -0
  377. data/sig/vendorer.rbs +51 -0
  378. data/sig/version.rbs +3 -0
  379. data/sig/visitor.rbs +47 -0
  380. data/sig/wasm/deserializer.rbs +66 -0
  381. data/sig/wasm/serialization_schema.rbs +13 -0
  382. data/sig/writer.rbs +127 -0
  383. data/src/ast.c +1628 -0
  384. data/src/lexer.c +3217 -0
  385. data/src/lexer.re +155 -0
  386. data/src/lexstate.c +217 -0
  387. data/src/location.c +31 -0
  388. data/src/parser.c +4255 -0
  389. data/src/serialize.c +958 -0
  390. data/src/string.c +41 -0
  391. data/src/util/rbs_allocator.c +162 -0
  392. data/src/util/rbs_assert.c +19 -0
  393. data/src/util/rbs_buffer.c +54 -0
  394. data/src/util/rbs_constant_pool.c +268 -0
  395. data/src/util/rbs_encoding.c +21308 -0
  396. data/src/util/rbs_unescape.c +167 -0
  397. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  398. data/stdlib/abbrev/0/array.rbs +26 -0
  399. data/stdlib/base64/0/base64.rbs +355 -0
  400. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  401. data/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
  402. data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
  403. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  404. data/stdlib/cgi/0/core.rbs +911 -0
  405. data/stdlib/cgi/0/manifest.yaml +4 -0
  406. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  407. data/stdlib/coverage/0/coverage.rbs +266 -0
  408. data/stdlib/csv/0/csv.rbs +3776 -0
  409. data/stdlib/csv/0/manifest.yaml +3 -0
  410. data/stdlib/date/0/date.rbs +1598 -0
  411. data/stdlib/date/0/date_time.rbs +617 -0
  412. data/stdlib/date/0/time.rbs +26 -0
  413. data/stdlib/dbm/0/dbm.rbs +421 -0
  414. data/stdlib/delegate/0/delegator.rbs +187 -0
  415. data/stdlib/delegate/0/kernel.rbs +47 -0
  416. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  417. data/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
  418. data/stdlib/digest/0/digest.rbs +687 -0
  419. data/stdlib/erb/0/erb.rbs +933 -0
  420. data/stdlib/etc/0/etc.rbs +884 -0
  421. data/stdlib/fileutils/0/fileutils.rbs +1753 -0
  422. data/stdlib/find/0/find.rbs +49 -0
  423. data/stdlib/forwardable/0/forwardable.rbs +271 -0
  424. data/stdlib/io-console/0/io-console.rbs +414 -0
  425. data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
  426. data/stdlib/json/0/json.rbs +1963 -0
  427. data/stdlib/kconv/0/kconv.rbs +166 -0
  428. data/stdlib/logger/0/formatter.rbs +45 -0
  429. data/stdlib/logger/0/log_device.rbs +100 -0
  430. data/stdlib/logger/0/logger.rbs +796 -0
  431. data/stdlib/logger/0/manifest.yaml +2 -0
  432. data/stdlib/logger/0/period.rbs +17 -0
  433. data/stdlib/logger/0/severity.rbs +34 -0
  434. data/stdlib/minitest/0/kernel.rbs +42 -0
  435. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  436. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  437. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  438. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  439. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  440. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  441. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  442. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  443. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  444. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  445. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  446. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  447. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  448. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  449. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  450. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  451. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  452. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  453. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  454. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  455. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  456. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  457. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  458. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  459. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  460. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  461. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  462. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  463. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  464. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  465. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  466. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  467. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  468. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  469. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  470. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  471. data/stdlib/minitest/0/minitest.rbs +115 -0
  472. data/stdlib/monitor/0/monitor.rbs +363 -0
  473. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  474. data/stdlib/net-http/0/manifest.yaml +3 -0
  475. data/stdlib/net-http/0/net-http.rbs +5580 -0
  476. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  477. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  478. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  479. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  480. data/stdlib/nkf/0/nkf.rbs +402 -0
  481. data/stdlib/objspace/0/objspace.rbs +470 -0
  482. data/stdlib/observable/0/observable.rbs +217 -0
  483. data/stdlib/open-uri/0/manifest.yaml +4 -0
  484. data/stdlib/open-uri/0/open-uri.rbs +433 -0
  485. data/stdlib/open3/0/open3.rbs +606 -0
  486. data/stdlib/openssl/0/manifest.yaml +3 -0
  487. data/stdlib/openssl/0/openssl.rbs +12231 -0
  488. data/stdlib/optparse/0/optparse.rbs +1734 -0
  489. data/stdlib/pathname/0/pathname.rbs +36 -0
  490. data/stdlib/pp/0/manifest.yaml +2 -0
  491. data/stdlib/pp/0/pp.rbs +301 -0
  492. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  493. data/stdlib/pstore/0/pstore.rbs +608 -0
  494. data/stdlib/psych/0/core_ext.rbs +12 -0
  495. data/stdlib/psych/0/dbm.rbs +237 -0
  496. data/stdlib/psych/0/manifest.yaml +3 -0
  497. data/stdlib/psych/0/psych.rbs +455 -0
  498. data/stdlib/psych/0/store.rbs +57 -0
  499. data/stdlib/pty/0/pty.rbs +240 -0
  500. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  501. data/stdlib/rdoc/0/code_object.rbs +52 -0
  502. data/stdlib/rdoc/0/comment.rbs +61 -0
  503. data/stdlib/rdoc/0/context.rbs +153 -0
  504. data/stdlib/rdoc/0/markup.rbs +117 -0
  505. data/stdlib/rdoc/0/options.rbs +76 -0
  506. data/stdlib/rdoc/0/parser.rbs +56 -0
  507. data/stdlib/rdoc/0/rdoc.rbs +393 -0
  508. data/stdlib/rdoc/0/ri.rbs +17 -0
  509. data/stdlib/rdoc/0/store.rbs +48 -0
  510. data/stdlib/rdoc/0/top_level.rbs +97 -0
  511. data/stdlib/resolv/0/manifest.yaml +3 -0
  512. data/stdlib/resolv/0/resolv.rbs +1787 -0
  513. data/stdlib/ripper/0/ripper.rbs +1654 -0
  514. data/stdlib/securerandom/0/manifest.yaml +2 -0
  515. data/stdlib/securerandom/0/securerandom.rbs +49 -0
  516. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  517. data/stdlib/singleton/0/singleton.rbs +134 -0
  518. data/stdlib/socket/0/addrinfo.rbs +666 -0
  519. data/stdlib/socket/0/basic_socket.rbs +590 -0
  520. data/stdlib/socket/0/constants.rbs +2295 -0
  521. data/stdlib/socket/0/ip_socket.rbs +94 -0
  522. data/stdlib/socket/0/socket.rbs +4170 -0
  523. data/stdlib/socket/0/socket_error.rbs +5 -0
  524. data/stdlib/socket/0/tcp_server.rbs +192 -0
  525. data/stdlib/socket/0/tcp_socket.rbs +87 -0
  526. data/stdlib/socket/0/udp_socket.rbs +133 -0
  527. data/stdlib/socket/0/unix_server.rbs +169 -0
  528. data/stdlib/socket/0/unix_socket.rbs +172 -0
  529. data/stdlib/stringio/0/stringio.rbs +1681 -0
  530. data/stdlib/strscan/0/string_scanner.rbs +1648 -0
  531. data/stdlib/tempfile/0/tempfile.rbs +483 -0
  532. data/stdlib/time/0/time.rbs +434 -0
  533. data/stdlib/timeout/0/timeout.rbs +137 -0
  534. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  535. data/stdlib/tsort/0/cyclic.rbs +8 -0
  536. data/stdlib/tsort/0/interfaces.rbs +20 -0
  537. data/stdlib/tsort/0/tsort.rbs +410 -0
  538. data/stdlib/uri/0/common.rbs +621 -0
  539. data/stdlib/uri/0/file.rbs +118 -0
  540. data/stdlib/uri/0/ftp.rbs +13 -0
  541. data/stdlib/uri/0/generic.rbs +1116 -0
  542. data/stdlib/uri/0/http.rbs +104 -0
  543. data/stdlib/uri/0/https.rbs +14 -0
  544. data/stdlib/uri/0/ldap.rbs +230 -0
  545. data/stdlib/uri/0/ldaps.rbs +14 -0
  546. data/stdlib/uri/0/mailto.rbs +92 -0
  547. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  548. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  549. data/stdlib/uri/0/ws.rbs +13 -0
  550. data/stdlib/uri/0/wss.rbs +9 -0
  551. data/stdlib/yaml/0/manifest.yaml +2 -0
  552. data/stdlib/yaml/0/yaml.rbs +1 -0
  553. data/stdlib/zlib/0/buf_error.rbs +10 -0
  554. data/stdlib/zlib/0/data_error.rbs +10 -0
  555. data/stdlib/zlib/0/deflate.rbs +211 -0
  556. data/stdlib/zlib/0/error.rbs +20 -0
  557. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  558. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  559. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  560. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  561. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  562. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  563. data/stdlib/zlib/0/gzip_writer.rbs +168 -0
  564. data/stdlib/zlib/0/inflate.rbs +180 -0
  565. data/stdlib/zlib/0/mem_error.rbs +10 -0
  566. data/stdlib/zlib/0/need_dict.rbs +13 -0
  567. data/stdlib/zlib/0/stream_end.rbs +11 -0
  568. data/stdlib/zlib/0/stream_error.rbs +11 -0
  569. data/stdlib/zlib/0/version_error.rbs +11 -0
  570. data/stdlib/zlib/0/zlib.rbs +449 -0
  571. data/stdlib/zlib/0/zstream.rbs +201 -0
  572. data/wasm/README.md +59 -0
  573. data/wasm/rbs_wasm.c +411 -0
  574. metadata +660 -0
@@ -0,0 +1,41 @@
1
+ /*----------------------------------------------------------------------------*/
2
+ /* This file is generated by the templates/template.rb script and should not */
3
+ /* be modified manually. */
4
+ /* To change the template see */
5
+ /* templates/ext/rbs_extension/ast_translation.h.erb */
6
+ /*----------------------------------------------------------------------------*/
7
+
8
+ #ifndef RBS_EXTENSION_AST_TRANSLATION_H
9
+ #define RBS_EXTENSION_AST_TRANSLATION_H
10
+
11
+ #include "compat.h"
12
+
13
+ SUPPRESS_RUBY_HEADER_DIAGNOSTICS_BEGIN
14
+ #include "ruby.h"
15
+ #include "ruby/encoding.h"
16
+ SUPPRESS_RUBY_HEADER_DIAGNOSTICS_END
17
+
18
+ #include "rbs/ast.h"
19
+ #include "rbs/location.h"
20
+
21
+ /// A bag of values needed when copying RBS C structs into Ruby objects.
22
+ typedef struct rbs_translation_context {
23
+ rbs_constant_pool_t *constant_pool;
24
+ VALUE buffer;
25
+ rb_encoding *encoding;
26
+
27
+ /// A reusable Hash used for calling `rb_class_new_instance_kw()` without allocating a new Hash each time.
28
+ /// It's vital that the various Nodes' `#initialize` methods take the kwarg values, but don't retain this reusable Hash.
29
+ VALUE reusable_kwargs_hash;
30
+ } rbs_translation_context_t;
31
+
32
+ rbs_translation_context_t rbs_translation_context_create(rbs_constant_pool_t *, VALUE buffer_string, rb_encoding *ruby_encoding);
33
+
34
+ VALUE rbs_node_list_to_ruby_array(rbs_translation_context_t, rbs_node_list_t *list);
35
+ VALUE rbs_hash_to_ruby_hash(rbs_translation_context_t, rbs_hash_t *hash);
36
+ VALUE rbs_struct_to_ruby_value(rbs_translation_context_t, rbs_node_t *instance);
37
+
38
+ extern VALUE EMPTY_ARRAY;
39
+ extern VALUE EMPTY_HASH;
40
+
41
+ #endif
@@ -0,0 +1,187 @@
1
+ /*----------------------------------------------------------------------------*/
2
+ /* This file is generated by the templates/template.rb script and should not */
3
+ /* be modified manually. */
4
+ /* To change the template see */
5
+ /* templates/ext/rbs_extension/class_constants.c.erb */
6
+ /*----------------------------------------------------------------------------*/
7
+
8
+ #include "rbs_extension.h"
9
+
10
+ VALUE RBS;
11
+ VALUE RBS_AST;
12
+ VALUE RBS_AST_Declarations;
13
+ VALUE RBS_AST_Directives;
14
+ VALUE RBS_AST_Members;
15
+ VALUE RBS_AST_Ruby;
16
+ VALUE RBS_AST_Ruby_Annotations;
17
+ VALUE RBS_Parser;
18
+ VALUE RBS_Types;
19
+ VALUE RBS_Types_Bases;
20
+
21
+ VALUE RBS_AST_Annotation;
22
+ VALUE RBS_AST_Comment;
23
+ VALUE RBS_AST_Declarations_Class;
24
+ VALUE RBS_AST_Declarations_Class_Super;
25
+ VALUE RBS_AST_Declarations_ClassAlias;
26
+ VALUE RBS_AST_Declarations_Constant;
27
+ VALUE RBS_AST_Declarations_Global;
28
+ VALUE RBS_AST_Declarations_Interface;
29
+ VALUE RBS_AST_Declarations_Module;
30
+ VALUE RBS_AST_Declarations_Module_Self;
31
+ VALUE RBS_AST_Declarations_ModuleAlias;
32
+ VALUE RBS_AST_Declarations_TypeAlias;
33
+ VALUE RBS_AST_Directives_Use;
34
+ VALUE RBS_AST_Directives_Use_SingleClause;
35
+ VALUE RBS_AST_Directives_Use_WildcardClause;
36
+ VALUE RBS_AST_Members_Alias;
37
+ VALUE RBS_AST_Members_AttrAccessor;
38
+ VALUE RBS_AST_Members_AttrReader;
39
+ VALUE RBS_AST_Members_AttrWriter;
40
+ VALUE RBS_AST_Members_ClassInstanceVariable;
41
+ VALUE RBS_AST_Members_ClassVariable;
42
+ VALUE RBS_AST_Members_Extend;
43
+ VALUE RBS_AST_Members_Include;
44
+ VALUE RBS_AST_Members_InstanceVariable;
45
+ VALUE RBS_AST_Members_MethodDefinition;
46
+ VALUE RBS_AST_Members_MethodDefinition_Overload;
47
+ VALUE RBS_AST_Members_Prepend;
48
+ VALUE RBS_AST_Members_Private;
49
+ VALUE RBS_AST_Members_Public;
50
+ VALUE RBS_AST_Ruby_Annotations_BlockParamTypeAnnotation;
51
+ VALUE RBS_AST_Ruby_Annotations_ClassAliasAnnotation;
52
+ VALUE RBS_AST_Ruby_Annotations_ColonMethodTypeAnnotation;
53
+ VALUE RBS_AST_Ruby_Annotations_DoubleSplatParamTypeAnnotation;
54
+ VALUE RBS_AST_Ruby_Annotations_InstanceVariableAnnotation;
55
+ VALUE RBS_AST_Ruby_Annotations_MethodTypesAnnotation;
56
+ VALUE RBS_AST_Ruby_Annotations_ModuleAliasAnnotation;
57
+ VALUE RBS_AST_Ruby_Annotations_ModuleSelfAnnotation;
58
+ VALUE RBS_AST_Ruby_Annotations_NodeTypeAssertion;
59
+ VALUE RBS_AST_Ruby_Annotations_ParamTypeAnnotation;
60
+ VALUE RBS_AST_Ruby_Annotations_ReturnTypeAnnotation;
61
+ VALUE RBS_AST_Ruby_Annotations_SkipAnnotation;
62
+ VALUE RBS_AST_Ruby_Annotations_SplatParamTypeAnnotation;
63
+ VALUE RBS_AST_Ruby_Annotations_TypeApplicationAnnotation;
64
+ VALUE RBS_AST_TypeParam;
65
+ VALUE RBS_MethodType;
66
+ VALUE RBS_Namespace;
67
+ VALUE RBS_TypeName;
68
+ VALUE RBS_Types_Alias;
69
+ VALUE RBS_Types_Bases_Any;
70
+ VALUE RBS_Types_Bases_Bool;
71
+ VALUE RBS_Types_Bases_Bottom;
72
+ VALUE RBS_Types_Bases_Class;
73
+ VALUE RBS_Types_Bases_Instance;
74
+ VALUE RBS_Types_Bases_Nil;
75
+ VALUE RBS_Types_Bases_Self;
76
+ VALUE RBS_Types_Bases_Top;
77
+ VALUE RBS_Types_Bases_Void;
78
+ VALUE RBS_Types_Block;
79
+ VALUE RBS_Types_ClassInstance;
80
+ VALUE RBS_Types_ClassSingleton;
81
+ VALUE RBS_Types_Function;
82
+ VALUE RBS_Types_Function_Param;
83
+ VALUE RBS_Types_Interface;
84
+ VALUE RBS_Types_Intersection;
85
+ VALUE RBS_Types_Literal;
86
+ VALUE RBS_Types_Optional;
87
+ VALUE RBS_Types_Proc;
88
+ VALUE RBS_Types_Record;
89
+ VALUE RBS_Types_Tuple;
90
+ VALUE RBS_Types_Union;
91
+ VALUE RBS_Types_UntypedFunction;
92
+ VALUE RBS_Types_Variable;
93
+
94
+ VALUE RBS_ParsingError;
95
+
96
+ #define IMPORT_CONSTANT(var, parent, name) \
97
+ { \
98
+ var = rb_const_get(parent, rb_intern(name)); \
99
+ rb_gc_register_mark_object(var); \
100
+ }
101
+
102
+ void rbs__init_constants(void) {
103
+ IMPORT_CONSTANT(RBS, rb_cObject, "RBS");
104
+ IMPORT_CONSTANT(RBS_ParsingError, RBS, "ParsingError");
105
+
106
+ IMPORT_CONSTANT(RBS_AST, RBS, "AST");
107
+ IMPORT_CONSTANT(RBS_AST_Declarations, RBS_AST, "Declarations");
108
+ IMPORT_CONSTANT(RBS_AST_Directives, RBS_AST, "Directives");
109
+ IMPORT_CONSTANT(RBS_AST_Members, RBS_AST, "Members");
110
+ IMPORT_CONSTANT(RBS_AST_Ruby, RBS_AST, "Ruby");
111
+ IMPORT_CONSTANT(RBS_AST_Ruby_Annotations, RBS_AST_Ruby, "Annotations");
112
+ IMPORT_CONSTANT(RBS_Types, RBS, "Types");
113
+ IMPORT_CONSTANT(RBS_Types_Bases, RBS_Types, "Bases");
114
+
115
+ IMPORT_CONSTANT(RBS_AST_Annotation, RBS_AST, "Annotation");
116
+ IMPORT_CONSTANT(RBS_AST_Comment, RBS_AST, "Comment");
117
+ IMPORT_CONSTANT(RBS_AST_Declarations_Class, RBS_AST_Declarations, "Class");
118
+ IMPORT_CONSTANT(RBS_AST_Declarations_Class_Super, RBS_AST_Declarations_Class, "Super");
119
+ IMPORT_CONSTANT(RBS_AST_Declarations_ClassAlias, RBS_AST_Declarations, "ClassAlias");
120
+ IMPORT_CONSTANT(RBS_AST_Declarations_Constant, RBS_AST_Declarations, "Constant");
121
+ IMPORT_CONSTANT(RBS_AST_Declarations_Global, RBS_AST_Declarations, "Global");
122
+ IMPORT_CONSTANT(RBS_AST_Declarations_Interface, RBS_AST_Declarations, "Interface");
123
+ IMPORT_CONSTANT(RBS_AST_Declarations_Module, RBS_AST_Declarations, "Module");
124
+ IMPORT_CONSTANT(RBS_AST_Declarations_Module_Self, RBS_AST_Declarations_Module, "Self");
125
+ IMPORT_CONSTANT(RBS_AST_Declarations_ModuleAlias, RBS_AST_Declarations, "ModuleAlias");
126
+ IMPORT_CONSTANT(RBS_AST_Declarations_TypeAlias, RBS_AST_Declarations, "TypeAlias");
127
+ IMPORT_CONSTANT(RBS_AST_Directives_Use, RBS_AST_Directives, "Use");
128
+ IMPORT_CONSTANT(RBS_AST_Directives_Use_SingleClause, RBS_AST_Directives_Use, "SingleClause");
129
+ IMPORT_CONSTANT(RBS_AST_Directives_Use_WildcardClause, RBS_AST_Directives_Use, "WildcardClause");
130
+ IMPORT_CONSTANT(RBS_AST_Members_Alias, RBS_AST_Members, "Alias");
131
+ IMPORT_CONSTANT(RBS_AST_Members_AttrAccessor, RBS_AST_Members, "AttrAccessor");
132
+ IMPORT_CONSTANT(RBS_AST_Members_AttrReader, RBS_AST_Members, "AttrReader");
133
+ IMPORT_CONSTANT(RBS_AST_Members_AttrWriter, RBS_AST_Members, "AttrWriter");
134
+ IMPORT_CONSTANT(RBS_AST_Members_ClassInstanceVariable, RBS_AST_Members, "ClassInstanceVariable");
135
+ IMPORT_CONSTANT(RBS_AST_Members_ClassVariable, RBS_AST_Members, "ClassVariable");
136
+ IMPORT_CONSTANT(RBS_AST_Members_Extend, RBS_AST_Members, "Extend");
137
+ IMPORT_CONSTANT(RBS_AST_Members_Include, RBS_AST_Members, "Include");
138
+ IMPORT_CONSTANT(RBS_AST_Members_InstanceVariable, RBS_AST_Members, "InstanceVariable");
139
+ IMPORT_CONSTANT(RBS_AST_Members_MethodDefinition, RBS_AST_Members, "MethodDefinition");
140
+ IMPORT_CONSTANT(RBS_AST_Members_MethodDefinition_Overload, RBS_AST_Members_MethodDefinition, "Overload");
141
+ IMPORT_CONSTANT(RBS_AST_Members_Prepend, RBS_AST_Members, "Prepend");
142
+ IMPORT_CONSTANT(RBS_AST_Members_Private, RBS_AST_Members, "Private");
143
+ IMPORT_CONSTANT(RBS_AST_Members_Public, RBS_AST_Members, "Public");
144
+ IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_BlockParamTypeAnnotation, RBS_AST_Ruby_Annotations, "BlockParamTypeAnnotation");
145
+ IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ClassAliasAnnotation, RBS_AST_Ruby_Annotations, "ClassAliasAnnotation");
146
+ IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ColonMethodTypeAnnotation, RBS_AST_Ruby_Annotations, "ColonMethodTypeAnnotation");
147
+ IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_DoubleSplatParamTypeAnnotation, RBS_AST_Ruby_Annotations, "DoubleSplatParamTypeAnnotation");
148
+ IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_InstanceVariableAnnotation, RBS_AST_Ruby_Annotations, "InstanceVariableAnnotation");
149
+ IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_MethodTypesAnnotation, RBS_AST_Ruby_Annotations, "MethodTypesAnnotation");
150
+ IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ModuleAliasAnnotation, RBS_AST_Ruby_Annotations, "ModuleAliasAnnotation");
151
+ IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ModuleSelfAnnotation, RBS_AST_Ruby_Annotations, "ModuleSelfAnnotation");
152
+ IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_NodeTypeAssertion, RBS_AST_Ruby_Annotations, "NodeTypeAssertion");
153
+ IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ParamTypeAnnotation, RBS_AST_Ruby_Annotations, "ParamTypeAnnotation");
154
+ IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ReturnTypeAnnotation, RBS_AST_Ruby_Annotations, "ReturnTypeAnnotation");
155
+ IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_SkipAnnotation, RBS_AST_Ruby_Annotations, "SkipAnnotation");
156
+ IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_SplatParamTypeAnnotation, RBS_AST_Ruby_Annotations, "SplatParamTypeAnnotation");
157
+ IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_TypeApplicationAnnotation, RBS_AST_Ruby_Annotations, "TypeApplicationAnnotation");
158
+ IMPORT_CONSTANT(RBS_AST_TypeParam, RBS_AST, "TypeParam");
159
+ IMPORT_CONSTANT(RBS_MethodType, RBS, "MethodType");
160
+ IMPORT_CONSTANT(RBS_Namespace, RBS, "Namespace");
161
+ IMPORT_CONSTANT(RBS_TypeName, RBS, "TypeName");
162
+ IMPORT_CONSTANT(RBS_Types_Alias, RBS_Types, "Alias");
163
+ IMPORT_CONSTANT(RBS_Types_Bases_Any, RBS_Types_Bases, "Any");
164
+ IMPORT_CONSTANT(RBS_Types_Bases_Bool, RBS_Types_Bases, "Bool");
165
+ IMPORT_CONSTANT(RBS_Types_Bases_Bottom, RBS_Types_Bases, "Bottom");
166
+ IMPORT_CONSTANT(RBS_Types_Bases_Class, RBS_Types_Bases, "Class");
167
+ IMPORT_CONSTANT(RBS_Types_Bases_Instance, RBS_Types_Bases, "Instance");
168
+ IMPORT_CONSTANT(RBS_Types_Bases_Nil, RBS_Types_Bases, "Nil");
169
+ IMPORT_CONSTANT(RBS_Types_Bases_Self, RBS_Types_Bases, "Self");
170
+ IMPORT_CONSTANT(RBS_Types_Bases_Top, RBS_Types_Bases, "Top");
171
+ IMPORT_CONSTANT(RBS_Types_Bases_Void, RBS_Types_Bases, "Void");
172
+ IMPORT_CONSTANT(RBS_Types_Block, RBS_Types, "Block");
173
+ IMPORT_CONSTANT(RBS_Types_ClassInstance, RBS_Types, "ClassInstance");
174
+ IMPORT_CONSTANT(RBS_Types_ClassSingleton, RBS_Types, "ClassSingleton");
175
+ IMPORT_CONSTANT(RBS_Types_Function, RBS_Types, "Function");
176
+ IMPORT_CONSTANT(RBS_Types_Function_Param, RBS_Types_Function, "Param");
177
+ IMPORT_CONSTANT(RBS_Types_Interface, RBS_Types, "Interface");
178
+ IMPORT_CONSTANT(RBS_Types_Intersection, RBS_Types, "Intersection");
179
+ IMPORT_CONSTANT(RBS_Types_Literal, RBS_Types, "Literal");
180
+ IMPORT_CONSTANT(RBS_Types_Optional, RBS_Types, "Optional");
181
+ IMPORT_CONSTANT(RBS_Types_Proc, RBS_Types, "Proc");
182
+ IMPORT_CONSTANT(RBS_Types_Record, RBS_Types, "Record");
183
+ IMPORT_CONSTANT(RBS_Types_Tuple, RBS_Types, "Tuple");
184
+ IMPORT_CONSTANT(RBS_Types_Union, RBS_Types, "Union");
185
+ IMPORT_CONSTANT(RBS_Types_UntypedFunction, RBS_Types, "UntypedFunction");
186
+ IMPORT_CONSTANT(RBS_Types_Variable, RBS_Types, "Variable");
187
+ }
@@ -0,0 +1,104 @@
1
+ /*----------------------------------------------------------------------------*/
2
+ /* This file is generated by the templates/template.rb script and should not */
3
+ /* be modified manually. */
4
+ /* To change the template see */
5
+ /* templates/ext/rbs_extension/class_constants.h.erb */
6
+ /*----------------------------------------------------------------------------*/
7
+
8
+ #ifndef RBS__CONSTANTS_H
9
+ #define RBS__CONSTANTS_H
10
+
11
+ #include "compat.h"
12
+
13
+ SUPPRESS_RUBY_HEADER_DIAGNOSTICS_BEGIN
14
+ #include "ruby.h"
15
+ SUPPRESS_RUBY_HEADER_DIAGNOSTICS_END
16
+
17
+ extern VALUE RBS;
18
+
19
+ extern VALUE RBS_AST;
20
+ extern VALUE RBS_AST_Declarations;
21
+ extern VALUE RBS_AST_Directives;
22
+ extern VALUE RBS_AST_Members;
23
+ extern VALUE RBS_AST_Ruby;
24
+ extern VALUE RBS_AST_Ruby_Annotations;
25
+ extern VALUE RBS_Types;
26
+ extern VALUE RBS_Types_Bases;
27
+ extern VALUE RBS_ParsingError;
28
+
29
+ extern VALUE RBS_AST_Annotation;
30
+ extern VALUE RBS_AST_Comment;
31
+ extern VALUE RBS_AST_Declarations_Class;
32
+ extern VALUE RBS_AST_Declarations_Class_Super;
33
+ extern VALUE RBS_AST_Declarations_ClassAlias;
34
+ extern VALUE RBS_AST_Declarations_Constant;
35
+ extern VALUE RBS_AST_Declarations_Global;
36
+ extern VALUE RBS_AST_Declarations_Interface;
37
+ extern VALUE RBS_AST_Declarations_Module;
38
+ extern VALUE RBS_AST_Declarations_Module_Self;
39
+ extern VALUE RBS_AST_Declarations_ModuleAlias;
40
+ extern VALUE RBS_AST_Declarations_TypeAlias;
41
+ extern VALUE RBS_AST_Directives_Use;
42
+ extern VALUE RBS_AST_Directives_Use_SingleClause;
43
+ extern VALUE RBS_AST_Directives_Use_WildcardClause;
44
+ extern VALUE RBS_AST_Members_Alias;
45
+ extern VALUE RBS_AST_Members_AttrAccessor;
46
+ extern VALUE RBS_AST_Members_AttrReader;
47
+ extern VALUE RBS_AST_Members_AttrWriter;
48
+ extern VALUE RBS_AST_Members_ClassInstanceVariable;
49
+ extern VALUE RBS_AST_Members_ClassVariable;
50
+ extern VALUE RBS_AST_Members_Extend;
51
+ extern VALUE RBS_AST_Members_Include;
52
+ extern VALUE RBS_AST_Members_InstanceVariable;
53
+ extern VALUE RBS_AST_Members_MethodDefinition;
54
+ extern VALUE RBS_AST_Members_MethodDefinition_Overload;
55
+ extern VALUE RBS_AST_Members_Prepend;
56
+ extern VALUE RBS_AST_Members_Private;
57
+ extern VALUE RBS_AST_Members_Public;
58
+ extern VALUE RBS_AST_Ruby_Annotations_BlockParamTypeAnnotation;
59
+ extern VALUE RBS_AST_Ruby_Annotations_ClassAliasAnnotation;
60
+ extern VALUE RBS_AST_Ruby_Annotations_ColonMethodTypeAnnotation;
61
+ extern VALUE RBS_AST_Ruby_Annotations_DoubleSplatParamTypeAnnotation;
62
+ extern VALUE RBS_AST_Ruby_Annotations_InstanceVariableAnnotation;
63
+ extern VALUE RBS_AST_Ruby_Annotations_MethodTypesAnnotation;
64
+ extern VALUE RBS_AST_Ruby_Annotations_ModuleAliasAnnotation;
65
+ extern VALUE RBS_AST_Ruby_Annotations_ModuleSelfAnnotation;
66
+ extern VALUE RBS_AST_Ruby_Annotations_NodeTypeAssertion;
67
+ extern VALUE RBS_AST_Ruby_Annotations_ParamTypeAnnotation;
68
+ extern VALUE RBS_AST_Ruby_Annotations_ReturnTypeAnnotation;
69
+ extern VALUE RBS_AST_Ruby_Annotations_SkipAnnotation;
70
+ extern VALUE RBS_AST_Ruby_Annotations_SplatParamTypeAnnotation;
71
+ extern VALUE RBS_AST_Ruby_Annotations_TypeApplicationAnnotation;
72
+ extern VALUE RBS_AST_TypeParam;
73
+ extern VALUE RBS_MethodType;
74
+ extern VALUE RBS_Namespace;
75
+ extern VALUE RBS_TypeName;
76
+ extern VALUE RBS_Types_Alias;
77
+ extern VALUE RBS_Types_Bases_Any;
78
+ extern VALUE RBS_Types_Bases_Bool;
79
+ extern VALUE RBS_Types_Bases_Bottom;
80
+ extern VALUE RBS_Types_Bases_Class;
81
+ extern VALUE RBS_Types_Bases_Instance;
82
+ extern VALUE RBS_Types_Bases_Nil;
83
+ extern VALUE RBS_Types_Bases_Self;
84
+ extern VALUE RBS_Types_Bases_Top;
85
+ extern VALUE RBS_Types_Bases_Void;
86
+ extern VALUE RBS_Types_Block;
87
+ extern VALUE RBS_Types_ClassInstance;
88
+ extern VALUE RBS_Types_ClassSingleton;
89
+ extern VALUE RBS_Types_Function;
90
+ extern VALUE RBS_Types_Function_Param;
91
+ extern VALUE RBS_Types_Interface;
92
+ extern VALUE RBS_Types_Intersection;
93
+ extern VALUE RBS_Types_Literal;
94
+ extern VALUE RBS_Types_Optional;
95
+ extern VALUE RBS_Types_Proc;
96
+ extern VALUE RBS_Types_Record;
97
+ extern VALUE RBS_Types_Tuple;
98
+ extern VALUE RBS_Types_Union;
99
+ extern VALUE RBS_Types_UntypedFunction;
100
+ extern VALUE RBS_Types_Variable;
101
+
102
+ void rbs__init_constants();
103
+
104
+ #endif
@@ -0,0 +1,10 @@
1
+ #ifdef __clang__
2
+ #define SUPPRESS_RUBY_HEADER_DIAGNOSTICS_BEGIN \
3
+ _Pragma("clang diagnostic push") \
4
+ _Pragma("clang diagnostic ignored \"-Wc2x-extensions\"")
5
+ #define SUPPRESS_RUBY_HEADER_DIAGNOSTICS_END \
6
+ _Pragma("clang diagnostic pop")
7
+ #else
8
+ #define SUPPRESS_RUBY_HEADER_DIAGNOSTICS_BEGIN
9
+ #define SUPPRESS_RUBY_HEADER_DIAGNOSTICS_END
10
+ #endif
@@ -0,0 +1,40 @@
1
+ require 'mkmf'
2
+
3
+ $INCFLAGS << " -I$(top_srcdir)" if $extmk
4
+ $INCFLAGS << " -I$(srcdir)/../../include"
5
+
6
+ $VPATH << "$(srcdir)/../../src"
7
+ $VPATH << "$(srcdir)/../../src/util"
8
+ $VPATH << "$(srcdir)/ext/rbs_extension"
9
+
10
+ root_dir = File.expand_path('../../../', __FILE__)
11
+ $srcs = Dir.glob("#{root_dir}/src/**/*.c") +
12
+ Dir.glob("#{root_dir}/ext/rbs_extension/*.c")
13
+
14
+ append_cflags [
15
+ '-std=gnu99',
16
+ '-Wimplicit-fallthrough',
17
+ '-Wunused-result',
18
+ '-Wc++-compat',
19
+ '-Wnullable-to-nonnull-conversion',
20
+ ]
21
+
22
+ if ENV['DEBUG']
23
+ append_cflags ['-O0', '-pg']
24
+ else
25
+ append_cflags ['-DNDEBUG']
26
+ end
27
+ if ENV["TEST_NO_C23"]
28
+ puts "Adding -Wc2x-extensions to CFLAGS"
29
+ $CFLAGS << " -Werror -Wc2x-extensions"
30
+ end
31
+
32
+ create_makefile 'rbs_extension'
33
+
34
+ # Only generate compile_commands.json when compiling through Rake tasks
35
+ # This is to avoid adding extconf_compile_commands_json as a runtime dependency
36
+ if ENV["COMPILE_COMMANDS_JSON"]
37
+ require 'extconf_compile_commands_json'
38
+ ExtconfCompileCommandsJson.generate!
39
+ ExtconfCompileCommandsJson.symlink!
40
+ end
@@ -0,0 +1,294 @@
1
+ #include "legacy_location.h"
2
+ #include "rbs_extension.h"
3
+ #include "ruby/internal/symbol.h"
4
+
5
+ #define RBS_LOC_REQUIRED_P(loc, i) ((loc)->children->required_p & (1 << (i)))
6
+ #define RBS_LOC_OPTIONAL_P(loc, i) (!RBS_LOC_REQUIRED_P((loc), (i)))
7
+ #define RBS_LOC_CHILDREN_SIZE(cap) (sizeof(rbs_loc_children) + sizeof(rbs_loc_entry) * ((cap) - 1))
8
+ #define NULL_LOC_RANGE_P(rg) ((rg).start == -1)
9
+
10
+ rbs_loc_range RBS_LOC_NULL_RANGE = { -1, -1 };
11
+ VALUE RBS_Location;
12
+
13
+ static void check_children_max(unsigned short n) {
14
+ size_t max = sizeof(rbs_loc_entry_bitmap) * 8;
15
+ if (n > max) {
16
+ rb_raise(rb_eRuntimeError, "Too many children added to location: %d", n);
17
+ }
18
+ }
19
+
20
+ void rbs_loc_legacy_alloc_children(rbs_loc *loc, unsigned short cap) {
21
+ check_children_max(cap);
22
+
23
+ size_t s = RBS_LOC_CHILDREN_SIZE(cap);
24
+ loc->children = (rbs_loc_children *) malloc(s);
25
+ *loc->children = (rbs_loc_children) {
26
+ .len = 0,
27
+ .required_p = 0,
28
+ .cap = cap,
29
+ .entries = { { 0 } },
30
+ };
31
+ }
32
+
33
+ static void check_children_cap(rbs_loc *loc) {
34
+ if (loc->children == NULL) {
35
+ rbs_loc_legacy_alloc_children(loc, 1);
36
+ } else {
37
+ if (loc->children->len == loc->children->cap) {
38
+ check_children_max(loc->children->cap + 1);
39
+ size_t s = RBS_LOC_CHILDREN_SIZE(++loc->children->cap);
40
+ loc->children = (rbs_loc_children *) realloc(loc->children, s);
41
+ }
42
+ }
43
+ }
44
+
45
+ void rbs_loc_legacy_add_optional_child(rbs_loc *loc, ID name, rbs_loc_range r) {
46
+ check_children_cap(loc);
47
+
48
+ unsigned short i = loc->children->len++;
49
+ loc->children->entries[i] = (rbs_loc_entry) {
50
+ .name = name,
51
+ .rg = r,
52
+ };
53
+ }
54
+
55
+ void rbs_loc_legacy_add_required_child(rbs_loc *loc, ID name, rbs_loc_range r) {
56
+ rbs_loc_legacy_add_optional_child(loc, name, r);
57
+
58
+ unsigned short last_index = loc->children->len - 1;
59
+ loc->children->required_p |= 1 << last_index;
60
+ }
61
+
62
+ void rbs_loc_init(rbs_loc *loc, VALUE buffer, rbs_loc_range rg) {
63
+ *loc = (rbs_loc) {
64
+ .buffer = buffer,
65
+ .rg = rg,
66
+ .children = NULL,
67
+ };
68
+ }
69
+
70
+ void rbs_loc_free(rbs_loc *loc) {
71
+ free(loc->children);
72
+ ruby_xfree(loc);
73
+ }
74
+
75
+ static void rbs_loc_mark(void *ptr) {
76
+ rbs_loc *loc = (rbs_loc *) ptr;
77
+ rb_gc_mark(loc->buffer);
78
+ }
79
+
80
+ static size_t rbs_loc_memsize(const void *ptr) {
81
+ const rbs_loc *loc = (const rbs_loc *) ptr;
82
+ if (loc->children == NULL) {
83
+ return sizeof(rbs_loc);
84
+ } else {
85
+ return sizeof(rbs_loc) + RBS_LOC_CHILDREN_SIZE(loc->children->cap);
86
+ }
87
+ }
88
+
89
+ static rb_data_type_t location_type = {
90
+ "RBS::Location",
91
+ { rbs_loc_mark, (RUBY_DATA_FUNC) rbs_loc_free, rbs_loc_memsize },
92
+ 0,
93
+ 0,
94
+ RUBY_TYPED_FREE_IMMEDIATELY
95
+ };
96
+
97
+ static VALUE location_s_allocate(VALUE klass) {
98
+ rbs_loc *loc;
99
+ VALUE obj = TypedData_Make_Struct(klass, rbs_loc, &location_type, loc);
100
+
101
+ rbs_loc_init(loc, Qnil, RBS_LOC_NULL_RANGE);
102
+
103
+ return obj;
104
+ }
105
+
106
+ rbs_loc *rbs_check_location(VALUE obj) {
107
+ return (rbs_loc *) rb_check_typeddata(obj, &location_type);
108
+ }
109
+
110
+ static VALUE location_initialize(VALUE self, VALUE buffer, VALUE start_pos, VALUE end_pos) {
111
+ rbs_loc *loc = rbs_check_location(self);
112
+
113
+ int start = FIX2INT(start_pos);
114
+ int end = FIX2INT(end_pos);
115
+
116
+ *loc = (rbs_loc) {
117
+ .buffer = buffer,
118
+ .rg = (rbs_loc_range) { start, end },
119
+ .children = NULL,
120
+ };
121
+
122
+ return Qnil;
123
+ }
124
+
125
+ static VALUE location_initialize_copy(VALUE self, VALUE other) {
126
+ rbs_loc *self_loc = rbs_check_location(self);
127
+ rbs_loc *other_loc = rbs_check_location(other);
128
+
129
+ *self_loc = (rbs_loc) {
130
+ .buffer = other_loc->buffer,
131
+ .rg = other_loc->rg,
132
+ .children = NULL,
133
+ };
134
+
135
+ if (other_loc->children != NULL) {
136
+ rbs_loc_legacy_alloc_children(self_loc, other_loc->children->cap);
137
+ memcpy(self_loc->children, other_loc->children, RBS_LOC_CHILDREN_SIZE(other_loc->children->cap));
138
+ }
139
+
140
+ return Qnil;
141
+ }
142
+
143
+ static VALUE location_buffer(VALUE self) {
144
+ rbs_loc *loc = rbs_check_location(self);
145
+ return loc->buffer;
146
+ }
147
+
148
+ static VALUE location_start_pos(VALUE self) {
149
+ rbs_loc *loc = rbs_check_location(self);
150
+ return INT2FIX(loc->rg.start);
151
+ }
152
+
153
+ static VALUE location_end_pos(VALUE self) {
154
+ rbs_loc *loc = rbs_check_location(self);
155
+ return INT2FIX(loc->rg.end);
156
+ }
157
+
158
+ static VALUE location_add_required_child(VALUE self, VALUE name, VALUE start, VALUE end) {
159
+ rbs_loc *loc = rbs_check_location(self);
160
+
161
+ rbs_loc_range rg = {
162
+ .start = FIX2INT(start),
163
+ .end = FIX2INT(end),
164
+ };
165
+
166
+ rbs_loc_legacy_add_required_child(loc, rb_sym2id(name), rg);
167
+
168
+ return Qnil;
169
+ }
170
+
171
+ static VALUE location_add_optional_child(VALUE self, VALUE name, VALUE start, VALUE end) {
172
+ rbs_loc *loc = rbs_check_location(self);
173
+
174
+ rbs_loc_range rg = {
175
+ .start = FIX2INT(start),
176
+ .end = FIX2INT(end),
177
+ };
178
+
179
+ rbs_loc_legacy_add_optional_child(loc, rb_sym2id(name), rg);
180
+
181
+ return Qnil;
182
+ }
183
+
184
+ static VALUE location_add_optional_no_child(VALUE self, VALUE name) {
185
+ rbs_loc *loc = rbs_check_location(self);
186
+
187
+ rbs_loc_legacy_add_optional_child(loc, rb_sym2id(name), RBS_LOC_NULL_RANGE);
188
+
189
+ return Qnil;
190
+ }
191
+
192
+ VALUE rbs_new_location(VALUE buffer, rbs_range_t rg) {
193
+ rbs_loc *loc;
194
+ VALUE obj = TypedData_Make_Struct(RBS_Location, rbs_loc, &location_type, loc);
195
+
196
+ rbs_loc_init(loc, buffer, (rbs_loc_range) { rg.start.char_pos, rg.end.char_pos });
197
+
198
+ return obj;
199
+ }
200
+
201
+ VALUE rbs_new_location2(VALUE buffer, int start_char, int end_char) {
202
+ rbs_loc *loc;
203
+ VALUE obj = TypedData_Make_Struct(RBS_Location, rbs_loc, &location_type, loc);
204
+
205
+ rbs_loc_init(loc, buffer, (rbs_loc_range) { .start = start_char, .end = end_char });
206
+
207
+ return obj;
208
+ }
209
+
210
+ static VALUE rbs_new_location_from_loc_range(VALUE buffer, rbs_loc_range rg) {
211
+ rbs_loc *loc;
212
+ VALUE obj = TypedData_Make_Struct(RBS_Location, rbs_loc, &location_type, loc);
213
+
214
+ rbs_loc_init(loc, buffer, rg);
215
+
216
+ return obj;
217
+ }
218
+
219
+ static VALUE location_aref(VALUE self, VALUE name) {
220
+ rbs_loc *loc = rbs_check_location(self);
221
+
222
+ ID id = rb_sym2id(name);
223
+
224
+ if (loc->children != NULL) {
225
+ for (unsigned short i = 0; i < loc->children->len; i++) {
226
+ if (loc->children->entries[i].name == id) {
227
+ rbs_loc_range result = loc->children->entries[i].rg;
228
+
229
+ if (RBS_LOC_OPTIONAL_P(loc, i) && NULL_LOC_RANGE_P(result)) {
230
+ return Qnil;
231
+ } else {
232
+ return rbs_new_location_from_loc_range(loc->buffer, result);
233
+ }
234
+ }
235
+ }
236
+ }
237
+
238
+ VALUE string = rb_funcall(name, rb_intern("to_s"), 0);
239
+ rb_raise(rb_eRuntimeError, "Unknown child name given: %s", RSTRING_PTR(string));
240
+ }
241
+
242
+ static VALUE location_optional_keys(VALUE self) {
243
+ VALUE keys = rb_ary_new();
244
+
245
+ rbs_loc *loc = rbs_check_location(self);
246
+ rbs_loc_children *children = loc->children;
247
+ if (children == NULL) {
248
+ return keys;
249
+ }
250
+
251
+ for (unsigned short i = 0; i < children->len; i++) {
252
+ if (RBS_LOC_OPTIONAL_P(loc, i)) {
253
+ VALUE key_sym = rb_id2sym(children->entries[i].name);
254
+ rb_ary_push(keys, key_sym);
255
+ }
256
+ }
257
+
258
+ return keys;
259
+ }
260
+
261
+ static VALUE location_required_keys(VALUE self) {
262
+ VALUE keys = rb_ary_new();
263
+
264
+ rbs_loc *loc = rbs_check_location(self);
265
+ rbs_loc_children *children = loc->children;
266
+ if (children == NULL) {
267
+ return keys;
268
+ }
269
+
270
+ for (unsigned short i = 0; i < children->len; i++) {
271
+ if (RBS_LOC_REQUIRED_P(loc, i)) {
272
+ VALUE key_sym = rb_id2sym(children->entries[i].name);
273
+ rb_ary_push(keys, key_sym);
274
+ }
275
+ }
276
+
277
+ return keys;
278
+ }
279
+
280
+ void rbs__init_location(void) {
281
+ RBS_Location = rb_define_class_under(RBS, "Location", rb_cObject);
282
+ rb_define_alloc_func(RBS_Location, location_s_allocate);
283
+ rb_define_private_method(RBS_Location, "initialize", location_initialize, 3);
284
+ rb_define_private_method(RBS_Location, "initialize_copy", location_initialize_copy, 1);
285
+ rb_define_method(RBS_Location, "buffer", location_buffer, 0);
286
+ rb_define_method(RBS_Location, "_start_pos", location_start_pos, 0);
287
+ rb_define_method(RBS_Location, "_end_pos", location_end_pos, 0);
288
+ rb_define_method(RBS_Location, "_add_required_child", location_add_required_child, 3);
289
+ rb_define_method(RBS_Location, "_add_optional_child", location_add_optional_child, 3);
290
+ rb_define_method(RBS_Location, "_add_optional_no_child", location_add_optional_no_child, 1);
291
+ rb_define_method(RBS_Location, "_optional_keys", location_optional_keys, 0);
292
+ rb_define_method(RBS_Location, "_required_keys", location_required_keys, 0);
293
+ rb_define_method(RBS_Location, "[]", location_aref, 1);
294
+ }