rbs 3.9.5 → 4.0.0

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 (330) hide show
  1. checksums.yaml +4 -4
  2. data/.clang-format +74 -0
  3. data/.clangd +2 -0
  4. data/.github/dependabot.yml +14 -14
  5. data/.github/workflows/bundle-update.yml +60 -0
  6. data/.github/workflows/c-check.yml +58 -0
  7. data/.github/workflows/comments.yml +5 -3
  8. data/.github/workflows/dependabot.yml +2 -2
  9. data/.github/workflows/ruby.yml +40 -32
  10. data/.github/workflows/rust.yml +95 -0
  11. data/.github/workflows/typecheck.yml +2 -2
  12. data/.github/workflows/windows.yml +3 -3
  13. data/.gitignore +4 -0
  14. data/.rubocop.yml +2 -2
  15. data/.vscode/extensions.json +5 -0
  16. data/.vscode/settings.json +19 -0
  17. data/CHANGELOG.md +284 -0
  18. data/README.md +38 -1
  19. data/Rakefile +144 -29
  20. data/Steepfile +2 -0
  21. data/config.yml +634 -62
  22. data/core/array.rbs +307 -227
  23. data/core/basic_object.rbs +9 -8
  24. data/core/binding.rbs +0 -2
  25. data/core/builtin.rbs +2 -2
  26. data/core/class.rbs +6 -5
  27. data/core/comparable.rbs +55 -34
  28. data/core/complex.rbs +104 -78
  29. data/core/dir.rbs +61 -49
  30. data/core/encoding.rbs +12 -15
  31. data/core/enumerable.rbs +188 -87
  32. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  33. data/core/enumerator.rbs +65 -2
  34. data/core/errno.rbs +11 -2
  35. data/core/errors.rbs +58 -29
  36. data/core/exception.rbs +13 -13
  37. data/core/fiber.rbs +74 -54
  38. data/core/file.rbs +280 -177
  39. data/core/file_test.rbs +3 -3
  40. data/core/float.rbs +257 -92
  41. data/core/gc.rbs +425 -281
  42. data/core/hash.rbs +1045 -739
  43. data/core/integer.rbs +135 -137
  44. data/core/io/buffer.rbs +53 -42
  45. data/core/io/wait.rbs +13 -35
  46. data/core/io.rbs +196 -148
  47. data/core/kernel.rbs +216 -155
  48. data/core/marshal.rbs +4 -4
  49. data/core/match_data.rbs +15 -13
  50. data/core/math.rbs +107 -66
  51. data/core/method.rbs +69 -33
  52. data/core/module.rbs +244 -106
  53. data/core/nil_class.rbs +7 -6
  54. data/core/numeric.rbs +74 -63
  55. data/core/object.rbs +9 -11
  56. data/core/object_space.rbs +30 -23
  57. data/core/pathname.rbs +1322 -0
  58. data/core/proc.rbs +95 -58
  59. data/core/process.rbs +222 -202
  60. data/core/ractor.rbs +371 -515
  61. data/core/random.rbs +21 -3
  62. data/core/range.rbs +159 -57
  63. data/core/rational.rbs +60 -89
  64. data/core/rbs/unnamed/argf.rbs +60 -53
  65. data/core/rbs/unnamed/env_class.rbs +19 -14
  66. data/core/rbs/unnamed/main_class.rbs +123 -0
  67. data/core/rbs/unnamed/random.rbs +11 -118
  68. data/core/regexp.rbs +258 -214
  69. data/core/ruby.rbs +53 -0
  70. data/core/ruby_vm.rbs +38 -34
  71. data/core/rubygems/config_file.rbs +5 -5
  72. data/core/rubygems/errors.rbs +4 -71
  73. data/core/rubygems/requirement.rbs +5 -5
  74. data/core/rubygems/rubygems.rbs +16 -82
  75. data/core/rubygems/version.rbs +2 -3
  76. data/core/set.rbs +490 -360
  77. data/core/signal.rbs +26 -16
  78. data/core/string.rbs +3303 -1365
  79. data/core/struct.rbs +27 -26
  80. data/core/symbol.rbs +41 -34
  81. data/core/thread.rbs +135 -74
  82. data/core/time.rbs +81 -50
  83. data/core/trace_point.rbs +41 -35
  84. data/core/true_class.rbs +2 -2
  85. data/core/unbound_method.rbs +24 -16
  86. data/core/warning.rbs +7 -7
  87. data/docs/aliases.md +79 -0
  88. data/docs/collection.md +3 -3
  89. data/docs/config.md +171 -0
  90. data/docs/encoding.md +56 -0
  91. data/docs/gem.md +0 -1
  92. data/docs/inline.md +576 -0
  93. data/docs/sigs.md +3 -3
  94. data/docs/syntax.md +46 -16
  95. data/docs/type_fingerprint.md +21 -0
  96. data/exe/rbs +1 -1
  97. data/ext/rbs_extension/ast_translation.c +1513 -0
  98. data/ext/rbs_extension/ast_translation.h +37 -0
  99. data/ext/rbs_extension/class_constants.c +185 -0
  100. data/{include/rbs/constants.h → ext/rbs_extension/class_constants.h} +22 -1
  101. data/ext/rbs_extension/compat.h +10 -0
  102. data/ext/rbs_extension/extconf.rb +25 -1
  103. data/ext/rbs_extension/legacy_location.c +294 -0
  104. data/ext/rbs_extension/legacy_location.h +82 -0
  105. data/ext/rbs_extension/main.c +468 -24
  106. data/ext/rbs_extension/rbs_extension.h +6 -21
  107. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  108. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  109. data/include/rbs/ast.h +1022 -0
  110. data/include/rbs/defines.h +86 -0
  111. data/include/rbs/lexer.h +206 -0
  112. data/include/rbs/location.h +40 -0
  113. data/include/rbs/parser.h +153 -0
  114. data/include/rbs/string.h +47 -0
  115. data/include/rbs/util/rbs_allocator.h +59 -0
  116. data/include/rbs/util/rbs_assert.h +20 -0
  117. data/include/rbs/util/rbs_buffer.h +83 -0
  118. data/include/rbs/util/rbs_constant_pool.h +6 -70
  119. data/include/rbs/util/rbs_encoding.h +282 -0
  120. data/include/rbs/util/rbs_unescape.h +24 -0
  121. data/include/rbs.h +9 -2
  122. data/lib/rbs/annotate/formatter.rb +3 -13
  123. data/lib/rbs/annotate/rdoc_annotator.rb +3 -1
  124. data/lib/rbs/annotate/rdoc_source.rb +1 -1
  125. data/lib/rbs/ast/annotation.rb +1 -1
  126. data/lib/rbs/ast/comment.rb +1 -1
  127. data/lib/rbs/ast/declarations.rb +10 -10
  128. data/lib/rbs/ast/members.rb +14 -14
  129. data/lib/rbs/ast/ruby/annotations.rb +409 -0
  130. data/lib/rbs/ast/ruby/comment_block.rb +245 -0
  131. data/lib/rbs/ast/ruby/declarations.rb +281 -0
  132. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  133. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  134. data/lib/rbs/ast/ruby/members.rb +723 -0
  135. data/lib/rbs/ast/type_param.rb +24 -4
  136. data/lib/rbs/buffer.rb +105 -20
  137. data/lib/rbs/cli/diff.rb +16 -15
  138. data/lib/rbs/cli/validate.rb +63 -126
  139. data/lib/rbs/cli.rb +56 -24
  140. data/lib/rbs/collection/config/lockfile_generator.rb +14 -2
  141. data/lib/rbs/collection/sources/git.rb +1 -0
  142. data/lib/rbs/collection.rb +0 -1
  143. data/lib/rbs/definition.rb +6 -1
  144. data/lib/rbs/definition_builder/ancestor_builder.rb +121 -65
  145. data/lib/rbs/definition_builder/method_builder.rb +65 -30
  146. data/lib/rbs/definition_builder.rb +177 -20
  147. data/lib/rbs/diff.rb +7 -1
  148. data/lib/rbs/environment/class_entry.rb +69 -0
  149. data/lib/rbs/environment/module_entry.rb +66 -0
  150. data/lib/rbs/environment.rb +402 -214
  151. data/lib/rbs/environment_loader.rb +2 -8
  152. data/lib/rbs/errors.rb +31 -21
  153. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  154. data/lib/rbs/inline_parser.rb +542 -0
  155. data/lib/rbs/location_aux.rb +36 -4
  156. data/lib/rbs/locator.rb +5 -1
  157. data/lib/rbs/method_type.rb +5 -3
  158. data/lib/rbs/namespace.rb +0 -7
  159. data/lib/rbs/parser_aux.rb +35 -7
  160. data/lib/rbs/prototype/helpers.rb +57 -0
  161. data/lib/rbs/prototype/rb.rb +3 -28
  162. data/lib/rbs/prototype/rbi.rb +3 -20
  163. data/lib/rbs/prototype/runtime.rb +10 -2
  164. data/lib/rbs/resolver/constant_resolver.rb +2 -2
  165. data/lib/rbs/resolver/type_name_resolver.rb +116 -38
  166. data/lib/rbs/source.rb +99 -0
  167. data/lib/rbs/subtractor.rb +7 -4
  168. data/lib/rbs/test/type_check.rb +19 -2
  169. data/lib/rbs/type_name.rb +1 -8
  170. data/lib/rbs/types.rb +91 -79
  171. data/lib/rbs/unit_test/convertibles.rb +1 -0
  172. data/lib/rbs/unit_test/type_assertions.rb +35 -8
  173. data/lib/rbs/validator.rb +2 -2
  174. data/lib/rbs/version.rb +1 -1
  175. data/lib/rbs.rb +13 -2
  176. data/lib/rdoc/discover.rb +1 -1
  177. data/lib/rdoc_plugin/parser.rb +3 -3
  178. data/rbs.gemspec +4 -2
  179. data/rust/.gitignore +1 -0
  180. data/rust/Cargo.lock +378 -0
  181. data/rust/Cargo.toml +7 -0
  182. data/rust/ruby-rbs/Cargo.toml +22 -0
  183. data/rust/ruby-rbs/build.rs +764 -0
  184. data/rust/ruby-rbs/examples/locations.rs +60 -0
  185. data/rust/ruby-rbs/src/lib.rs +1 -0
  186. data/rust/ruby-rbs/src/node/mod.rs +742 -0
  187. data/rust/ruby-rbs/tests/sanity.rs +47 -0
  188. data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
  189. data/rust/ruby-rbs-sys/Cargo.toml +23 -0
  190. data/rust/ruby-rbs-sys/build.rs +204 -0
  191. data/rust/ruby-rbs-sys/src/lib.rs +50 -0
  192. data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
  193. data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
  194. data/rust/ruby-rbs-sys/wrapper.h +1 -0
  195. data/schema/typeParam.json +17 -1
  196. data/sig/ancestor_builder.rbs +1 -1
  197. data/sig/annotate/formatter.rbs +2 -2
  198. data/sig/annotate/rdoc_annotater.rbs +1 -1
  199. data/sig/ast/ruby/annotations.rbs +421 -0
  200. data/sig/ast/ruby/comment_block.rbs +127 -0
  201. data/sig/ast/ruby/declarations.rbs +158 -0
  202. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  203. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  204. data/sig/ast/ruby/members.rbs +178 -0
  205. data/sig/buffer.rbs +63 -5
  206. data/sig/cli/diff.rbs +5 -11
  207. data/sig/cli/validate.rbs +12 -8
  208. data/sig/cli.rbs +18 -18
  209. data/sig/definition.rbs +6 -0
  210. data/sig/definition_builder.rbs +3 -1
  211. data/sig/environment/class_entry.rbs +50 -0
  212. data/sig/environment/module_entry.rbs +50 -0
  213. data/sig/environment.rbs +94 -87
  214. data/sig/errors.rbs +26 -20
  215. data/sig/inline_parser/comment_association.rbs +71 -0
  216. data/sig/inline_parser.rbs +124 -0
  217. data/sig/location.rbs +32 -7
  218. data/sig/locator.rbs +0 -2
  219. data/sig/manifest.yaml +0 -1
  220. data/sig/method_builder.rbs +9 -4
  221. data/sig/namespace.rbs +0 -5
  222. data/sig/parser.rbs +67 -13
  223. data/sig/prototype/helpers.rbs +2 -0
  224. data/sig/resolver/type_name_resolver.rbs +35 -7
  225. data/sig/source.rbs +48 -0
  226. data/sig/type_param.rbs +13 -8
  227. data/sig/typename.rbs +0 -5
  228. data/sig/types.rbs +10 -8
  229. data/sig/unit_test/spy.rbs +0 -8
  230. data/sig/unit_test/type_assertions.rbs +11 -0
  231. data/src/ast.c +1604 -0
  232. data/src/lexer.c +3194 -0
  233. data/src/lexer.re +154 -0
  234. data/src/lexstate.c +212 -0
  235. data/src/location.c +31 -0
  236. data/src/parser.c +4205 -0
  237. data/src/string.c +41 -0
  238. data/src/util/rbs_allocator.c +165 -0
  239. data/src/util/rbs_assert.c +19 -0
  240. data/src/util/rbs_buffer.c +54 -0
  241. data/src/util/rbs_constant_pool.c +18 -92
  242. data/src/util/rbs_encoding.c +21308 -0
  243. data/src/util/rbs_unescape.c +167 -0
  244. data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
  245. data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
  246. data/stdlib/cgi/0/core.rbs +9 -393
  247. data/stdlib/cgi/0/manifest.yaml +1 -0
  248. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  249. data/stdlib/coverage/0/coverage.rbs +7 -4
  250. data/stdlib/date/0/date.rbs +92 -79
  251. data/stdlib/date/0/date_time.rbs +25 -24
  252. data/stdlib/delegate/0/delegator.rbs +10 -7
  253. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  254. data/stdlib/digest/0/digest.rbs +110 -0
  255. data/stdlib/erb/0/erb.rbs +748 -347
  256. data/stdlib/etc/0/etc.rbs +55 -50
  257. data/stdlib/fileutils/0/fileutils.rbs +158 -139
  258. data/stdlib/forwardable/0/forwardable.rbs +13 -10
  259. data/stdlib/io-console/0/io-console.rbs +2 -2
  260. data/stdlib/json/0/json.rbs +226 -179
  261. data/stdlib/monitor/0/monitor.rbs +3 -3
  262. data/stdlib/net-http/0/net-http.rbs +162 -134
  263. data/stdlib/objspace/0/objspace.rbs +17 -34
  264. data/stdlib/open-uri/0/open-uri.rbs +48 -8
  265. data/stdlib/open3/0/open3.rbs +469 -10
  266. data/stdlib/openssl/0/openssl.rbs +475 -357
  267. data/stdlib/optparse/0/optparse.rbs +26 -17
  268. data/stdlib/pathname/0/pathname.rbs +11 -1381
  269. data/stdlib/pp/0/pp.rbs +9 -8
  270. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  271. data/stdlib/pstore/0/pstore.rbs +35 -30
  272. data/stdlib/psych/0/psych.rbs +65 -12
  273. data/stdlib/psych/0/store.rbs +2 -4
  274. data/stdlib/pty/0/pty.rbs +9 -6
  275. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  276. data/stdlib/rdoc/0/code_object.rbs +4 -3
  277. data/stdlib/rdoc/0/comment.rbs +2 -0
  278. data/stdlib/rdoc/0/options.rbs +76 -0
  279. data/stdlib/rdoc/0/parser.rbs +1 -1
  280. data/stdlib/rdoc/0/rdoc.rbs +7 -5
  281. data/stdlib/rdoc/0/store.rbs +2 -2
  282. data/stdlib/resolv/0/resolv.rbs +25 -68
  283. data/stdlib/ripper/0/ripper.rbs +25 -19
  284. data/stdlib/securerandom/0/manifest.yaml +2 -0
  285. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  286. data/stdlib/shellwords/0/shellwords.rbs +2 -2
  287. data/stdlib/singleton/0/singleton.rbs +3 -0
  288. data/stdlib/socket/0/addrinfo.rbs +9 -9
  289. data/stdlib/socket/0/basic_socket.rbs +3 -3
  290. data/stdlib/socket/0/ip_socket.rbs +10 -8
  291. data/stdlib/socket/0/socket.rbs +23 -10
  292. data/stdlib/socket/0/tcp_server.rbs +1 -1
  293. data/stdlib/socket/0/tcp_socket.rbs +11 -3
  294. data/stdlib/socket/0/udp_socket.rbs +1 -1
  295. data/stdlib/socket/0/unix_server.rbs +1 -1
  296. data/stdlib/stringio/0/stringio.rbs +1177 -85
  297. data/stdlib/strscan/0/string_scanner.rbs +27 -25
  298. data/stdlib/tempfile/0/tempfile.rbs +25 -21
  299. data/stdlib/time/0/time.rbs +8 -6
  300. data/stdlib/timeout/0/timeout.rbs +63 -7
  301. data/stdlib/tsort/0/cyclic.rbs +3 -0
  302. data/stdlib/tsort/0/tsort.rbs +7 -6
  303. data/stdlib/uri/0/common.rbs +42 -20
  304. data/stdlib/uri/0/file.rbs +3 -3
  305. data/stdlib/uri/0/generic.rbs +26 -18
  306. data/stdlib/uri/0/http.rbs +2 -2
  307. data/stdlib/uri/0/ldap.rbs +2 -2
  308. data/stdlib/uri/0/mailto.rbs +3 -3
  309. data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
  310. data/stdlib/zlib/0/deflate.rbs +4 -3
  311. data/stdlib/zlib/0/gzip_reader.rbs +6 -6
  312. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  313. data/stdlib/zlib/0/inflate.rbs +1 -1
  314. data/stdlib/zlib/0/need_dict.rbs +1 -1
  315. data/stdlib/zlib/0/zstream.rbs +1 -0
  316. metadata +121 -18
  317. data/ext/rbs_extension/lexer.c +0 -2728
  318. data/ext/rbs_extension/lexer.h +0 -179
  319. data/ext/rbs_extension/lexer.re +0 -147
  320. data/ext/rbs_extension/lexstate.c +0 -175
  321. data/ext/rbs_extension/location.c +0 -325
  322. data/ext/rbs_extension/location.h +0 -85
  323. data/ext/rbs_extension/parser.c +0 -2982
  324. data/ext/rbs_extension/parser.h +0 -18
  325. data/ext/rbs_extension/parserstate.c +0 -411
  326. data/ext/rbs_extension/parserstate.h +0 -163
  327. data/ext/rbs_extension/unescape.c +0 -32
  328. data/include/rbs/ruby_objs.h +0 -72
  329. data/src/constants.c +0 -153
  330. data/src/ruby_objs.c +0 -799
data/config.yml CHANGED
@@ -1,317 +1,889 @@
1
+ # See `docs/config.md` for quick documentation of this file format.
2
+
1
3
  nodes:
2
4
  - name: RBS::AST::Annotation
5
+ rust_name: AnnotationNode
3
6
  fields:
4
7
  - name: string
5
- - name: location
8
+ c_type: rbs_string
9
+ - name: RBS::AST::Bool
10
+ rust_name: BoolNode
11
+ expose_to_ruby: false
12
+ expose_location: false
13
+ fields:
14
+ - name: value
15
+ c_type: bool
6
16
  - name: RBS::AST::Comment
17
+ rust_name: CommentNode
7
18
  fields:
8
19
  - name: string
9
- - name: location
20
+ c_type: rbs_string
10
21
  - name: RBS::AST::Declarations::Class
22
+ rust_name: ClassNode
11
23
  fields:
12
24
  - name: name
25
+ c_type: rbs_type_name
13
26
  - name: type_params
27
+ c_type: rbs_node_list
14
28
  - name: super_class
29
+ c_type: rbs_ast_declarations_class_super
30
+ optional: true # NULL when no superclass (e.g., `class Foo end` vs `class Foo < Bar end`)
15
31
  - name: members
32
+ c_type: rbs_node_list
16
33
  - name: annotations
17
- - name: location
34
+ c_type: rbs_node_list
18
35
  - name: comment
36
+ c_type: rbs_ast_comment
37
+ optional: true # NULL when no comment precedes the declaration
38
+ locations:
39
+ - required: keyword
40
+ - required: name
41
+ - required: end
42
+ - optional: type_params
43
+ - optional: lt
19
44
  - name: RBS::AST::Declarations::Class::Super
45
+ rust_name: ClassSuperNode
20
46
  fields:
21
47
  - name: name
48
+ c_type: rbs_type_name
22
49
  - name: args
23
- - name: location
50
+ c_type: rbs_node_list
51
+ locations:
52
+ - required: name
53
+ - optional: args
24
54
  - name: RBS::AST::Declarations::ClassAlias
55
+ rust_name: ClassAliasNode
25
56
  fields:
26
57
  - name: new_name
58
+ c_type: rbs_type_name
27
59
  - name: old_name
28
- - name: location
60
+ c_type: rbs_type_name
29
61
  - name: comment
62
+ c_type: rbs_ast_comment
63
+ optional: true # NULL when no comment precedes the declaration
30
64
  - name: annotations
65
+ c_type: rbs_node_list
66
+ locations:
67
+ - required: keyword
68
+ - required: new_name
69
+ - required: eq
70
+ - required: old_name
31
71
  - name: RBS::AST::Declarations::Constant
72
+ rust_name: ConstantNode
32
73
  fields:
33
74
  - name: name
75
+ c_type: rbs_type_name
34
76
  - name: type
35
- - name: location
77
+ c_type: rbs_node
36
78
  - name: comment
79
+ c_type: rbs_ast_comment
80
+ optional: true # NULL when no comment precedes the declaration
37
81
  - name: annotations
82
+ c_type: rbs_node_list
83
+ locations:
84
+ - required: name
85
+ - required: colon
38
86
  - name: RBS::AST::Declarations::Global
87
+ rust_name: GlobalNode
39
88
  fields:
40
89
  - name: name
90
+ c_type: rbs_ast_symbol
41
91
  - name: type
42
- - name: location
92
+ c_type: rbs_node
43
93
  - name: comment
94
+ c_type: rbs_ast_comment
95
+ optional: true # NULL when no comment precedes the declaration
44
96
  - name: annotations
97
+ c_type: rbs_node_list
98
+ locations:
99
+ - required: name
100
+ - required: colon
45
101
  - name: RBS::AST::Declarations::Interface
102
+ rust_name: InterfaceNode
46
103
  fields:
47
104
  - name: name
105
+ c_type: rbs_type_name
48
106
  - name: type_params
107
+ c_type: rbs_node_list
49
108
  - name: members
109
+ c_type: rbs_node_list
50
110
  - name: annotations
51
- - name: location
111
+ c_type: rbs_node_list
52
112
  - name: comment
113
+ c_type: rbs_ast_comment
114
+ optional: true # NULL when no comment precedes the declaration
115
+ locations:
116
+ - required: keyword
117
+ - required: name
118
+ - required: end
119
+ - optional: type_params
53
120
  - name: RBS::AST::Declarations::Module
121
+ rust_name: ModuleNode
54
122
  fields:
55
123
  - name: name
124
+ c_type: rbs_type_name
56
125
  - name: type_params
126
+ c_type: rbs_node_list
57
127
  - name: self_types
128
+ c_type: rbs_node_list
58
129
  - name: members
130
+ c_type: rbs_node_list
59
131
  - name: annotations
60
- - name: location
132
+ c_type: rbs_node_list
61
133
  - name: comment
134
+ c_type: rbs_ast_comment
135
+ optional: true # NULL when no comment precedes the declaration
136
+ locations:
137
+ - required: keyword
138
+ - required: name
139
+ - required: end
140
+ - optional: type_params
141
+ - optional: colon
142
+ - optional: self_types
62
143
  - name: RBS::AST::Declarations::Module::Self
144
+ rust_name: ModuleSelfNode
63
145
  fields:
64
146
  - name: name
147
+ c_type: rbs_type_name
65
148
  - name: args
66
- - name: location
149
+ c_type: rbs_node_list
150
+ locations:
151
+ - required: name
152
+ - optional: args
67
153
  - name: RBS::AST::Declarations::ModuleAlias
154
+ rust_name: ModuleAliasNode
68
155
  fields:
69
156
  - name: new_name
157
+ c_type: rbs_type_name
70
158
  - name: old_name
71
- - name: location
159
+ c_type: rbs_type_name
72
160
  - name: comment
161
+ c_type: rbs_ast_comment
162
+ optional: true # NULL when no comment precedes the declaration
73
163
  - name: annotations
164
+ c_type: rbs_node_list
165
+ locations:
166
+ - required: keyword
167
+ - required: new_name
168
+ - required: eq
169
+ - required: old_name
74
170
  - name: RBS::AST::Declarations::TypeAlias
171
+ rust_name: TypeAliasNode
75
172
  fields:
76
173
  - name: name
174
+ c_type: rbs_type_name
77
175
  - name: type_params
176
+ c_type: rbs_node_list
78
177
  - name: type
178
+ c_type: rbs_node
79
179
  - name: annotations
80
- - name: location
180
+ c_type: rbs_node_list
81
181
  - name: comment
182
+ c_type: rbs_ast_comment
183
+ optional: true # NULL when no comment precedes the declaration
184
+ locations:
185
+ - required: keyword
186
+ - required: name
187
+ - required: eq
188
+ - optional: type_params
82
189
  - name: RBS::AST::Directives::Use
190
+ rust_name: UseNode
83
191
  fields:
84
192
  - name: clauses
85
- - name: location
193
+ c_type: rbs_node_list
194
+ locations:
195
+ - required: keyword
86
196
  - name: RBS::AST::Directives::Use::SingleClause
197
+ rust_name: UseSingleClauseNode
87
198
  fields:
88
199
  - name: type_name
200
+ c_type: rbs_type_name
89
201
  - name: new_name
90
- - name: location
202
+ c_type: rbs_ast_symbol
203
+ optional: true # NULL when no alias (e.g., `use Foo::Bar` vs `use Foo::Bar as Baz`)
204
+ locations:
205
+ - required: type_name
206
+ - optional: keyword
207
+ - optional: new_name
91
208
  - name: RBS::AST::Directives::Use::WildcardClause
209
+ rust_name: UseWildcardClauseNode
92
210
  fields:
93
211
  - name: namespace
94
- - name: location
212
+ c_type: rbs_namespace
213
+ c_name: rbs_namespace
214
+ locations:
215
+ - required: namespace
216
+ - required: star
95
217
  - name: RBS::AST::Members::Alias
218
+ rust_name: AliasNode
96
219
  fields:
97
220
  - name: new_name
221
+ c_type: rbs_ast_symbol
98
222
  - name: old_name
223
+ c_type: rbs_ast_symbol
99
224
  - name: kind
225
+ c_type: alias_kind
100
226
  - name: annotations
101
- - name: location
227
+ c_type: rbs_node_list
102
228
  - name: comment
229
+ c_type: rbs_ast_comment
230
+ optional: true # NULL when no comment precedes the declaration
231
+ locations:
232
+ - required: keyword
233
+ - required: new_name
234
+ - required: old_name
235
+ - optional: new_kind
236
+ - optional: old_kind
103
237
  - name: RBS::AST::Members::AttrAccessor
238
+ rust_name: AttrAccessorNode
104
239
  fields:
105
240
  - name: name
241
+ c_type: rbs_ast_symbol
106
242
  - name: type
243
+ c_type: rbs_node
107
244
  - name: ivar_name
245
+ c_type: rbs_attr_ivar_name
108
246
  - name: kind
247
+ c_type: attribute_kind
109
248
  - name: annotations
110
- - name: location
249
+ c_type: rbs_node_list
111
250
  - name: comment
251
+ c_type: rbs_ast_comment
252
+ optional: true # NULL when no comment precedes the declaration
112
253
  - name: visibility
254
+ c_type: attribute_visibility
255
+ locations:
256
+ - required: keyword
257
+ - required: name
258
+ - required: colon
259
+ - optional: kind
260
+ - optional: ivar
261
+ - optional: ivar_name
262
+ - optional: visibility
113
263
  - name: RBS::AST::Members::AttrReader
264
+ rust_name: AttrReaderNode
114
265
  fields:
115
266
  - name: name
267
+ c_type: rbs_ast_symbol
116
268
  - name: type
269
+ c_type: rbs_node
117
270
  - name: ivar_name
271
+ c_type: rbs_attr_ivar_name
118
272
  - name: kind
273
+ c_type: attribute_kind
119
274
  - name: annotations
120
- - name: location
275
+ c_type: rbs_node_list
121
276
  - name: comment
277
+ c_type: rbs_ast_comment
278
+ optional: true # NULL when no comment precedes the declaration
122
279
  - name: visibility
280
+ c_type: attribute_visibility
281
+ locations:
282
+ - required: keyword
283
+ - required: name
284
+ - required: colon
285
+ - optional: kind
286
+ - optional: ivar
287
+ - optional: ivar_name
288
+ - optional: visibility
123
289
  - name: RBS::AST::Members::AttrWriter
290
+ rust_name: AttrWriterNode
124
291
  fields:
125
292
  - name: name
293
+ c_type: rbs_ast_symbol
126
294
  - name: type
295
+ c_type: rbs_node
127
296
  - name: ivar_name
297
+ c_type: rbs_attr_ivar_name
128
298
  - name: kind
299
+ c_type: attribute_kind
129
300
  - name: annotations
130
- - name: location
301
+ c_type: rbs_node_list
131
302
  - name: comment
303
+ c_type: rbs_ast_comment
304
+ optional: true # NULL when no comment precedes the declaration
132
305
  - name: visibility
306
+ c_type: attribute_visibility
307
+ locations:
308
+ - required: keyword
309
+ - required: name
310
+ - required: colon
311
+ - optional: kind
312
+ - optional: ivar
313
+ - optional: ivar_name
314
+ - optional: visibility
133
315
  - name: RBS::AST::Members::ClassInstanceVariable
316
+ rust_name: ClassInstanceVariableNode
134
317
  fields:
135
318
  - name: name
319
+ c_type: rbs_ast_symbol
136
320
  - name: type
137
- - name: location
321
+ c_type: rbs_node
138
322
  - name: comment
323
+ c_type: rbs_ast_comment
324
+ optional: true # NULL when no comment precedes the declaration
325
+ locations:
326
+ - required: name
327
+ - required: colon
328
+ - optional: kind
139
329
  - name: RBS::AST::Members::ClassVariable
330
+ rust_name: ClassVariableNode
140
331
  fields:
141
332
  - name: name
333
+ c_type: rbs_ast_symbol
142
334
  - name: type
143
- - name: location
335
+ c_type: rbs_node
144
336
  - name: comment
337
+ c_type: rbs_ast_comment
338
+ optional: true # NULL when no comment precedes the declaration
339
+ locations:
340
+ - required: name
341
+ - required: colon
342
+ - optional: kind
145
343
  - name: RBS::AST::Members::Extend
344
+ rust_name: ExtendNode
146
345
  fields:
147
346
  - name: name
347
+ c_type: rbs_type_name
148
348
  - name: args
349
+ c_type: rbs_node_list
149
350
  - name: annotations
150
- - name: location
351
+ c_type: rbs_node_list
151
352
  - name: comment
353
+ c_type: rbs_ast_comment
354
+ optional: true # NULL when no comment precedes the declaration
355
+ locations:
356
+ - required: name
357
+ - required: keyword
358
+ - optional: args
152
359
  - name: RBS::AST::Members::Include
360
+ rust_name: IncludeNode
153
361
  fields:
154
362
  - name: name
363
+ c_type: rbs_type_name
155
364
  - name: args
365
+ c_type: rbs_node_list
156
366
  - name: annotations
157
- - name: location
367
+ c_type: rbs_node_list
158
368
  - name: comment
369
+ c_type: rbs_ast_comment
370
+ optional: true # NULL when no comment precedes the declaration
371
+ locations:
372
+ - required: name
373
+ - required: keyword
374
+ - optional: args
159
375
  - name: RBS::AST::Members::InstanceVariable
376
+ rust_name: InstanceVariableNode
160
377
  fields:
161
378
  - name: name
379
+ c_type: rbs_ast_symbol
162
380
  - name: type
163
- - name: location
381
+ c_type: rbs_node
164
382
  - name: comment
383
+ c_type: rbs_ast_comment
384
+ optional: true # NULL when no comment precedes the declaration
385
+ locations:
386
+ - required: name
387
+ - required: colon
388
+ - optional: kind
165
389
  - name: RBS::AST::Members::MethodDefinition
390
+ rust_name: MethodDefinitionNode
166
391
  fields:
167
392
  - name: name
393
+ c_type: rbs_ast_symbol
168
394
  - name: kind
395
+ c_type: method_definition_kind
169
396
  - name: overloads
397
+ c_type: rbs_node_list
170
398
  - name: annotations
171
- - name: location
399
+ c_type: rbs_node_list
172
400
  - name: comment
401
+ c_type: rbs_ast_comment
402
+ optional: true # NULL when no comment precedes the declaration
173
403
  - name: overloading
404
+ c_type: bool
174
405
  - name: visibility
406
+ c_type: method_definition_visibility
407
+ locations:
408
+ - required: keyword
409
+ - required: name
410
+ - optional: kind
411
+ - optional: overloading
412
+ - optional: visibility
175
413
  - name: RBS::AST::Members::MethodDefinition::Overload
414
+ rust_name: MethodDefinitionOverloadNode
415
+ expose_location: false
176
416
  fields:
177
417
  - name: annotations
418
+ c_type: rbs_node_list
178
419
  - name: method_type
420
+ c_type: rbs_node
179
421
  - name: RBS::AST::Members::Prepend
422
+ rust_name: PrependNode
180
423
  fields:
181
424
  - name: name
425
+ c_type: rbs_type_name
182
426
  - name: args
427
+ c_type: rbs_node_list
183
428
  - name: annotations
184
- - name: location
429
+ c_type: rbs_node_list
185
430
  - name: comment
431
+ c_type: rbs_ast_comment
432
+ optional: true # NULL when no comment precedes the declaration
433
+ locations:
434
+ - required: name
435
+ - required: keyword
436
+ - optional: args
186
437
  - name: RBS::AST::Members::Private
187
- fields:
188
- - name: location
438
+ rust_name: PrivateNode
189
439
  - name: RBS::AST::Members::Public
190
- fields:
191
- - name: location
440
+ rust_name: PublicNode
192
441
  - name: RBS::AST::TypeParam
442
+ rust_name: TypeParamNode
193
443
  fields:
194
444
  - name: name
445
+ c_type: rbs_ast_symbol
195
446
  - name: variance
447
+ c_type: type_param_variance
196
448
  - name: upper_bound
449
+ c_type: rbs_node
450
+ optional: true # NULL when no upper bound (e.g., `[T]` vs `[T < Bound]`)
451
+ - name: lower_bound
452
+ c_type: rbs_node
453
+ optional: true # NULL when no lower bound (e.g., `[T]` vs `[T > Bound]`)
197
454
  - name: default_type
455
+ c_type: rbs_node
456
+ optional: true # NULL when no default (e.g., `[T]` vs `[T = Default]`)
198
457
  - name: unchecked
199
- - name: location
458
+ c_type: bool
459
+ locations:
460
+ - required: name
461
+ - optional: variance
462
+ - optional: unchecked
463
+ - optional: upper_bound
464
+ - optional: lower_bound
465
+ - optional: default
466
+ - name: RBS::AST::Integer
467
+ rust_name: IntegerNode
468
+ expose_to_ruby: false
469
+ expose_location: false
470
+ fields:
471
+ - name: string_representation
472
+ c_type: rbs_string
473
+ - name: RBS::AST::String
474
+ rust_name: StringNode
475
+ expose_to_ruby: false
476
+ expose_location: false
477
+ fields:
478
+ - name: string
479
+ c_type: rbs_string
200
480
  - name: RBS::MethodType
481
+ rust_name: MethodTypeNode
201
482
  fields:
202
483
  - name: type_params
484
+ c_type: rbs_node_list
203
485
  - name: type
486
+ c_type: rbs_node
204
487
  - name: block
205
- - name: location
488
+ c_type: rbs_types_block
489
+ optional: true # NULL when no block (e.g., `() -> void` vs `() { () -> void } -> void`)
490
+ locations:
491
+ - required: type
492
+ - optional: type_params
206
493
  - name: RBS::Namespace
494
+ rust_name: NamespaceNode
495
+ expose_location: false
207
496
  fields:
208
497
  - name: path
498
+ c_type: rbs_node_list
209
499
  - name: absolute
500
+ c_type: bool
501
+ - name: RBS::Signature
502
+ rust_name: SignatureNode
503
+ expose_to_ruby: false
504
+ expose_location: false
505
+ fields:
506
+ - name: directives
507
+ c_type: rbs_node_list
508
+ - name: declarations
509
+ c_type: rbs_node_list
210
510
  - name: RBS::TypeName
511
+ rust_name: TypeNameNode
512
+ expose_location: false
211
513
  fields:
212
514
  - name: namespace
515
+ c_type: rbs_namespace
516
+ c_name: rbs_namespace
213
517
  - name: name
518
+ c_type: rbs_ast_symbol
214
519
  - name: RBS::Types::Alias
520
+ rust_name: AliasTypeNode
215
521
  fields:
216
522
  - name: name
523
+ c_type: rbs_type_name
217
524
  - name: args
218
- - name: location
525
+ c_type: rbs_node_list
526
+ locations:
527
+ - required: name
528
+ - optional: args
219
529
  - name: RBS::Types::Bases::Any
530
+ rust_name: AnyTypeNode
220
531
  fields:
221
532
  - name: todo
222
- - name: location
533
+ c_type: bool
223
534
  - name: RBS::Types::Bases::Bool
224
- fields:
225
- - name: location
535
+ rust_name: BoolTypeNode
226
536
  - name: RBS::Types::Bases::Bottom
227
- fields:
228
- - name: location
537
+ rust_name: BottomTypeNode
229
538
  - name: RBS::Types::Bases::Class
230
- fields:
231
- - name: location
539
+ rust_name: ClassTypeNode
232
540
  - name: RBS::Types::Bases::Instance
233
- fields:
234
- - name: location
541
+ rust_name: InstanceTypeNode
235
542
  - name: RBS::Types::Bases::Nil
236
- fields:
237
- - name: location
543
+ rust_name: NilTypeNode
238
544
  - name: RBS::Types::Bases::Self
239
- fields:
240
- - name: location
545
+ rust_name: SelfTypeNode
241
546
  - name: RBS::Types::Bases::Top
242
- fields:
243
- - name: location
547
+ rust_name: TopTypeNode
244
548
  - name: RBS::Types::Bases::Void
245
- fields:
246
- - name: location
549
+ rust_name: VoidTypeNode
247
550
  - name: RBS::Types::Block
551
+ rust_name: BlockTypeNode
552
+ expose_location: true
248
553
  fields:
249
554
  - name: type
555
+ c_type: rbs_node
250
556
  - name: required
557
+ c_type: bool
251
558
  - name: self_type
559
+ c_type: rbs_node
560
+ optional: true # NULL when no self binding (e.g., `{ () -> void }` vs `{ () [self: T] -> void }`)
252
561
  - name: RBS::Types::ClassInstance
562
+ rust_name: ClassInstanceTypeNode
253
563
  fields:
254
564
  - name: name
565
+ c_type: rbs_type_name
255
566
  - name: args
256
- - name: location
567
+ c_type: rbs_node_list
568
+ locations:
569
+ - required: name
570
+ - optional: args
257
571
  - name: RBS::Types::ClassSingleton
572
+ rust_name: ClassSingletonTypeNode
258
573
  fields:
259
574
  - name: name
260
- - name: location
575
+ c_type: rbs_type_name
576
+ - name: args
577
+ c_type: rbs_node_list
578
+ locations:
579
+ - required: name
580
+ - optional: args
261
581
  - name: RBS::Types::Function
582
+ rust_name: FunctionTypeNode
583
+ expose_location: false
262
584
  fields:
263
585
  - name: required_positionals
586
+ c_type: rbs_node_list
264
587
  - name: optional_positionals
588
+ c_type: rbs_node_list
265
589
  - name: rest_positionals
590
+ c_type: rbs_node
591
+ optional: true # NULL when no splat (e.g., `(String) -> void` vs `(*String) -> void`)
266
592
  - name: trailing_positionals
593
+ c_type: rbs_node_list
267
594
  - name: required_keywords
595
+ c_type: rbs_hash
268
596
  - name: optional_keywords
597
+ c_type: rbs_hash
269
598
  - name: rest_keywords
599
+ c_type: rbs_node
600
+ optional: true # NULL when no double-splat (e.g., `() -> void` vs `(**String) -> void`)
270
601
  - name: return_type
602
+ c_type: rbs_node
271
603
  - name: RBS::Types::Function::Param
604
+ rust_name: FunctionParamNode
272
605
  fields:
273
606
  - name: type
607
+ c_type: rbs_node
274
608
  - name: name
275
- - name: location
609
+ c_type: rbs_ast_symbol
610
+ optional: true # NULL when param is unnamed (e.g., `(String) -> void` vs `(String name) -> void`)
611
+ locations:
612
+ - optional: name
276
613
  - name: RBS::Types::Interface
614
+ rust_name: InterfaceTypeNode
277
615
  fields:
278
616
  - name: name
617
+ c_type: rbs_type_name
279
618
  - name: args
280
- - name: location
619
+ c_type: rbs_node_list
620
+ locations:
621
+ - required: name
622
+ - optional: args
281
623
  - name: RBS::Types::Intersection
624
+ rust_name: IntersectionTypeNode
282
625
  fields:
283
626
  - name: types
284
- - name: location
627
+ c_type: rbs_node_list
285
628
  - name: RBS::Types::Literal
629
+ rust_name: LiteralTypeNode
286
630
  fields:
287
631
  - name: literal
288
- - name: location
632
+ c_type: rbs_node
289
633
  - name: RBS::Types::Optional
634
+ rust_name: OptionalTypeNode
290
635
  fields:
291
636
  - name: type
292
- - name: location
637
+ c_type: rbs_node
293
638
  - name: RBS::Types::Proc
639
+ rust_name: ProcTypeNode
294
640
  fields:
295
641
  - name: type
642
+ c_type: rbs_node
296
643
  - name: block
297
- - name: location
644
+ c_type: rbs_types_block
645
+ optional: true # NULL when proc has no block (e.g., `^() -> void` vs `^() { () -> void } -> void`)
298
646
  - name: self_type
647
+ c_type: rbs_node
648
+ optional: true # NULL when no self binding (e.g., `^() -> void` vs `^() [self: T] -> void`)
299
649
  - name: RBS::Types::Record
650
+ rust_name: RecordTypeNode
300
651
  fields:
301
652
  - name: all_fields
302
- - name: location
653
+ c_type: rbs_hash
654
+ - name: RBS::Types::Record::FieldType
655
+ rust_name: RecordFieldTypeNode
656
+ expose_to_ruby: false
657
+ expose_location: false
658
+ fields:
659
+ - name: type
660
+ c_type: rbs_node
661
+ - name: required
662
+ c_type: bool
303
663
  - name: RBS::Types::Tuple
664
+ rust_name: TupleTypeNode
304
665
  fields:
305
666
  - name: types
306
- - name: location
667
+ c_type: rbs_node_list
307
668
  - name: RBS::Types::Union
669
+ rust_name: UnionTypeNode
308
670
  fields:
309
671
  - name: types
310
- - name: location
672
+ c_type: rbs_node_list
311
673
  - name: RBS::Types::UntypedFunction
674
+ rust_name: UntypedFunctionTypeNode
675
+ expose_location: false
312
676
  fields:
313
677
  - name: return_type
678
+ c_type: rbs_node
314
679
  - name: RBS::Types::Variable
680
+ rust_name: VariableTypeNode
315
681
  fields:
316
682
  - name: name
317
- - name: location
683
+ c_type: rbs_ast_symbol
684
+ - name: RBS::AST::Ruby::Annotations::NodeTypeAssertion
685
+ rust_name: NodeTypeAssertionNode
686
+ fields:
687
+ - name: prefix_location
688
+ c_type: rbs_location_range
689
+ - name: type
690
+ c_type: rbs_node
691
+ - name: RBS::AST::Ruby::Annotations::ColonMethodTypeAnnotation
692
+ rust_name: ColonMethodTypeAnnotationNode
693
+ fields:
694
+ - name: prefix_location
695
+ c_type: rbs_location_range
696
+ - name: annotations
697
+ c_type: rbs_node_list
698
+ - name: method_type
699
+ c_type: rbs_node
700
+ - name: RBS::AST::Ruby::Annotations::MethodTypesAnnotation
701
+ rust_name: MethodTypesAnnotationNode
702
+ fields:
703
+ - name: prefix_location
704
+ c_type: rbs_location_range
705
+ - name: overloads
706
+ c_type: rbs_node_list
707
+ - name: vertical_bar_locations
708
+ c_type: rbs_location_range_list
709
+ - name: dot3_location
710
+ c_type: rbs_location_range
711
+ optional: true
712
+ - name: RBS::AST::Ruby::Annotations::SkipAnnotation
713
+ rust_name: SkipAnnotationNode
714
+ fields:
715
+ - name: prefix_location
716
+ c_type: rbs_location_range
717
+ - name: skip_location
718
+ c_type: rbs_location_range
719
+ - name: comment_location
720
+ c_type: rbs_location_range
721
+ optional: true
722
+ - name: RBS::AST::Ruby::Annotations::ReturnTypeAnnotation
723
+ rust_name: ReturnTypeAnnotationNode
724
+ fields:
725
+ - name: prefix_location
726
+ c_type: rbs_location_range
727
+ - name: return_location
728
+ c_type: rbs_location_range
729
+ - name: colon_location
730
+ c_type: rbs_location_range
731
+ - name: return_type
732
+ c_type: rbs_node
733
+ - name: comment_location
734
+ c_type: rbs_location_range
735
+ optional: true
736
+ - name: RBS::AST::Ruby::Annotations::TypeApplicationAnnotation
737
+ rust_name: TypeApplicationAnnotationNode
738
+ fields:
739
+ - name: prefix_location
740
+ c_type: rbs_location_range
741
+ - name: type_args
742
+ c_type: rbs_node_list
743
+ - name: close_bracket_location
744
+ c_type: rbs_location_range
745
+ - name: comma_locations
746
+ c_type: rbs_location_range_list
747
+ - name: RBS::AST::Ruby::Annotations::InstanceVariableAnnotation
748
+ rust_name: InstanceVariableAnnotationNode
749
+ fields:
750
+ - name: prefix_location
751
+ c_type: rbs_location_range
752
+ - name: ivar_name
753
+ c_type: rbs_ast_symbol
754
+ - name: ivar_name_location
755
+ c_type: rbs_location_range
756
+ - name: colon_location
757
+ c_type: rbs_location_range
758
+ - name: type
759
+ c_type: rbs_node
760
+ - name: comment_location
761
+ c_type: rbs_location_range
762
+ optional: true
763
+ - name: RBS::AST::Ruby::Annotations::ClassAliasAnnotation
764
+ rust_name: ClassAliasAnnotationNode
765
+ fields:
766
+ - name: prefix_location
767
+ c_type: rbs_location_range
768
+ - name: keyword_location
769
+ c_type: rbs_location_range
770
+ - name: type_name
771
+ c_type: rbs_type_name
772
+ - name: type_name_location
773
+ c_type: rbs_location_range
774
+ optional: true
775
+ - name: RBS::AST::Ruby::Annotations::ModuleAliasAnnotation
776
+ rust_name: ModuleAliasAnnotationNode
777
+ fields:
778
+ - name: prefix_location
779
+ c_type: rbs_location_range
780
+ - name: keyword_location
781
+ c_type: rbs_location_range
782
+ - name: type_name
783
+ c_type: rbs_type_name
784
+ - name: type_name_location
785
+ c_type: rbs_location_range
786
+ optional: true
787
+ - name: RBS::AST::Ruby::Annotations::ParamTypeAnnotation
788
+ rust_name: ParamTypeAnnotationNode
789
+ fields:
790
+ - name: prefix_location
791
+ c_type: rbs_location_range
792
+ - name: name_location
793
+ c_type: rbs_location_range
794
+ - name: colon_location
795
+ c_type: rbs_location_range
796
+ - name: param_type
797
+ c_type: rbs_node
798
+ - name: comment_location
799
+ c_type: rbs_location_range
800
+ optional: true
801
+ - name: RBS::AST::Ruby::Annotations::SplatParamTypeAnnotation
802
+ rust_name: SplatParamTypeAnnotationNode
803
+ fields:
804
+ - name: prefix_location
805
+ c_type: rbs_location_range
806
+ - name: star_location
807
+ c_type: rbs_location_range
808
+ - name: name_location
809
+ c_type: rbs_location_range
810
+ optional: true
811
+ - name: colon_location
812
+ c_type: rbs_location_range
813
+ - name: param_type
814
+ c_type: rbs_node
815
+ - name: comment_location
816
+ c_type: rbs_location_range
817
+ optional: true
818
+ - name: RBS::AST::Ruby::Annotations::DoubleSplatParamTypeAnnotation
819
+ rust_name: DoubleSplatParamTypeAnnotationNode
820
+ fields:
821
+ - name: prefix_location
822
+ c_type: rbs_location_range
823
+ - name: star2_location
824
+ c_type: rbs_location_range
825
+ - name: name_location
826
+ c_type: rbs_location_range
827
+ optional: true
828
+ - name: colon_location
829
+ c_type: rbs_location_range
830
+ - name: param_type
831
+ c_type: rbs_node
832
+ - name: comment_location
833
+ c_type: rbs_location_range
834
+ optional: true
835
+ - name: RBS::AST::Ruby::Annotations::BlockParamTypeAnnotation
836
+ rust_name: BlockParamTypeAnnotationNode
837
+ fields:
838
+ - name: prefix_location
839
+ c_type: rbs_location_range
840
+ - name: ampersand_location
841
+ c_type: rbs_location_range
842
+ - name: name_location
843
+ c_type: rbs_location_range
844
+ optional: true
845
+ - name: colon_location
846
+ c_type: rbs_location_range
847
+ - name: question_location
848
+ c_type: rbs_location_range
849
+ optional: true
850
+ - name: type_location
851
+ c_type: rbs_location_range
852
+ - name: type
853
+ c_name: type_
854
+ c_type: rbs_node
855
+ - name: comment_location
856
+ c_type: rbs_location_range
857
+ optional: true
858
+
859
+ enums:
860
+ attribute_visibility:
861
+ optional: true
862
+ symbols:
863
+ - unspecified
864
+ - public
865
+ - private
866
+ attribute_kind:
867
+ symbols:
868
+ - instance
869
+ - singleton
870
+ alias_kind:
871
+ symbols:
872
+ - instance
873
+ - singleton
874
+ method_definition_kind:
875
+ symbols:
876
+ - instance
877
+ - singleton
878
+ - singleton_instance
879
+ method_definition_visibility:
880
+ optional: true
881
+ symbols:
882
+ - unspecified
883
+ - public
884
+ - private
885
+ type_param_variance:
886
+ symbols:
887
+ - invariant
888
+ - covariant
889
+ - contravariant