Skip to content
Merged
Show file tree
Hide file tree
Changes from 71 commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
5668949
Introduce sub buffer
soutaro Apr 8, 2025
cbff9ec
Let `Location` support sub buffers
soutaro Apr 8, 2025
4a9d257
Add inline annotation AST
soutaro Apr 9, 2025
7211c18
Add `@rbs` token
soutaro Apr 9, 2025
d0b2e36
Setup bridge between parser and AST
soutaro Apr 9, 2025
41da42e
Parse inline trailing `: TYPE` annotation
soutaro Apr 9, 2025
7ac54d4
Parser inline leading `: METHOD-TYPE` annotation
soutaro Apr 9, 2025
94facd8
Parser inline leading `@rbs METHOD-TYPEs` annotation
soutaro Apr 10, 2025
13478cf
Add parsing error test
soutaro Apr 10, 2025
15d2614
Add `CommentBlock`
soutaro Apr 11, 2025
0f4fd2c
Add `CommentAssociation`
soutaro Apr 11, 2025
ab5a5ce
Bump csv from 3.3.3 to 3.3.4 in /steep
dependabot[bot] Apr 14, 2025
2f88c88
Bump strscan from 3.1.2 to 3.1.3 in /steep
dependabot[bot] Apr 14, 2025
816a5a0
Merge pull request #2399 from ruby/dependabot/bundler/steep/csv-3.3.4
soutaro Apr 14, 2025
de95753
Merge pull request #2400 from ruby/dependabot/bundler/steep/strscan-3…
soutaro Apr 14, 2025
e552526
Bump rubocop-ast from 1.44.0 to 1.44.1
dependabot[bot] Apr 14, 2025
c755207
Bump parser from 3.3.7.4 to 3.3.8.0
dependabot[bot] Apr 14, 2025
9100dc6
Merge pull request #2401 from ruby/dependabot/bundler/rubocop-ast-1.44.1
soutaro Apr 14, 2025
6f9725e
Merge pull request #2402 from ruby/dependabot/bundler/parser-3.3.8.0
soutaro Apr 14, 2025
594ee7d
Add `MethodTypeAnnotation` class
soutaro Apr 14, 2025
3178cfc
Implement inline parser with method type annotations
soutaro Apr 14, 2025
b0173c2
Use `Struct` instead of `Data`
soutaro Apr 14, 2025
de06b01
Add `frozen_string_literal` comment
soutaro Apr 14, 2025
674dbdf
Merge pull request #2403 from ruby/inline-annotations
soutaro Apr 14, 2025
c8b7fce
Add `SkipAnnotation` AST
soutaro Apr 11, 2025
1ceb7af
Add `skip` keyword
soutaro Apr 11, 2025
0795a23
Implement parser
soutaro Apr 14, 2025
76e1b46
Update parser to support `skip` annotation
soutaro Apr 14, 2025
351b6cd
Merge pull request #2405 from ruby/inline-skip-annotation
soutaro Apr 14, 2025
30af9cb
Add annotation AST
soutaro Apr 15, 2025
af34588
Add ast constructor
soutaro Apr 15, 2025
7573afa
Add `return` keyword
soutaro Apr 15, 2025
b657e80
Implement parser
soutaro Apr 15, 2025
8be0331
Update members
soutaro Apr 15, 2025
5aaf462
Merge pull request #2406 from ruby/inline-return
soutaro Apr 15, 2025
f8f94e2
Bump rake-compiler from 1.2.9 to 1.3.0
dependabot[bot] Apr 15, 2025
c7cbf42
Bump csv from 3.3.3 to 3.3.4
dependabot[bot] Apr 15, 2025
7608f76
Merge pull request #2407 from ruby/dependabot/bundler/rake-compiler-1…
soutaro Apr 15, 2025
cb6d27d
Merge pull request #2408 from ruby/dependabot/bundler/csv-3.3.4
soutaro Apr 15, 2025
d17c2c4
Bump parser from 3.3.7.4 to 3.3.8.0 in /steep
dependabot[bot] Apr 15, 2025
8f9e78b
Bump sorbet-runtime from 0.5.12003 to 0.5.12016 in /steep
dependabot[bot] Apr 15, 2025
9d3d70a
Merge pull request #2409 from ruby/dependabot/bundler/steep/parser-3.…
soutaro Apr 15, 2025
0a1bb2f
Merge pull request #2410 from ruby/dependabot/bundler/steep/sorbet-ru…
soutaro Apr 15, 2025
f42da4f
Bump ffi from 1.17.1 to 1.17.2
dependabot[bot] Apr 16, 2025
8aa70f9
Bump ffi from 1.17.1 to 1.17.2 in /steep
dependabot[bot] Apr 16, 2025
80fd00f
Bump sorbet-runtime from 0.5.12016 to 0.5.12017 in /steep
dependabot[bot] Apr 16, 2025
6ff2197
Merge pull request #2411 from ruby/dependabot/bundler/ffi-1.17.2
soutaro Apr 16, 2025
a9d5862
Merge pull request #2413 from ruby/dependabot/bundler/steep/ffi-1.17.2
soutaro Apr 16, 2025
7840171
Merge pull request #2414 from ruby/dependabot/bundler/steep/sorbet-ru…
soutaro Apr 16, 2025
3a89999
Bump sorbet-runtime from 0.5.12017 to 0.5.12020 in /steep
dependabot[bot] Apr 17, 2025
8fe40cc
Bump connection_pool from 2.5.0 to 2.5.1 in /steep
dependabot[bot] Apr 17, 2025
2323647
Merge pull request #2415 from ruby/dependabot/bundler/steep/sorbet-ru…
soutaro Apr 17, 2025
442c31e
Merge pull request #2416 from ruby/dependabot/bundler/steep/connectio…
soutaro Apr 17, 2025
dc95f43
Bump connection_pool from 2.5.0 to 2.5.1
dependabot[bot] Apr 17, 2025
a69db44
Merge pull request #2417 from ruby/dependabot/bundler/connection_pool…
soutaro Apr 17, 2025
2ce069d
Bump sorbet-runtime from 0.5.12020 to 0.5.12024 in /steep
dependabot[bot] Apr 18, 2025
33804aa
Merge pull request #2418 from ruby/dependabot/bundler/steep/sorbet-ru…
soutaro Apr 18, 2025
09aaa3f
Bump sorbet-runtime from 0.5.12024 to 0.5.12026 in /steep
dependabot[bot] Apr 21, 2025
e43b3b6
Merge pull request #2420 from ruby/dependabot/bundler/steep/sorbet-ru…
soutaro Apr 21, 2025
269476e
Bump stringio from 3.1.6 to 3.1.7
dependabot[bot] Apr 21, 2025
bdefcc4
Merge pull request #2421 from ruby/dependabot/bundler/stringio-3.1.7
soutaro Apr 21, 2025
1086df3
Bump nokogiri from 1.18.7 to 1.18.8
dependabot[bot] Apr 22, 2025
65141c9
Merge pull request #2422 from ruby/dependabot/bundler/nokogiri-1.18.8
soutaro Apr 22, 2025
ba8b2d4
Bump sorbet-runtime from 0.5.12026 to 0.5.12028 in /steep
dependabot[bot] Apr 22, 2025
8d6a164
Merge pull request #2423 from ruby/dependabot/bundler/steep/sorbet-ru…
soutaro Apr 22, 2025
8bb5f05
Bump sorbet-runtime from 0.5.12028 to 0.5.12032 in /steep
dependabot[bot] Apr 23, 2025
b25d268
Merge pull request #2424 from ruby/dependabot/bundler/steep/sorbet-ru…
soutaro Apr 23, 2025
4301777
Bump rubocop from 1.75.2 to 1.75.3
dependabot[bot] Apr 23, 2025
e73a2ec
Merge pull request #2425 from ruby/dependabot/bundler/rubocop-1.75.3
soutaro Apr 23, 2025
afc0f98
Merge branch 'master' into merge-master
st0012 Apr 23, 2025
b5e5032
Merge branch 'c-api' into merge-master
st0012 Apr 25, 2025
0a8a4c5
Apply suggestions from code review
st0012 Apr 30, 2025
a9e7702
Update src/parser.c
st0012 Apr 30, 2025
514745b
Update src/parser.c
st0012 Apr 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,13 @@ GEM
benchmark-ips (2.14.0)
bigdecimal (3.1.9)
concurrent-ruby (1.3.5)
connection_pool (2.5.0)
csv (3.3.3)
connection_pool (2.5.1)
csv (3.3.4)
dbm (1.1.0)
diff-lcs (1.6.1)
digest (3.2.0)
drb (2.2.1)
ffi (1.17.1)
ffi (1.17.2)
fileutils (1.7.3)
goodcheck (3.1.0)
marcel (>= 1.0, < 2.0)
Expand Down Expand Up @@ -69,12 +69,12 @@ GEM
net-smtp (0.5.1)
net-protocol
nkf (0.2.0)
nokogiri (1.18.7)
nokogiri (1.18.8)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
ostruct (0.6.1)
parallel (1.26.3)
parser (3.3.7.4)
parallel (1.27.0)
parser (3.3.8.0)
ast (~> 2.4.1)
racc
pathname (0.4.0)
Expand All @@ -90,7 +90,7 @@ GEM
racc (1.8.1)
rainbow (3.1.1)
rake (13.2.1)
rake-compiler (1.2.9)
rake-compiler (1.3.0)
rake
rb-fsevent (0.11.2)
rb-inotify (0.11.1)
Expand All @@ -111,7 +111,7 @@ GEM
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-support (3.13.2)
rubocop (1.75.2)
rubocop (1.75.3)
json (~> 2.3)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0)
Expand All @@ -122,7 +122,7 @@ GEM
rubocop-ast (>= 1.44.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 4.0)
rubocop-ast (1.44.0)
rubocop-ast (1.44.1)
parser (>= 3.3.7.2)
prism (~> 1.4)
rubocop-on-rbs (1.5.0)
Expand Down Expand Up @@ -155,9 +155,9 @@ GEM
strscan (>= 1.0.0)
terminal-table (>= 2, < 5)
uri (>= 0.12.0)
stringio (3.1.6)
stringio (3.1.7)
strong_json (2.1.2)
strscan (3.1.2)
strscan (3.1.3)
tempfile (0.3.1)
terminal-table (4.0.0)
unicode-display_width (>= 1.1.1, < 4)
Expand Down
42 changes: 42 additions & 0 deletions config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -443,3 +443,45 @@ nodes:
fields:
- name: name
c_type: rbs_ast_symbol
- name: RBS::AST::Ruby::Annotations::NodeTypeAssertion
fields:
- name: prefix_location
c_type: rbs_location
- name: type
c_type: rbs_node
- name: RBS::AST::Ruby::Annotations::ColonMethodTypeAnnotation
fields:
- name: prefix_location
c_type: rbs_location
- name: annotations
c_type: rbs_node_list
- name: method_type
c_type: rbs_node
- name: RBS::AST::Ruby::Annotations::MethodTypesAnnotation
fields:
- name: prefix_location
c_type: rbs_location
- name: overloads
c_type: rbs_node_list
- name: vertical_bar_locations
c_type: rbs_location_list
- name: RBS::AST::Ruby::Annotations::SkipAnnotation
fields:
- name: prefix_location
c_type: rbs_location
- name: skip_location
c_type: rbs_location
- name: comment_location
c_type: rbs_location
- name: RBS::AST::Ruby::Annotations::ReturnTypeAnnotation
fields:
- name: prefix_location
c_type: rbs_location
- name: return_location
c_type: rbs_location
- name: colon_location
c_type: rbs_location
- name: return_type
c_type: rbs_node
- name: comment_location
c_type: rbs_location
99 changes: 99 additions & 0 deletions ext/rbs_extension/ast_translation.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ VALUE rbs_hash_to_ruby_hash(rbs_translation_context_t ctx, rbs_hash_t *rbs_hash)
}

VALUE rbs_loc_to_ruby_location(rbs_translation_context_t ctx, rbs_location_t *source_loc) {
if (source_loc == NULL) {
return Qnil;
}

VALUE new_loc = rbs_new_location(ctx.buffer, source_loc->rg);
rbs_loc *new_loc_struct = rbs_check_location(new_loc);

Expand All @@ -55,6 +59,20 @@ VALUE rbs_loc_to_ruby_location(rbs_translation_context_t ctx, rbs_location_t *so
return new_loc;
}

VALUE rbs_location_list_to_ruby_array(rbs_translation_context_t ctx, rbs_location_list_t *list) {
VALUE ruby_array = rb_ary_new();

if (list == NULL) {
return ruby_array;
}

for (rbs_location_list_node_t *n = list->head; n != NULL; n = n->next) {
rb_ary_push(ruby_array, rbs_loc_to_ruby_location(ctx, n->loc));
}

return ruby_array;
}

#ifdef RB_PASS_KEYWORDS
// Ruby 2.7 or later
#define CLASS_NEW_INSTANCE(klass, argc, argv)\
Expand Down Expand Up @@ -586,6 +604,87 @@ VALUE rbs_struct_to_ruby_value(rbs_translation_context_t ctx, rbs_node_t *instan
&h
);
}
case RBS_AST_RUBY_ANNOTATIONS_COLON_METHOD_TYPE_ANNOTATION: {
rbs_ast_ruby_annotations_colon_method_type_annotation_t *node = (rbs_ast_ruby_annotations_colon_method_type_annotation_t *)instance;

VALUE h = rb_hash_new();
rb_hash_aset(h, ID2SYM(rb_intern("location")), rbs_loc_to_ruby_location(ctx, node->base.location));
rb_hash_aset(h, ID2SYM(rb_intern("prefix_location")), rbs_loc_to_ruby_location(ctx, node->prefix_location));
rb_hash_aset(h, ID2SYM(rb_intern("annotations")), rbs_node_list_to_ruby_array(ctx, node->annotations));
rb_hash_aset(h, ID2SYM(rb_intern("method_type")), rbs_struct_to_ruby_value(ctx, (rbs_node_t *) node->method_type)); // rbs_node


return CLASS_NEW_INSTANCE(
RBS_AST_Ruby_Annotations_ColonMethodTypeAnnotation,
1,
&h
);
}
case RBS_AST_RUBY_ANNOTATIONS_METHOD_TYPES_ANNOTATION: {
rbs_ast_ruby_annotations_method_types_annotation_t *node = (rbs_ast_ruby_annotations_method_types_annotation_t *)instance;

VALUE h = rb_hash_new();
rb_hash_aset(h, ID2SYM(rb_intern("location")), rbs_loc_to_ruby_location(ctx, node->base.location));
rb_hash_aset(h, ID2SYM(rb_intern("prefix_location")), rbs_loc_to_ruby_location(ctx, node->prefix_location));
rb_hash_aset(h, ID2SYM(rb_intern("overloads")), rbs_node_list_to_ruby_array(ctx, node->overloads));
rb_hash_aset(h, ID2SYM(rb_intern("vertical_bar_locations")), rbs_location_list_to_ruby_array(ctx, node->vertical_bar_locations));


return CLASS_NEW_INSTANCE(
RBS_AST_Ruby_Annotations_MethodTypesAnnotation,
1,
&h
);
}
case RBS_AST_RUBY_ANNOTATIONS_NODE_TYPE_ASSERTION: {
rbs_ast_ruby_annotations_node_type_assertion_t *node = (rbs_ast_ruby_annotations_node_type_assertion_t *)instance;

VALUE h = rb_hash_new();
rb_hash_aset(h, ID2SYM(rb_intern("location")), rbs_loc_to_ruby_location(ctx, node->base.location));
rb_hash_aset(h, ID2SYM(rb_intern("prefix_location")), rbs_loc_to_ruby_location(ctx, node->prefix_location));
rb_hash_aset(h, ID2SYM(rb_intern("type")), rbs_struct_to_ruby_value(ctx, (rbs_node_t *) node->type)); // rbs_node


return CLASS_NEW_INSTANCE(
RBS_AST_Ruby_Annotations_NodeTypeAssertion,
1,
&h
);
}
case RBS_AST_RUBY_ANNOTATIONS_RETURN_TYPE_ANNOTATION: {
rbs_ast_ruby_annotations_return_type_annotation_t *node = (rbs_ast_ruby_annotations_return_type_annotation_t *)instance;

VALUE h = rb_hash_new();
rb_hash_aset(h, ID2SYM(rb_intern("location")), rbs_loc_to_ruby_location(ctx, node->base.location));
rb_hash_aset(h, ID2SYM(rb_intern("prefix_location")), rbs_loc_to_ruby_location(ctx, node->prefix_location));
rb_hash_aset(h, ID2SYM(rb_intern("return_location")), rbs_loc_to_ruby_location(ctx, node->return_location));
rb_hash_aset(h, ID2SYM(rb_intern("colon_location")), rbs_loc_to_ruby_location(ctx, node->colon_location));
rb_hash_aset(h, ID2SYM(rb_intern("return_type")), rbs_struct_to_ruby_value(ctx, (rbs_node_t *) node->return_type)); // rbs_node
rb_hash_aset(h, ID2SYM(rb_intern("comment_location")), rbs_loc_to_ruby_location(ctx, node->comment_location));


return CLASS_NEW_INSTANCE(
RBS_AST_Ruby_Annotations_ReturnTypeAnnotation,
1,
&h
);
}
case RBS_AST_RUBY_ANNOTATIONS_SKIP_ANNOTATION: {
rbs_ast_ruby_annotations_skip_annotation_t *node = (rbs_ast_ruby_annotations_skip_annotation_t *)instance;

VALUE h = rb_hash_new();
rb_hash_aset(h, ID2SYM(rb_intern("location")), rbs_loc_to_ruby_location(ctx, node->base.location));
rb_hash_aset(h, ID2SYM(rb_intern("prefix_location")), rbs_loc_to_ruby_location(ctx, node->prefix_location));
rb_hash_aset(h, ID2SYM(rb_intern("skip_location")), rbs_loc_to_ruby_location(ctx, node->skip_location));
rb_hash_aset(h, ID2SYM(rb_intern("comment_location")), rbs_loc_to_ruby_location(ctx, node->comment_location));


return CLASS_NEW_INSTANCE(
RBS_AST_Ruby_Annotations_SkipAnnotation,
1,
&h
);
}
case RBS_AST_STRING: {
rbs_ast_string_t *string_node = (rbs_ast_string_t *) instance;
rbs_string_t s = string_node->string;
Expand Down
14 changes: 14 additions & 0 deletions ext/rbs_extension/class_constants.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ VALUE RBS_AST;
VALUE RBS_AST_Declarations;
VALUE RBS_AST_Directives;
VALUE RBS_AST_Members;
VALUE RBS_AST_Ruby;
VALUE RBS_AST_Ruby_Annotations;
VALUE RBS_Parser;
VALUE RBS_Types;
VALUE RBS_Types_Bases;
Expand Down Expand Up @@ -47,6 +49,11 @@ VALUE RBS_AST_Members_MethodDefinition_Overload;
VALUE RBS_AST_Members_Prepend;
VALUE RBS_AST_Members_Private;
VALUE RBS_AST_Members_Public;
VALUE RBS_AST_Ruby_Annotations_ColonMethodTypeAnnotation;
VALUE RBS_AST_Ruby_Annotations_MethodTypesAnnotation;
VALUE RBS_AST_Ruby_Annotations_NodeTypeAssertion;
VALUE RBS_AST_Ruby_Annotations_ReturnTypeAnnotation;
VALUE RBS_AST_Ruby_Annotations_SkipAnnotation;
VALUE RBS_AST_TypeParam;
VALUE RBS_MethodType;
VALUE RBS_Namespace;
Expand Down Expand Up @@ -89,6 +96,8 @@ void rbs__init_constants(void) {
IMPORT_CONSTANT(RBS_AST_Declarations, RBS_AST, "Declarations");
IMPORT_CONSTANT(RBS_AST_Directives, RBS_AST, "Directives");
IMPORT_CONSTANT(RBS_AST_Members, RBS_AST, "Members");
IMPORT_CONSTANT(RBS_AST_Ruby, RBS_AST, "Ruby");
IMPORT_CONSTANT(RBS_AST_Ruby_Annotations, RBS_AST_Ruby, "Annotations");
IMPORT_CONSTANT(RBS_Types, RBS, "Types");
IMPORT_CONSTANT(RBS_Types_Bases, RBS_Types, "Bases");

Expand Down Expand Up @@ -121,6 +130,11 @@ void rbs__init_constants(void) {
IMPORT_CONSTANT(RBS_AST_Members_Prepend, RBS_AST_Members, "Prepend");
IMPORT_CONSTANT(RBS_AST_Members_Private, RBS_AST_Members, "Private");
IMPORT_CONSTANT(RBS_AST_Members_Public, RBS_AST_Members, "Public");
IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ColonMethodTypeAnnotation, RBS_AST_Ruby_Annotations, "ColonMethodTypeAnnotation");
IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_MethodTypesAnnotation, RBS_AST_Ruby_Annotations, "MethodTypesAnnotation");
IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_NodeTypeAssertion, RBS_AST_Ruby_Annotations, "NodeTypeAssertion");
IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ReturnTypeAnnotation, RBS_AST_Ruby_Annotations, "ReturnTypeAnnotation");
IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_SkipAnnotation, RBS_AST_Ruby_Annotations, "SkipAnnotation");
IMPORT_CONSTANT(RBS_AST_TypeParam, RBS_AST, "TypeParam");
IMPORT_CONSTANT(RBS_MethodType, RBS, "MethodType");
IMPORT_CONSTANT(RBS_Namespace, RBS, "Namespace");
Expand Down
7 changes: 7 additions & 0 deletions ext/rbs_extension/class_constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ extern VALUE RBS_AST;
extern VALUE RBS_AST_Declarations;
extern VALUE RBS_AST_Directives;
extern VALUE RBS_AST_Members;
extern VALUE RBS_AST_Ruby;
extern VALUE RBS_AST_Ruby_Annotations;
extern VALUE RBS_Types;
extern VALUE RBS_Types_Bases;
extern VALUE RBS_ParsingError;
Expand Down Expand Up @@ -49,6 +51,11 @@ extern VALUE RBS_AST_Members_MethodDefinition_Overload;
extern VALUE RBS_AST_Members_Prepend;
extern VALUE RBS_AST_Members_Private;
extern VALUE RBS_AST_Members_Public;
extern VALUE RBS_AST_Ruby_Annotations_ColonMethodTypeAnnotation;
extern VALUE RBS_AST_Ruby_Annotations_MethodTypesAnnotation;
extern VALUE RBS_AST_Ruby_Annotations_NodeTypeAssertion;
extern VALUE RBS_AST_Ruby_Annotations_ReturnTypeAnnotation;
extern VALUE RBS_AST_Ruby_Annotations_SkipAnnotation;
extern VALUE RBS_AST_TypeParam;
extern VALUE RBS_MethodType;
extern VALUE RBS_Namespace;
Expand Down
4 changes: 2 additions & 2 deletions ext/rbs_extension/legacy_location.c
Original file line number Diff line number Diff line change
Expand Up @@ -305,8 +305,8 @@ void rbs__init_location(void) {
rb_define_private_method(RBS_Location, "initialize", location_initialize, 3);
rb_define_private_method(RBS_Location, "initialize_copy", location_initialize_copy, 1);
rb_define_method(RBS_Location, "buffer", location_buffer, 0);
rb_define_method(RBS_Location, "start_pos", location_start_pos, 0);
rb_define_method(RBS_Location, "end_pos", location_end_pos, 0);
rb_define_method(RBS_Location, "_start_pos", location_start_pos, 0);
rb_define_method(RBS_Location, "_end_pos", location_end_pos, 0);
rb_define_method(RBS_Location, "_add_required_child", location_add_required_child, 3);
rb_define_method(RBS_Location, "_add_optional_child", location_add_optional_child, 3);
rb_define_method(RBS_Location, "_add_optional_no_child", location_add_optional_no_child, 1);
Expand Down
Loading