rbs 3.10.4 → 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 (267) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +14 -14
  3. data/.github/workflows/bundle-update.yml +60 -0
  4. data/.github/workflows/c-check.yml +7 -5
  5. data/.github/workflows/comments.yml +2 -2
  6. data/.github/workflows/dependabot.yml +2 -2
  7. data/.github/workflows/ruby.yml +16 -26
  8. data/.github/workflows/rust.yml +95 -0
  9. data/.github/workflows/typecheck.yml +1 -1
  10. data/.github/workflows/windows.yml +2 -2
  11. data/.rubocop.yml +2 -2
  12. data/.vscode/extensions.json +5 -0
  13. data/.vscode/settings.json +19 -0
  14. data/CHANGELOG.md +202 -2
  15. data/Rakefile +9 -23
  16. data/Steepfile +2 -0
  17. data/config.yml +457 -13
  18. data/core/array.rbs +218 -188
  19. data/core/basic_object.rbs +9 -8
  20. data/core/binding.rbs +0 -2
  21. data/core/builtin.rbs +2 -2
  22. data/core/class.rbs +6 -5
  23. data/core/comparable.rbs +45 -31
  24. data/core/complex.rbs +66 -55
  25. data/core/dir.rbs +57 -45
  26. data/core/encoding.rbs +6 -6
  27. data/core/enumerable.rbs +105 -91
  28. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  29. data/core/enumerator.rbs +24 -3
  30. data/core/errno.rbs +3 -2
  31. data/core/errors.rbs +31 -29
  32. data/core/exception.rbs +12 -12
  33. data/core/fiber.rbs +47 -36
  34. data/core/file.rbs +242 -169
  35. data/core/file_test.rbs +2 -2
  36. data/core/float.rbs +42 -68
  37. data/core/gc.rbs +78 -70
  38. data/core/hash.rbs +70 -60
  39. data/core/integer.rbs +32 -75
  40. data/core/io/buffer.rbs +36 -36
  41. data/core/io/wait.rbs +7 -7
  42. data/core/io.rbs +192 -146
  43. data/core/kernel.rbs +198 -147
  44. data/core/marshal.rbs +3 -3
  45. data/core/match_data.rbs +14 -12
  46. data/core/math.rbs +69 -67
  47. data/core/method.rbs +6 -8
  48. data/core/module.rbs +148 -88
  49. data/core/nil_class.rbs +4 -3
  50. data/core/numeric.rbs +53 -50
  51. data/core/object.rbs +6 -8
  52. data/core/object_space.rbs +11 -10
  53. data/core/pathname.rbs +131 -81
  54. data/core/proc.rbs +65 -34
  55. data/core/process.rbs +221 -201
  56. data/core/ractor.rbs +15 -11
  57. data/core/random.rbs +21 -3
  58. data/core/range.rbs +152 -49
  59. data/core/rational.rbs +5 -56
  60. data/core/rbs/unnamed/argf.rbs +58 -51
  61. data/core/rbs/unnamed/env_class.rbs +18 -13
  62. data/core/rbs/unnamed/main_class.rbs +123 -0
  63. data/core/rbs/unnamed/random.rbs +7 -116
  64. data/core/regexp.rbs +236 -197
  65. data/core/ruby.rbs +1 -1
  66. data/core/ruby_vm.rbs +32 -30
  67. data/core/rubygems/config_file.rbs +5 -5
  68. data/core/rubygems/errors.rbs +1 -1
  69. data/core/rubygems/requirement.rbs +5 -5
  70. data/core/rubygems/rubygems.rbs +5 -3
  71. data/core/set.rbs +17 -16
  72. data/core/signal.rbs +2 -2
  73. data/core/string.rbs +318 -298
  74. data/core/struct.rbs +26 -25
  75. data/core/symbol.rbs +25 -24
  76. data/core/thread.rbs +40 -41
  77. data/core/time.rbs +47 -42
  78. data/core/trace_point.rbs +34 -31
  79. data/core/true_class.rbs +2 -2
  80. data/core/unbound_method.rbs +10 -10
  81. data/core/warning.rbs +7 -7
  82. data/docs/collection.md +1 -1
  83. data/docs/config.md +171 -0
  84. data/docs/inline.md +576 -0
  85. data/docs/syntax.md +46 -16
  86. data/docs/type_fingerprint.md +21 -0
  87. data/exe/rbs +1 -1
  88. data/ext/rbs_extension/ast_translation.c +595 -98
  89. data/ext/rbs_extension/class_constants.c +30 -0
  90. data/ext/rbs_extension/class_constants.h +15 -0
  91. data/ext/rbs_extension/legacy_location.c +30 -53
  92. data/ext/rbs_extension/legacy_location.h +37 -0
  93. data/ext/rbs_extension/main.c +125 -24
  94. data/include/rbs/ast.h +485 -150
  95. data/include/rbs/lexer.h +11 -4
  96. data/include/rbs/location.h +25 -44
  97. data/include/rbs/parser.h +20 -2
  98. data/include/rbs/util/rbs_constant_pool.h +0 -3
  99. data/include/rbs.h +8 -0
  100. data/lib/rbs/ast/annotation.rb +1 -1
  101. data/lib/rbs/ast/comment.rb +1 -1
  102. data/lib/rbs/ast/declarations.rb +10 -10
  103. data/lib/rbs/ast/members.rb +14 -14
  104. data/lib/rbs/ast/ruby/annotations.rb +409 -0
  105. data/lib/rbs/ast/ruby/comment_block.rb +245 -0
  106. data/lib/rbs/ast/ruby/declarations.rb +281 -0
  107. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  108. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  109. data/lib/rbs/ast/ruby/members.rb +723 -0
  110. data/lib/rbs/ast/type_param.rb +24 -4
  111. data/lib/rbs/buffer.rb +105 -20
  112. data/lib/rbs/cli/diff.rb +16 -15
  113. data/lib/rbs/cli/validate.rb +62 -125
  114. data/lib/rbs/cli.rb +55 -23
  115. data/lib/rbs/collection/config/lockfile_generator.rb +8 -4
  116. data/lib/rbs/collection/sources/git.rb +1 -0
  117. data/lib/rbs/collection.rb +0 -1
  118. data/lib/rbs/definition.rb +6 -1
  119. data/lib/rbs/definition_builder/ancestor_builder.rb +119 -63
  120. data/lib/rbs/definition_builder/method_builder.rb +65 -30
  121. data/lib/rbs/definition_builder.rb +177 -20
  122. data/lib/rbs/diff.rb +7 -1
  123. data/lib/rbs/environment/class_entry.rb +69 -0
  124. data/lib/rbs/environment/module_entry.rb +66 -0
  125. data/lib/rbs/environment.rb +338 -155
  126. data/lib/rbs/environment_loader.rb +2 -2
  127. data/lib/rbs/errors.rb +30 -20
  128. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  129. data/lib/rbs/inline_parser.rb +542 -0
  130. data/lib/rbs/location_aux.rb +36 -4
  131. data/lib/rbs/locator.rb +5 -1
  132. data/lib/rbs/method_type.rb +5 -3
  133. data/lib/rbs/namespace.rb +0 -7
  134. data/lib/rbs/parser_aux.rb +31 -8
  135. data/lib/rbs/prototype/helpers.rb +57 -0
  136. data/lib/rbs/prototype/rb.rb +3 -28
  137. data/lib/rbs/prototype/rbi.rb +3 -20
  138. data/lib/rbs/prototype/runtime.rb +10 -2
  139. data/lib/rbs/resolver/type_name_resolver.rb +0 -8
  140. data/lib/rbs/source.rb +99 -0
  141. data/lib/rbs/subtractor.rb +4 -3
  142. data/lib/rbs/test/type_check.rb +5 -2
  143. data/lib/rbs/type_name.rb +1 -8
  144. data/lib/rbs/types.rb +88 -78
  145. data/lib/rbs/unit_test/convertibles.rb +1 -0
  146. data/lib/rbs/unit_test/type_assertions.rb +35 -8
  147. data/lib/rbs/validator.rb +2 -2
  148. data/lib/rbs/version.rb +1 -1
  149. data/lib/rbs.rb +12 -1
  150. data/rbs.gemspec +3 -2
  151. data/rust/.gitignore +1 -0
  152. data/rust/Cargo.lock +378 -0
  153. data/rust/Cargo.toml +7 -0
  154. data/rust/ruby-rbs/Cargo.toml +22 -0
  155. data/rust/ruby-rbs/build.rs +764 -0
  156. data/rust/ruby-rbs/examples/locations.rs +60 -0
  157. data/rust/ruby-rbs/src/lib.rs +1 -0
  158. data/rust/ruby-rbs/src/node/mod.rs +742 -0
  159. data/rust/ruby-rbs/tests/sanity.rs +47 -0
  160. data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
  161. data/rust/ruby-rbs-sys/Cargo.toml +23 -0
  162. data/rust/ruby-rbs-sys/build.rs +204 -0
  163. data/rust/ruby-rbs-sys/src/lib.rs +50 -0
  164. data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
  165. data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
  166. data/rust/ruby-rbs-sys/wrapper.h +1 -0
  167. data/schema/typeParam.json +17 -1
  168. data/sig/ancestor_builder.rbs +1 -1
  169. data/sig/ast/ruby/annotations.rbs +421 -0
  170. data/sig/ast/ruby/comment_block.rbs +127 -0
  171. data/sig/ast/ruby/declarations.rbs +158 -0
  172. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  173. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  174. data/sig/ast/ruby/members.rbs +178 -0
  175. data/sig/buffer.rbs +63 -5
  176. data/sig/cli/diff.rbs +5 -11
  177. data/sig/cli/validate.rbs +12 -8
  178. data/sig/cli.rbs +18 -18
  179. data/sig/definition.rbs +6 -0
  180. data/sig/definition_builder.rbs +3 -1
  181. data/sig/environment/class_entry.rbs +50 -0
  182. data/sig/environment/module_entry.rbs +50 -0
  183. data/sig/environment.rbs +37 -81
  184. data/sig/errors.rbs +26 -20
  185. data/sig/inline_parser/comment_association.rbs +71 -0
  186. data/sig/inline_parser.rbs +124 -0
  187. data/sig/location.rbs +32 -7
  188. data/sig/locator.rbs +0 -2
  189. data/sig/method_builder.rbs +9 -4
  190. data/sig/namespace.rbs +0 -5
  191. data/sig/parser.rbs +47 -13
  192. data/sig/prototype/helpers.rbs +2 -0
  193. data/sig/resolver/type_name_resolver.rbs +0 -3
  194. data/sig/source.rbs +48 -0
  195. data/sig/type_param.rbs +13 -8
  196. data/sig/typename.rbs +0 -5
  197. data/sig/types.rbs +6 -7
  198. data/sig/unit_test/spy.rbs +0 -8
  199. data/sig/unit_test/type_assertions.rbs +11 -0
  200. data/src/ast.c +491 -143
  201. data/src/lexer.c +1552 -1314
  202. data/src/lexer.re +7 -0
  203. data/src/lexstate.c +8 -1
  204. data/src/location.c +8 -48
  205. data/src/parser.c +1107 -409
  206. data/src/util/rbs_constant_pool.c +0 -4
  207. data/stdlib/bigdecimal/0/big_decimal.rbs +16 -16
  208. data/stdlib/cgi-escape/0/escape.rbs +4 -4
  209. data/stdlib/coverage/0/coverage.rbs +4 -3
  210. data/stdlib/date/0/date.rbs +33 -28
  211. data/stdlib/date/0/date_time.rbs +24 -23
  212. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  213. data/stdlib/digest/0/digest.rbs +110 -0
  214. data/stdlib/erb/0/erb.rbs +64 -53
  215. data/stdlib/etc/0/etc.rbs +55 -50
  216. data/stdlib/fileutils/0/fileutils.rbs +140 -126
  217. data/stdlib/forwardable/0/forwardable.rbs +10 -10
  218. data/stdlib/io-console/0/io-console.rbs +2 -2
  219. data/stdlib/json/0/json.rbs +158 -131
  220. data/stdlib/monitor/0/monitor.rbs +3 -3
  221. data/stdlib/net-http/0/net-http.rbs +159 -134
  222. data/stdlib/objspace/0/objspace.rbs +8 -30
  223. data/stdlib/open-uri/0/open-uri.rbs +8 -8
  224. data/stdlib/open3/0/open3.rbs +469 -10
  225. data/stdlib/openssl/0/openssl.rbs +144 -129
  226. data/stdlib/optparse/0/optparse.rbs +23 -14
  227. data/stdlib/pathname/0/pathname.rbs +2 -2
  228. data/stdlib/pp/0/pp.rbs +9 -8
  229. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  230. data/stdlib/pstore/0/pstore.rbs +35 -30
  231. data/stdlib/psych/0/psych.rbs +62 -9
  232. data/stdlib/psych/0/store.rbs +2 -4
  233. data/stdlib/pty/0/pty.rbs +9 -6
  234. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  235. data/stdlib/rdoc/0/code_object.rbs +2 -1
  236. data/stdlib/rdoc/0/parser.rbs +1 -1
  237. data/stdlib/rdoc/0/store.rbs +1 -1
  238. data/stdlib/ripper/0/ripper.rbs +20 -17
  239. data/stdlib/securerandom/0/manifest.yaml +2 -0
  240. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  241. data/stdlib/shellwords/0/shellwords.rbs +2 -2
  242. data/stdlib/socket/0/addrinfo.rbs +9 -9
  243. data/stdlib/socket/0/basic_socket.rbs +3 -3
  244. data/stdlib/socket/0/ip_socket.rbs +10 -8
  245. data/stdlib/socket/0/socket.rbs +10 -9
  246. data/stdlib/socket/0/tcp_server.rbs +1 -1
  247. data/stdlib/socket/0/tcp_socket.rbs +1 -1
  248. data/stdlib/socket/0/udp_socket.rbs +1 -1
  249. data/stdlib/socket/0/unix_server.rbs +1 -1
  250. data/stdlib/stringio/0/stringio.rbs +55 -54
  251. data/stdlib/strscan/0/string_scanner.rbs +46 -44
  252. data/stdlib/tempfile/0/tempfile.rbs +24 -20
  253. data/stdlib/time/0/time.rbs +7 -5
  254. data/stdlib/tsort/0/tsort.rbs +7 -6
  255. data/stdlib/uri/0/common.rbs +31 -18
  256. data/stdlib/uri/0/file.rbs +2 -2
  257. data/stdlib/uri/0/generic.rbs +9 -2
  258. data/stdlib/uri/0/http.rbs +2 -2
  259. data/stdlib/uri/0/ldap.rbs +2 -2
  260. data/stdlib/uri/0/mailto.rbs +3 -3
  261. data/stdlib/uri/0/rfc2396_parser.rbs +6 -5
  262. data/stdlib/zlib/0/deflate.rbs +4 -3
  263. data/stdlib/zlib/0/gzip_reader.rbs +6 -6
  264. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  265. data/stdlib/zlib/0/inflate.rbs +1 -1
  266. data/stdlib/zlib/0/need_dict.rbs +1 -1
  267. metadata +66 -3
data/include/rbs/lexer.h CHANGED
@@ -30,6 +30,7 @@ enum RBSTokenType {
30
30
  pBANG, /* ! */
31
31
  pQUESTION, /* ? */
32
32
  pLT, /* < */
33
+ pGT, /* > */
33
34
  pEQ, /* = */
34
35
 
35
36
  kALIAS, /* alias */
@@ -39,6 +40,7 @@ enum RBSTokenType {
39
40
  kBOOL, /* bool */
40
41
  kBOT, /* bot */
41
42
  kCLASS, /* class */
43
+ kCLASSALIAS, /* class-alias */
42
44
  kDEF, /* def */
43
45
  kEND, /* end */
44
46
  kEXTEND, /* extend */
@@ -48,6 +50,7 @@ enum RBSTokenType {
48
50
  kINSTANCE, /* instance */
49
51
  kINTERFACE, /* interface */
50
52
  kMODULE, /* module */
53
+ kMODULEALIAS, /* module-alias */
51
54
  kNIL, /* nil */
52
55
  kOUT, /* out */
53
56
  kPREPEND, /* prepend */
@@ -64,6 +67,9 @@ enum RBSTokenType {
64
67
  kUSE, /* use */
65
68
  kAS, /* as */
66
69
  k__TODO__, /* __todo__ */
70
+ kATRBS, /* @rbs */
71
+ kSKIP, /* skip */
72
+ kRETURN, /* return */
67
73
 
68
74
  tLIDENT, /* Identifiers starting with lower case */
69
75
  tUIDENT, /* Identifiers starting with upper case */
@@ -78,8 +84,9 @@ enum RBSTokenType {
78
84
  pAREF_OPR, /* [] */
79
85
  tOPERATOR, /* Operator identifier */
80
86
 
81
- tCOMMENT, /* Comment */
82
- tLINECOMMENT, /* Comment of all line */
87
+ tCOMMENT, /* Comment */
88
+ tLINECOMMENT, /* Comment of all line */
89
+ tINLINECOMMENT, /* Comment in inline decl starting with -- */
83
90
 
84
91
  tTRIVIA, /* Trivia tokens -- space and new line */
85
92
 
@@ -129,8 +136,8 @@ typedef struct {
129
136
  * */
130
137
  typedef struct {
131
138
  rbs_string_t string;
132
- int start_pos; /* The character position that defines the start of the input */
133
- int end_pos; /* The character position that defines the end of the input */
139
+ int start_pos; /* The byte position that defines the start of the input */
140
+ int end_pos; /* The byte position that defines the end of the input */
134
141
  rbs_position_t current; /* The current position: just before the current_character */
135
142
  rbs_position_t start; /* The start position of the current token */
136
143
 
@@ -1,59 +1,40 @@
1
1
  #ifndef RBS__RBS_LOCATION_H
2
2
  #define RBS__RBS_LOCATION_H
3
3
 
4
- #include "lexer.h"
5
-
6
- #include "rbs/util/rbs_constant_pool.h"
7
4
  #include "rbs/util/rbs_allocator.h"
8
5
 
9
- typedef struct {
10
- int start;
11
- int end;
12
- } rbs_loc_range;
6
+ #define RBS_LOCATION_NULL_RANGE ((rbs_location_range) { -1, -1, -1, -1 })
7
+ #define RBS_LOCATION_NULL_RANGE_P(rg) ((rg).start_char == -1)
8
+
9
+ /**
10
+ * Converts a lexer range (rbs_range_t) to an AST location range (rbs_location_range) by extracting character and byte positions.
11
+ */
12
+ #define RBS_RANGE_LEX2AST(rg) ((rbs_location_range) { .start_char = (rg).start.char_pos, .start_byte = (rg).start.byte_pos, .end_char = (rg).end.char_pos, .end_byte = (rg).end.byte_pos })
13
13
 
14
14
  typedef struct {
15
- rbs_constant_id_t name;
16
- rbs_loc_range rg;
17
- } rbs_loc_entry;
15
+ int start_char;
16
+ int start_byte;
18
17
 
19
- typedef unsigned int rbs_loc_entry_bitmap;
18
+ int end_char;
19
+ int end_byte;
20
+ } rbs_location_range;
20
21
 
21
- // The flexible array always allocates, but it's okay.
22
- // This struct is not allocated when the `rbs_loc` doesn't have children.
23
- typedef struct {
24
- unsigned short len;
25
- unsigned short cap;
26
- rbs_loc_entry_bitmap required_p;
27
- rbs_loc_entry entries[1];
28
- } rbs_loc_children;
29
-
30
- typedef struct rbs_location {
31
- rbs_range_t rg;
32
- rbs_loc_children *children;
33
- } rbs_location_t;
34
-
35
- typedef struct rbs_location_list_node {
36
- rbs_location_t *loc;
37
- struct rbs_location_list_node *next;
38
- } rbs_location_list_node_t;
39
-
40
- typedef struct rbs_location_list {
22
+ typedef struct rbs_location_range_list_node {
23
+ rbs_location_range range;
24
+ struct rbs_location_range_list_node *next;
25
+ } rbs_location_range_list_node_t;
26
+
27
+ typedef struct rbs_location_range_list {
41
28
  rbs_allocator_t *allocator;
42
- rbs_location_list_node_t *head;
43
- rbs_location_list_node_t *tail;
29
+ struct rbs_location_range_list_node *head;
30
+ struct rbs_location_range_list_node *tail;
44
31
  size_t length;
45
- } rbs_location_list_t;
46
-
47
- void rbs_loc_alloc_children(rbs_allocator_t *, rbs_location_t *loc, size_t capacity);
48
- void rbs_loc_add_required_child(rbs_location_t *loc, rbs_constant_id_t name, rbs_range_t r);
49
- void rbs_loc_add_optional_child(rbs_location_t *loc, rbs_constant_id_t name, rbs_range_t r);
32
+ } rbs_location_range_list_t;
50
33
 
51
34
  /**
52
- * Allocate new rbs_location_t object through the given allocator.
53
- * */
54
- rbs_location_t *rbs_location_new(rbs_allocator_t *, rbs_range_t rg);
55
-
56
- rbs_location_list_t *rbs_location_list_new(rbs_allocator_t *allocator);
57
- void rbs_location_list_append(rbs_location_list_t *list, rbs_location_t *loc);
35
+ * Allocate new rbs_location_range_list_t object through the given allocator.
36
+ */
37
+ rbs_location_range_list_t *rbs_location_range_list_new(rbs_allocator_t *allocator);
38
+ void rbs_location_range_list_append(rbs_location_range_list_t *list, rbs_location_range range);
58
39
 
59
40
  #endif
data/include/rbs/parser.h CHANGED
@@ -126,10 +126,28 @@ rbs_ast_comment_t *rbs_parser_get_comment(rbs_parser_t *parser, int subject_line
126
126
 
127
127
  void rbs_parser_set_error(rbs_parser_t *parser, rbs_token_t tok, bool syntax_error, const char *fmt, ...) RBS_ATTRIBUTE_FORMAT(4, 5);
128
128
 
129
- bool rbs_parse_type(rbs_parser_t *parser, rbs_node_t **type);
130
- bool rbs_parse_method_type(rbs_parser_t *parser, rbs_method_type_t **method_type, bool require_eof);
129
+ bool rbs_parse_type(rbs_parser_t *parser, rbs_node_t **type, bool void_allowed, bool self_allowed, bool classish_allowed);
130
+ bool rbs_parse_method_type(rbs_parser_t *parser, rbs_method_type_t **method_type, bool require_eof, bool classish_allowed);
131
131
  bool rbs_parse_signature(rbs_parser_t *parser, rbs_signature_t **signature);
132
132
 
133
133
  bool rbs_parse_type_params(rbs_parser_t *parser, bool module_type_params, rbs_node_list_t **params);
134
134
 
135
+ /**
136
+ * Parse an inline leading annotation from a string.
137
+ *
138
+ * @param parser The parser to use
139
+ * @param annotation Pointer to store the resulting annotation
140
+ * @return true if parsing succeeded, false otherwise
141
+ */
142
+ bool rbs_parse_inline_leading_annotation(rbs_parser_t *parser, rbs_ast_ruby_annotations_t **annotation);
143
+
144
+ /**
145
+ * Parse an inline trailing annotation from a string.
146
+ *
147
+ * @param parser The parser to use
148
+ * @param annotation Pointer to store the resulting annotation
149
+ * @return true if parsing succeeded, false otherwise
150
+ */
151
+ bool rbs_parse_inline_trailing_annotation(rbs_parser_t *parser, rbs_ast_ruby_annotations_t **annotation);
152
+
135
153
  #endif
@@ -81,9 +81,6 @@ typedef struct {
81
81
  uint32_t capacity;
82
82
  } rbs_constant_pool_t;
83
83
 
84
- // A global constant pool for storing permenant keywords, such as the names of location children in `parser.c`.
85
- extern rbs_constant_pool_t *RBS_GLOBAL_CONSTANT_POOL;
86
-
87
84
  /**
88
85
  * Initialize a new constant pool with a given capacity.
89
86
  *
data/include/rbs.h CHANGED
@@ -1,6 +1,14 @@
1
1
  #ifndef RBS_H
2
2
  #define RBS_H
3
3
 
4
+ #ifdef __cplusplus
5
+ extern "C" {
6
+ #endif
7
+
4
8
  #include "rbs/parser.h"
5
9
 
10
+ #ifdef __cplusplus
11
+ }
12
+ #endif
13
+
6
14
  #endif
@@ -21,7 +21,7 @@ module RBS
21
21
  self.class.hash ^ string.hash
22
22
  end
23
23
 
24
- def to_json(state = _ = nil)
24
+ def to_json(state = nil)
25
25
  { string: string, location: location }.to_json(state)
26
26
  end
27
27
  end
@@ -21,7 +21,7 @@ module RBS
21
21
  self.class.hash ^ string.hash
22
22
  end
23
23
 
24
- def to_json(state = _ = nil)
24
+ def to_json(state = nil)
25
25
  { string: string, location: location }.to_json(state)
26
26
  end
27
27
  end
@@ -74,7 +74,7 @@ module RBS
74
74
  self.class.hash ^ name.hash ^ args.hash
75
75
  end
76
76
 
77
- def to_json(state = _ = nil)
77
+ def to_json(state = nil)
78
78
  {
79
79
  name: name,
80
80
  args: args,
@@ -130,7 +130,7 @@ module RBS
130
130
  self.class.hash ^ name.hash ^ type_params.hash ^ super_class.hash ^ members.hash
131
131
  end
132
132
 
133
- def to_json(state = _ = nil)
133
+ def to_json(state = nil)
134
134
  {
135
135
  declaration: :class,
136
136
  name: name,
@@ -166,7 +166,7 @@ module RBS
166
166
  self.class.hash ^ name.hash ^ args.hash ^ location.hash
167
167
  end
168
168
 
169
- def to_json(state = _ = nil)
169
+ def to_json(state = nil)
170
170
  {
171
171
  name: name,
172
172
  args: args,
@@ -231,7 +231,7 @@ module RBS
231
231
  self.class.hash ^ name.hash ^ type_params.hash ^ self_types.hash ^ members.hash
232
232
  end
233
233
 
234
- def to_json(state = _ = nil)
234
+ def to_json(state = nil)
235
235
  {
236
236
  declaration: :module,
237
237
  name: name,
@@ -288,7 +288,7 @@ module RBS
288
288
  self.class.hash ^ type_params.hash ^ members.hash
289
289
  end
290
290
 
291
- def to_json(state = _ = nil)
291
+ def to_json(state = nil)
292
292
  {
293
293
  declaration: :interface,
294
294
  name: name,
@@ -331,7 +331,7 @@ module RBS
331
331
  self.class.hash ^ name.hash ^ type_params.hash ^ type.hash
332
332
  end
333
333
 
334
- def to_json(state = _ = nil)
334
+ def to_json(state = nil)
335
335
  {
336
336
  declaration: :alias,
337
337
  name: name,
@@ -371,7 +371,7 @@ module RBS
371
371
  self.class.hash ^ name.hash ^ type.hash
372
372
  end
373
373
 
374
- def to_json(state = _ = nil)
374
+ def to_json(state = nil)
375
375
  {
376
376
  declaration: :constant,
377
377
  name: name,
@@ -409,7 +409,7 @@ module RBS
409
409
  self.class.hash ^ name.hash ^ type.hash
410
410
  end
411
411
 
412
- def to_json(state = _ = nil)
412
+ def to_json(state = nil)
413
413
  {
414
414
  declaration: :global,
415
415
  name: name,
@@ -445,7 +445,7 @@ module RBS
445
445
  end
446
446
 
447
447
  class ClassAlias < AliasDecl
448
- def to_json(state = _ = nil)
448
+ def to_json(state = nil)
449
449
  {
450
450
  declaration: :class_alias,
451
451
  new_name: new_name,
@@ -457,7 +457,7 @@ module RBS
457
457
  end
458
458
 
459
459
  class ModuleAlias < AliasDecl
460
- def to_json(state = _ = nil)
460
+ def to_json(state = nil)
461
461
  {
462
462
  declaration: :module_alias,
463
463
  new_name: new_name,
@@ -35,7 +35,7 @@ module RBS
35
35
  update(method_type: self.method_type.sub(subst))
36
36
  end
37
37
 
38
- def to_json(state = _ = nil)
38
+ def to_json(state = nil)
39
39
  {
40
40
  annotations: annotations,
41
41
  method_type: method_type
@@ -103,7 +103,7 @@ module RBS
103
103
  )
104
104
  end
105
105
 
106
- def to_json(state = _ = nil)
106
+ def to_json(state = nil)
107
107
  {
108
108
  member: :method_definition,
109
109
  name: name,
@@ -145,7 +145,7 @@ module RBS
145
145
  class InstanceVariable < Base
146
146
  include Var
147
147
 
148
- def to_json(state = _ = nil)
148
+ def to_json(state = nil)
149
149
  {
150
150
  member: :instance_variable,
151
151
  name: name,
@@ -159,7 +159,7 @@ module RBS
159
159
  class ClassInstanceVariable < Base
160
160
  include Var
161
161
 
162
- def to_json(state = _ = nil)
162
+ def to_json(state = nil)
163
163
  {
164
164
  member: :class_instance_variable,
165
165
  name: name,
@@ -173,7 +173,7 @@ module RBS
173
173
  class ClassVariable < Base
174
174
  include Var
175
175
 
176
- def to_json(state = _ = nil)
176
+ def to_json(state = nil)
177
177
  {
178
178
  member: :class_variable,
179
179
  name: name,
@@ -215,7 +215,7 @@ module RBS
215
215
  class Include < Base
216
216
  include Mixin
217
217
 
218
- def to_json(state = _ = nil)
218
+ def to_json(state = nil)
219
219
  {
220
220
  member: :include,
221
221
  name: name,
@@ -230,7 +230,7 @@ module RBS
230
230
  class Extend < Base
231
231
  include Mixin
232
232
 
233
- def to_json(state = _ = nil)
233
+ def to_json(state = nil)
234
234
  {
235
235
  member: :extend,
236
236
  name: name,
@@ -245,7 +245,7 @@ module RBS
245
245
  class Prepend < Base
246
246
  include Mixin
247
247
 
248
- def to_json(state = _ = nil)
248
+ def to_json(state = nil)
249
249
  {
250
250
  member: :prepend,
251
251
  name: name,
@@ -311,7 +311,7 @@ module RBS
311
311
  class AttrReader < Base
312
312
  include Attribute
313
313
 
314
- def to_json(state = _ = nil)
314
+ def to_json(state = nil)
315
315
  {
316
316
  member: :attr_reader,
317
317
  name: name,
@@ -329,7 +329,7 @@ module RBS
329
329
  class AttrAccessor < Base
330
330
  include Attribute
331
331
 
332
- def to_json(state = _ = nil)
332
+ def to_json(state = nil)
333
333
  {
334
334
  member: :attr_accessor,
335
335
  name: name,
@@ -347,7 +347,7 @@ module RBS
347
347
  class AttrWriter < Base
348
348
  include Attribute
349
349
 
350
- def to_json(state = _ = nil)
350
+ def to_json(state = nil)
351
351
  {
352
352
  member: :attr_writer,
353
353
  name: name,
@@ -383,7 +383,7 @@ module RBS
383
383
  class Public < Base
384
384
  include LocationOnly
385
385
 
386
- def to_json(state = _ = nil)
386
+ def to_json(state = nil)
387
387
  { member: :public, location: location }.to_json(state)
388
388
  end
389
389
  end
@@ -391,7 +391,7 @@ module RBS
391
391
  class Private < Base
392
392
  include LocationOnly
393
393
 
394
- def to_json(state = _ = nil)
394
+ def to_json(state = nil)
395
395
  { member: :private, location: location }.to_json(state)
396
396
  end
397
397
  end
@@ -426,7 +426,7 @@ module RBS
426
426
  new_name.hash ^ old_name.hash ^ kind.hash
427
427
  end
428
428
 
429
- def to_json(state = _ = nil)
429
+ def to_json(state = nil)
430
430
  {
431
431
  member: :alias,
432
432
  new_name: new_name,