diff --git a/include/rbs/parser.h b/include/rbs/parser.h index 339235deb..5e4e58a6f 100644 --- a/include/rbs/parser.h +++ b/include/rbs/parser.h @@ -4,6 +4,7 @@ #include "rbs/defines.h" #include "rbs/util/rbs_allocator.h" #include "rbs/util/rbs_constant_pool.h" +#include "rbs/util/rbs_buffer.h" #include "rbs/lexer.h" #include "rbs/ast.h" @@ -27,9 +28,8 @@ typedef struct rbs_comment_t { rbs_position_t start; rbs_position_t end; - size_t line_tokens_capacity; size_t line_tokens_count; - rbs_token_t *line_tokens; + rbs_buffer_t /* of rbs_token_t */ line_tokens; struct rbs_comment_t *next_comment; } rbs_comment_t; diff --git a/include/rbs/util/rbs_allocator.h b/include/rbs/util/rbs_allocator.h index c3356cfad..10f623da4 100644 --- a/include/rbs/util/rbs_allocator.h +++ b/include/rbs/util/rbs_allocator.h @@ -43,13 +43,11 @@ void *rbs_allocator_calloc_impl(rbs_allocator_t *, size_t count, size_t size, si void *rbs_allocator_realloc_impl(rbs_allocator_t *, void *ptr, size_t old_size, size_t new_size, size_t alignment); // Use this when allocating memory for a single instance of a type. -#define rbs_allocator_alloc(allocator, type) ((type *) rbs_allocator_malloc_impl((allocator), sizeof(type), rbs_alignof(type))) -// Use this when allocating memory that will be immediately written to in full. -// Such as allocating strings -#define rbs_allocator_alloc_many(allocator, count, type) ((type *) rbs_allocator_malloc_many_impl((allocator), (count), sizeof(type), rbs_alignof(type))) -// Use this when allocating memory that will NOT be immediately written to in full. -// Such as allocating buffers -#define rbs_allocator_calloc(allocator, count, type) ((type *) rbs_allocator_calloc_impl((allocator), (count), sizeof(type), rbs_alignof(type))) -#define rbs_allocator_realloc(allocator, ptr, old_size, new_size, type) ((type *) rbs_allocator_realloc_impl((allocator), (ptr), (old_size), (new_size), rbs_alignof(type))) +#define rbs_alloc(allocator, type) ((type *) rbs_allocator_malloc_impl((allocator), sizeof(type), rbs_alignof(type))) +// Use this when allocating memory that will be immediately written to in full. e.g. allocating strings +#define rbs_alloc_many(allocator, count, type) ((type *) rbs_allocator_malloc_many_impl((allocator), (count), sizeof(type), rbs_alignof(type))) +// Use this when allocating memory that will NOT be immediately written to in full, e.g. pre-allocating buffers +#define rbs_calloc(allocator, count, type) ((type *) rbs_allocator_calloc_impl((allocator), (count), sizeof(type), rbs_alignof(type))) +#define rbs_realloc(allocator, ptr, old_size, new_size, type) ((type *) rbs_allocator_realloc_impl((allocator), (ptr), (old_size), (new_size), rbs_alignof(type))) #endif diff --git a/include/rbs/util/rbs_buffer.h b/include/rbs/util/rbs_buffer.h index 7cc001ecc..8a88bddb6 100644 --- a/include/rbs/util/rbs_buffer.h +++ b/include/rbs/util/rbs_buffer.h @@ -8,12 +8,6 @@ #include #include -/** - * The default capacity of a rbs_buffer_t. - * If the buffer needs to grow beyond this capacity, it will be doubled. - */ -#define RBS_BUFFER_DEFAULT_CAPACITY 128 - /** * A rbs_buffer_t is a simple memory buffer that stores data in a contiguous block of memory. */ @@ -37,6 +31,8 @@ typedef struct { */ bool rbs_buffer_init(rbs_allocator_t *, rbs_buffer_t *buffer); +bool rbs_buffer_init_with_capacity(rbs_allocator_t *allocator, rbs_buffer_t *buffer, size_t capacity); + /** * Return the value of the buffer. * @@ -80,4 +76,29 @@ void rbs_buffer_append_string(rbs_allocator_t *, rbs_buffer_t *buffer, const cha */ rbs_string_t rbs_buffer_to_string(rbs_buffer_t *buffer); +/** + * Append a value to the buffer. + * + * @param allocator The allocator to use. + * @param buffer The buffer to append to. + * @param value The value to append. + * @param type The type of the value to append, which determines how many bytes to append. + */ +#define rbs_buffer_append_value(allocator, buffer, value, type) \ + rbs_buffer_append_string((allocator), (buffer), (char *) (value), sizeof(type)) + +/** + * Returns a copy of a `type` from the `buffer` at the given `index`. + * + * This cast is unchecked, so it's up to caller to ensure the type is correct. + * + * @param buffer The buffer to get the value from. + * @param index The index of the element to retrieve. + * @param type The element type that the data will be cast to. + * @returns The value at the specified index, cast to the specified type. + */ +#define rbs_buffer_get(buffer, index, type) ( \ + ((type *) (buffer).value)[index] \ +) + #endif diff --git a/src/ast.c b/src/ast.c index fa49588fb..9390b262c 100644 --- a/src/ast.c +++ b/src/ast.c @@ -167,7 +167,7 @@ const char *rbs_node_type_name(rbs_node_t *node) { /* rbs_node_list */ rbs_node_list_t *rbs_node_list_new(rbs_allocator_t *allocator) { - rbs_node_list_t *list = rbs_allocator_alloc(allocator, rbs_node_list_t); + rbs_node_list_t *list = rbs_alloc(allocator, rbs_node_list_t); *list = (rbs_node_list_t) { .allocator = allocator, .head = NULL, @@ -179,7 +179,7 @@ rbs_node_list_t *rbs_node_list_new(rbs_allocator_t *allocator) { } void rbs_node_list_append(rbs_node_list_t *list, rbs_node_t *node) { - rbs_node_list_node_t *new_node = rbs_allocator_alloc(list->allocator, rbs_node_list_node_t); + rbs_node_list_node_t *new_node = rbs_alloc(list->allocator, rbs_node_list_node_t); *new_node = (rbs_node_list_node_t) { .node = node, .next = NULL, @@ -199,7 +199,7 @@ void rbs_node_list_append(rbs_node_list_t *list, rbs_node_t *node) { /* rbs_hash */ rbs_hash_t *rbs_hash_new(rbs_allocator_t *allocator) { - rbs_hash_t *hash = rbs_allocator_alloc(allocator, rbs_hash_t); + rbs_hash_t *hash = rbs_alloc(allocator, rbs_hash_t); *hash = (rbs_hash_t) { .allocator = allocator, .head = NULL, @@ -251,10 +251,12 @@ void rbs_hash_set(rbs_hash_t *hash, rbs_node_t *key, rbs_node_t *value) { return; } - rbs_hash_node_t *new_node = rbs_allocator_alloc(hash->allocator, rbs_hash_node_t); - new_node->key = key; - new_node->value = value; - new_node->next = NULL; + rbs_hash_node_t *new_node = rbs_alloc(hash->allocator, rbs_hash_node_t); + *new_node = (rbs_hash_node_t) { + .key = key, + .value = value, + .next = NULL, + }; if (hash->tail == NULL) { hash->head = new_node; @@ -271,7 +273,7 @@ rbs_node_t *rbs_hash_get(rbs_hash_t *hash, rbs_node_t *key) { } rbs_keyword_t *rbs_keyword_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_constant_id_t constant_id) { - rbs_keyword_t *instance = rbs_allocator_alloc(allocator, rbs_keyword_t); + rbs_keyword_t *instance = rbs_alloc(allocator, rbs_keyword_t); *instance = (rbs_keyword_t) { .base = (rbs_node_t) { @@ -285,7 +287,7 @@ rbs_keyword_t *rbs_keyword_new(rbs_allocator_t *allocator, rbs_location_t *locat } rbs_ast_symbol_t *rbs_ast_symbol_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_constant_pool_t *constant_pool, rbs_constant_id_t constant_id) { - rbs_ast_symbol_t *instance = rbs_allocator_alloc(allocator, rbs_ast_symbol_t); + rbs_ast_symbol_t *instance = rbs_alloc(allocator, rbs_ast_symbol_t); *instance = (rbs_ast_symbol_t) { .base = (rbs_node_t) { @@ -300,7 +302,7 @@ rbs_ast_symbol_t *rbs_ast_symbol_new(rbs_allocator_t *allocator, rbs_location_t #line 156 "prism/templates/src/ast.c.erb" rbs_ast_annotation_t *rbs_ast_annotation_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_string_t string) { - rbs_ast_annotation_t *instance = rbs_allocator_alloc(allocator, rbs_ast_annotation_t); + rbs_ast_annotation_t *instance = rbs_alloc(allocator, rbs_ast_annotation_t); *instance = (rbs_ast_annotation_t) { .base = (rbs_node_t) { @@ -314,7 +316,7 @@ rbs_ast_annotation_t *rbs_ast_annotation_new(rbs_allocator_t *allocator, rbs_loc } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_bool_t *rbs_ast_bool_new(rbs_allocator_t *allocator, rbs_location_t *location, bool value) { - rbs_ast_bool_t *instance = rbs_allocator_alloc(allocator, rbs_ast_bool_t); + rbs_ast_bool_t *instance = rbs_alloc(allocator, rbs_ast_bool_t); *instance = (rbs_ast_bool_t) { .base = (rbs_node_t) { @@ -328,7 +330,7 @@ rbs_ast_bool_t *rbs_ast_bool_new(rbs_allocator_t *allocator, rbs_location_t *loc } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_comment_t *rbs_ast_comment_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_string_t string) { - rbs_ast_comment_t *instance = rbs_allocator_alloc(allocator, rbs_ast_comment_t); + rbs_ast_comment_t *instance = rbs_alloc(allocator, rbs_ast_comment_t); *instance = (rbs_ast_comment_t) { .base = (rbs_node_t) { @@ -342,7 +344,7 @@ rbs_ast_comment_t *rbs_ast_comment_new(rbs_allocator_t *allocator, rbs_location_ } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_declarations_class_t *rbs_ast_declarations_class_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *name, rbs_node_list_t *type_params, rbs_ast_declarations_class_super_t *super_class, rbs_node_list_t *members, rbs_node_list_t *annotations, rbs_ast_comment_t *comment) { - rbs_ast_declarations_class_t *instance = rbs_allocator_alloc(allocator, rbs_ast_declarations_class_t); + rbs_ast_declarations_class_t *instance = rbs_alloc(allocator, rbs_ast_declarations_class_t); *instance = (rbs_ast_declarations_class_t) { .base = (rbs_node_t) { @@ -361,7 +363,7 @@ rbs_ast_declarations_class_t *rbs_ast_declarations_class_new(rbs_allocator_t *al } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_declarations_class_super_t *rbs_ast_declarations_class_super_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *name, rbs_node_list_t *args) { - rbs_ast_declarations_class_super_t *instance = rbs_allocator_alloc(allocator, rbs_ast_declarations_class_super_t); + rbs_ast_declarations_class_super_t *instance = rbs_alloc(allocator, rbs_ast_declarations_class_super_t); *instance = (rbs_ast_declarations_class_super_t) { .base = (rbs_node_t) { @@ -376,7 +378,7 @@ rbs_ast_declarations_class_super_t *rbs_ast_declarations_class_super_new(rbs_all } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_declarations_class_alias_t *rbs_ast_declarations_class_alias_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *new_name, rbs_type_name_t *old_name, rbs_ast_comment_t *comment, rbs_node_list_t *annotations) { - rbs_ast_declarations_class_alias_t *instance = rbs_allocator_alloc(allocator, rbs_ast_declarations_class_alias_t); + rbs_ast_declarations_class_alias_t *instance = rbs_alloc(allocator, rbs_ast_declarations_class_alias_t); *instance = (rbs_ast_declarations_class_alias_t) { .base = (rbs_node_t) { @@ -393,7 +395,7 @@ rbs_ast_declarations_class_alias_t *rbs_ast_declarations_class_alias_new(rbs_all } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_declarations_constant_t *rbs_ast_declarations_constant_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *name, rbs_node_t *type, rbs_ast_comment_t *comment, rbs_node_list_t *annotations) { - rbs_ast_declarations_constant_t *instance = rbs_allocator_alloc(allocator, rbs_ast_declarations_constant_t); + rbs_ast_declarations_constant_t *instance = rbs_alloc(allocator, rbs_ast_declarations_constant_t); *instance = (rbs_ast_declarations_constant_t) { .base = (rbs_node_t) { @@ -410,7 +412,7 @@ rbs_ast_declarations_constant_t *rbs_ast_declarations_constant_new(rbs_allocator } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_declarations_global_t *rbs_ast_declarations_global_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_ast_symbol_t *name, rbs_node_t *type, rbs_ast_comment_t *comment, rbs_node_list_t *annotations) { - rbs_ast_declarations_global_t *instance = rbs_allocator_alloc(allocator, rbs_ast_declarations_global_t); + rbs_ast_declarations_global_t *instance = rbs_alloc(allocator, rbs_ast_declarations_global_t); *instance = (rbs_ast_declarations_global_t) { .base = (rbs_node_t) { @@ -427,7 +429,7 @@ rbs_ast_declarations_global_t *rbs_ast_declarations_global_new(rbs_allocator_t * } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_declarations_interface_t *rbs_ast_declarations_interface_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *name, rbs_node_list_t *type_params, rbs_node_list_t *members, rbs_node_list_t *annotations, rbs_ast_comment_t *comment) { - rbs_ast_declarations_interface_t *instance = rbs_allocator_alloc(allocator, rbs_ast_declarations_interface_t); + rbs_ast_declarations_interface_t *instance = rbs_alloc(allocator, rbs_ast_declarations_interface_t); *instance = (rbs_ast_declarations_interface_t) { .base = (rbs_node_t) { @@ -445,7 +447,7 @@ rbs_ast_declarations_interface_t *rbs_ast_declarations_interface_new(rbs_allocat } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_declarations_module_t *rbs_ast_declarations_module_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *name, rbs_node_list_t *type_params, rbs_node_list_t *self_types, rbs_node_list_t *members, rbs_node_list_t *annotations, rbs_ast_comment_t *comment) { - rbs_ast_declarations_module_t *instance = rbs_allocator_alloc(allocator, rbs_ast_declarations_module_t); + rbs_ast_declarations_module_t *instance = rbs_alloc(allocator, rbs_ast_declarations_module_t); *instance = (rbs_ast_declarations_module_t) { .base = (rbs_node_t) { @@ -464,7 +466,7 @@ rbs_ast_declarations_module_t *rbs_ast_declarations_module_new(rbs_allocator_t * } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_declarations_module_self_t *rbs_ast_declarations_module_self_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *name, rbs_node_list_t *args) { - rbs_ast_declarations_module_self_t *instance = rbs_allocator_alloc(allocator, rbs_ast_declarations_module_self_t); + rbs_ast_declarations_module_self_t *instance = rbs_alloc(allocator, rbs_ast_declarations_module_self_t); *instance = (rbs_ast_declarations_module_self_t) { .base = (rbs_node_t) { @@ -479,7 +481,7 @@ rbs_ast_declarations_module_self_t *rbs_ast_declarations_module_self_new(rbs_all } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_declarations_module_alias_t *rbs_ast_declarations_module_alias_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *new_name, rbs_type_name_t *old_name, rbs_ast_comment_t *comment, rbs_node_list_t *annotations) { - rbs_ast_declarations_module_alias_t *instance = rbs_allocator_alloc(allocator, rbs_ast_declarations_module_alias_t); + rbs_ast_declarations_module_alias_t *instance = rbs_alloc(allocator, rbs_ast_declarations_module_alias_t); *instance = (rbs_ast_declarations_module_alias_t) { .base = (rbs_node_t) { @@ -496,7 +498,7 @@ rbs_ast_declarations_module_alias_t *rbs_ast_declarations_module_alias_new(rbs_a } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_declarations_type_alias_t *rbs_ast_declarations_type_alias_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *name, rbs_node_list_t *type_params, rbs_node_t *type, rbs_node_list_t *annotations, rbs_ast_comment_t *comment) { - rbs_ast_declarations_type_alias_t *instance = rbs_allocator_alloc(allocator, rbs_ast_declarations_type_alias_t); + rbs_ast_declarations_type_alias_t *instance = rbs_alloc(allocator, rbs_ast_declarations_type_alias_t); *instance = (rbs_ast_declarations_type_alias_t) { .base = (rbs_node_t) { @@ -514,7 +516,7 @@ rbs_ast_declarations_type_alias_t *rbs_ast_declarations_type_alias_new(rbs_alloc } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_directives_use_t *rbs_ast_directives_use_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_list_t *clauses) { - rbs_ast_directives_use_t *instance = rbs_allocator_alloc(allocator, rbs_ast_directives_use_t); + rbs_ast_directives_use_t *instance = rbs_alloc(allocator, rbs_ast_directives_use_t); *instance = (rbs_ast_directives_use_t) { .base = (rbs_node_t) { @@ -528,7 +530,7 @@ rbs_ast_directives_use_t *rbs_ast_directives_use_new(rbs_allocator_t *allocator, } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_directives_use_single_clause_t *rbs_ast_directives_use_single_clause_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *type_name, rbs_ast_symbol_t *new_name) { - rbs_ast_directives_use_single_clause_t *instance = rbs_allocator_alloc(allocator, rbs_ast_directives_use_single_clause_t); + rbs_ast_directives_use_single_clause_t *instance = rbs_alloc(allocator, rbs_ast_directives_use_single_clause_t); *instance = (rbs_ast_directives_use_single_clause_t) { .base = (rbs_node_t) { @@ -543,7 +545,7 @@ rbs_ast_directives_use_single_clause_t *rbs_ast_directives_use_single_clause_new } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_directives_use_wildcard_clause_t *rbs_ast_directives_use_wildcard_clause_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_namespace_t *rbs_namespace) { - rbs_ast_directives_use_wildcard_clause_t *instance = rbs_allocator_alloc(allocator, rbs_ast_directives_use_wildcard_clause_t); + rbs_ast_directives_use_wildcard_clause_t *instance = rbs_alloc(allocator, rbs_ast_directives_use_wildcard_clause_t); *instance = (rbs_ast_directives_use_wildcard_clause_t) { .base = (rbs_node_t) { @@ -557,7 +559,7 @@ rbs_ast_directives_use_wildcard_clause_t *rbs_ast_directives_use_wildcard_clause } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_integer_t *rbs_ast_integer_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_string_t string_representation) { - rbs_ast_integer_t *instance = rbs_allocator_alloc(allocator, rbs_ast_integer_t); + rbs_ast_integer_t *instance = rbs_alloc(allocator, rbs_ast_integer_t); *instance = (rbs_ast_integer_t) { .base = (rbs_node_t) { @@ -571,7 +573,7 @@ rbs_ast_integer_t *rbs_ast_integer_new(rbs_allocator_t *allocator, rbs_location_ } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_members_alias_t *rbs_ast_members_alias_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_ast_symbol_t *new_name, rbs_ast_symbol_t *old_name, rbs_keyword_t *kind, rbs_node_list_t *annotations, rbs_ast_comment_t *comment) { - rbs_ast_members_alias_t *instance = rbs_allocator_alloc(allocator, rbs_ast_members_alias_t); + rbs_ast_members_alias_t *instance = rbs_alloc(allocator, rbs_ast_members_alias_t); *instance = (rbs_ast_members_alias_t) { .base = (rbs_node_t) { @@ -589,7 +591,7 @@ rbs_ast_members_alias_t *rbs_ast_members_alias_new(rbs_allocator_t *allocator, r } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_members_attr_accessor_t *rbs_ast_members_attr_accessor_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_ast_symbol_t *name, rbs_node_t *type, rbs_node_t *ivar_name, rbs_keyword_t *kind, rbs_node_list_t *annotations, rbs_ast_comment_t *comment, rbs_keyword_t *visibility) { - rbs_ast_members_attr_accessor_t *instance = rbs_allocator_alloc(allocator, rbs_ast_members_attr_accessor_t); + rbs_ast_members_attr_accessor_t *instance = rbs_alloc(allocator, rbs_ast_members_attr_accessor_t); *instance = (rbs_ast_members_attr_accessor_t) { .base = (rbs_node_t) { @@ -609,7 +611,7 @@ rbs_ast_members_attr_accessor_t *rbs_ast_members_attr_accessor_new(rbs_allocator } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_members_attr_reader_t *rbs_ast_members_attr_reader_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_ast_symbol_t *name, rbs_node_t *type, rbs_node_t *ivar_name, rbs_keyword_t *kind, rbs_node_list_t *annotations, rbs_ast_comment_t *comment, rbs_keyword_t *visibility) { - rbs_ast_members_attr_reader_t *instance = rbs_allocator_alloc(allocator, rbs_ast_members_attr_reader_t); + rbs_ast_members_attr_reader_t *instance = rbs_alloc(allocator, rbs_ast_members_attr_reader_t); *instance = (rbs_ast_members_attr_reader_t) { .base = (rbs_node_t) { @@ -629,7 +631,7 @@ rbs_ast_members_attr_reader_t *rbs_ast_members_attr_reader_new(rbs_allocator_t * } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_members_attr_writer_t *rbs_ast_members_attr_writer_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_ast_symbol_t *name, rbs_node_t *type, rbs_node_t *ivar_name, rbs_keyword_t *kind, rbs_node_list_t *annotations, rbs_ast_comment_t *comment, rbs_keyword_t *visibility) { - rbs_ast_members_attr_writer_t *instance = rbs_allocator_alloc(allocator, rbs_ast_members_attr_writer_t); + rbs_ast_members_attr_writer_t *instance = rbs_alloc(allocator, rbs_ast_members_attr_writer_t); *instance = (rbs_ast_members_attr_writer_t) { .base = (rbs_node_t) { @@ -649,7 +651,7 @@ rbs_ast_members_attr_writer_t *rbs_ast_members_attr_writer_new(rbs_allocator_t * } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_members_class_instance_variable_t *rbs_ast_members_class_instance_variable_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_ast_symbol_t *name, rbs_node_t *type, rbs_ast_comment_t *comment) { - rbs_ast_members_class_instance_variable_t *instance = rbs_allocator_alloc(allocator, rbs_ast_members_class_instance_variable_t); + rbs_ast_members_class_instance_variable_t *instance = rbs_alloc(allocator, rbs_ast_members_class_instance_variable_t); *instance = (rbs_ast_members_class_instance_variable_t) { .base = (rbs_node_t) { @@ -665,7 +667,7 @@ rbs_ast_members_class_instance_variable_t *rbs_ast_members_class_instance_variab } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_members_class_variable_t *rbs_ast_members_class_variable_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_ast_symbol_t *name, rbs_node_t *type, rbs_ast_comment_t *comment) { - rbs_ast_members_class_variable_t *instance = rbs_allocator_alloc(allocator, rbs_ast_members_class_variable_t); + rbs_ast_members_class_variable_t *instance = rbs_alloc(allocator, rbs_ast_members_class_variable_t); *instance = (rbs_ast_members_class_variable_t) { .base = (rbs_node_t) { @@ -681,7 +683,7 @@ rbs_ast_members_class_variable_t *rbs_ast_members_class_variable_new(rbs_allocat } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_members_extend_t *rbs_ast_members_extend_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *name, rbs_node_list_t *args, rbs_node_list_t *annotations, rbs_ast_comment_t *comment) { - rbs_ast_members_extend_t *instance = rbs_allocator_alloc(allocator, rbs_ast_members_extend_t); + rbs_ast_members_extend_t *instance = rbs_alloc(allocator, rbs_ast_members_extend_t); *instance = (rbs_ast_members_extend_t) { .base = (rbs_node_t) { @@ -698,7 +700,7 @@ rbs_ast_members_extend_t *rbs_ast_members_extend_new(rbs_allocator_t *allocator, } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_members_include_t *rbs_ast_members_include_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *name, rbs_node_list_t *args, rbs_node_list_t *annotations, rbs_ast_comment_t *comment) { - rbs_ast_members_include_t *instance = rbs_allocator_alloc(allocator, rbs_ast_members_include_t); + rbs_ast_members_include_t *instance = rbs_alloc(allocator, rbs_ast_members_include_t); *instance = (rbs_ast_members_include_t) { .base = (rbs_node_t) { @@ -715,7 +717,7 @@ rbs_ast_members_include_t *rbs_ast_members_include_new(rbs_allocator_t *allocato } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_members_instance_variable_t *rbs_ast_members_instance_variable_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_ast_symbol_t *name, rbs_node_t *type, rbs_ast_comment_t *comment) { - rbs_ast_members_instance_variable_t *instance = rbs_allocator_alloc(allocator, rbs_ast_members_instance_variable_t); + rbs_ast_members_instance_variable_t *instance = rbs_alloc(allocator, rbs_ast_members_instance_variable_t); *instance = (rbs_ast_members_instance_variable_t) { .base = (rbs_node_t) { @@ -731,7 +733,7 @@ rbs_ast_members_instance_variable_t *rbs_ast_members_instance_variable_new(rbs_a } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_members_method_definition_t *rbs_ast_members_method_definition_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_ast_symbol_t *name, rbs_keyword_t *kind, rbs_node_list_t *overloads, rbs_node_list_t *annotations, rbs_ast_comment_t *comment, bool overloading, rbs_keyword_t *visibility) { - rbs_ast_members_method_definition_t *instance = rbs_allocator_alloc(allocator, rbs_ast_members_method_definition_t); + rbs_ast_members_method_definition_t *instance = rbs_alloc(allocator, rbs_ast_members_method_definition_t); *instance = (rbs_ast_members_method_definition_t) { .base = (rbs_node_t) { @@ -751,7 +753,7 @@ rbs_ast_members_method_definition_t *rbs_ast_members_method_definition_new(rbs_a } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_members_method_definition_overload_t *rbs_ast_members_method_definition_overload_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_list_t *annotations, rbs_node_t *method_type) { - rbs_ast_members_method_definition_overload_t *instance = rbs_allocator_alloc(allocator, rbs_ast_members_method_definition_overload_t); + rbs_ast_members_method_definition_overload_t *instance = rbs_alloc(allocator, rbs_ast_members_method_definition_overload_t); *instance = (rbs_ast_members_method_definition_overload_t) { .base = (rbs_node_t) { @@ -766,7 +768,7 @@ rbs_ast_members_method_definition_overload_t *rbs_ast_members_method_definition_ } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_members_prepend_t *rbs_ast_members_prepend_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *name, rbs_node_list_t *args, rbs_node_list_t *annotations, rbs_ast_comment_t *comment) { - rbs_ast_members_prepend_t *instance = rbs_allocator_alloc(allocator, rbs_ast_members_prepend_t); + rbs_ast_members_prepend_t *instance = rbs_alloc(allocator, rbs_ast_members_prepend_t); *instance = (rbs_ast_members_prepend_t) { .base = (rbs_node_t) { @@ -783,7 +785,7 @@ rbs_ast_members_prepend_t *rbs_ast_members_prepend_new(rbs_allocator_t *allocato } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_members_private_t *rbs_ast_members_private_new(rbs_allocator_t *allocator, rbs_location_t *location) { - rbs_ast_members_private_t *instance = rbs_allocator_alloc(allocator, rbs_ast_members_private_t); + rbs_ast_members_private_t *instance = rbs_alloc(allocator, rbs_ast_members_private_t); *instance = (rbs_ast_members_private_t) { .base = (rbs_node_t) { @@ -796,7 +798,7 @@ rbs_ast_members_private_t *rbs_ast_members_private_new(rbs_allocator_t *allocato } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_members_public_t *rbs_ast_members_public_new(rbs_allocator_t *allocator, rbs_location_t *location) { - rbs_ast_members_public_t *instance = rbs_allocator_alloc(allocator, rbs_ast_members_public_t); + rbs_ast_members_public_t *instance = rbs_alloc(allocator, rbs_ast_members_public_t); *instance = (rbs_ast_members_public_t) { .base = (rbs_node_t) { @@ -809,7 +811,7 @@ rbs_ast_members_public_t *rbs_ast_members_public_new(rbs_allocator_t *allocator, } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_ruby_annotations_class_alias_annotation_t *rbs_ast_ruby_annotations_class_alias_annotation_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_location_t *prefix_location, rbs_location_t *keyword_location, rbs_type_name_t *type_name, rbs_location_t *type_name_location) { - rbs_ast_ruby_annotations_class_alias_annotation_t *instance = rbs_allocator_alloc(allocator, rbs_ast_ruby_annotations_class_alias_annotation_t); + rbs_ast_ruby_annotations_class_alias_annotation_t *instance = rbs_alloc(allocator, rbs_ast_ruby_annotations_class_alias_annotation_t); *instance = (rbs_ast_ruby_annotations_class_alias_annotation_t) { .base = (rbs_node_t) { @@ -826,7 +828,7 @@ rbs_ast_ruby_annotations_class_alias_annotation_t *rbs_ast_ruby_annotations_clas } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_ruby_annotations_colon_method_type_annotation_t *rbs_ast_ruby_annotations_colon_method_type_annotation_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_location_t *prefix_location, rbs_node_list_t *annotations, rbs_node_t *method_type) { - rbs_ast_ruby_annotations_colon_method_type_annotation_t *instance = rbs_allocator_alloc(allocator, rbs_ast_ruby_annotations_colon_method_type_annotation_t); + rbs_ast_ruby_annotations_colon_method_type_annotation_t *instance = rbs_alloc(allocator, rbs_ast_ruby_annotations_colon_method_type_annotation_t); *instance = (rbs_ast_ruby_annotations_colon_method_type_annotation_t) { .base = (rbs_node_t) { @@ -842,7 +844,7 @@ rbs_ast_ruby_annotations_colon_method_type_annotation_t *rbs_ast_ruby_annotation } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_ruby_annotations_instance_variable_annotation_t *rbs_ast_ruby_annotations_instance_variable_annotation_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_location_t *prefix_location, rbs_ast_symbol_t *ivar_name, rbs_location_t *ivar_name_location, rbs_location_t *colon_location, rbs_node_t *type, rbs_location_t *comment_location) { - rbs_ast_ruby_annotations_instance_variable_annotation_t *instance = rbs_allocator_alloc(allocator, rbs_ast_ruby_annotations_instance_variable_annotation_t); + rbs_ast_ruby_annotations_instance_variable_annotation_t *instance = rbs_alloc(allocator, rbs_ast_ruby_annotations_instance_variable_annotation_t); *instance = (rbs_ast_ruby_annotations_instance_variable_annotation_t) { .base = (rbs_node_t) { @@ -861,7 +863,7 @@ rbs_ast_ruby_annotations_instance_variable_annotation_t *rbs_ast_ruby_annotation } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_ruby_annotations_method_types_annotation_t *rbs_ast_ruby_annotations_method_types_annotation_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_location_t *prefix_location, rbs_node_list_t *overloads, rbs_location_list_t *vertical_bar_locations) { - rbs_ast_ruby_annotations_method_types_annotation_t *instance = rbs_allocator_alloc(allocator, rbs_ast_ruby_annotations_method_types_annotation_t); + rbs_ast_ruby_annotations_method_types_annotation_t *instance = rbs_alloc(allocator, rbs_ast_ruby_annotations_method_types_annotation_t); *instance = (rbs_ast_ruby_annotations_method_types_annotation_t) { .base = (rbs_node_t) { @@ -877,7 +879,7 @@ rbs_ast_ruby_annotations_method_types_annotation_t *rbs_ast_ruby_annotations_met } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_ruby_annotations_module_alias_annotation_t *rbs_ast_ruby_annotations_module_alias_annotation_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_location_t *prefix_location, rbs_location_t *keyword_location, rbs_type_name_t *type_name, rbs_location_t *type_name_location) { - rbs_ast_ruby_annotations_module_alias_annotation_t *instance = rbs_allocator_alloc(allocator, rbs_ast_ruby_annotations_module_alias_annotation_t); + rbs_ast_ruby_annotations_module_alias_annotation_t *instance = rbs_alloc(allocator, rbs_ast_ruby_annotations_module_alias_annotation_t); *instance = (rbs_ast_ruby_annotations_module_alias_annotation_t) { .base = (rbs_node_t) { @@ -894,7 +896,7 @@ rbs_ast_ruby_annotations_module_alias_annotation_t *rbs_ast_ruby_annotations_mod } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_ruby_annotations_node_type_assertion_t *rbs_ast_ruby_annotations_node_type_assertion_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_location_t *prefix_location, rbs_node_t *type) { - rbs_ast_ruby_annotations_node_type_assertion_t *instance = rbs_allocator_alloc(allocator, rbs_ast_ruby_annotations_node_type_assertion_t); + rbs_ast_ruby_annotations_node_type_assertion_t *instance = rbs_alloc(allocator, rbs_ast_ruby_annotations_node_type_assertion_t); *instance = (rbs_ast_ruby_annotations_node_type_assertion_t) { .base = (rbs_node_t) { @@ -909,7 +911,7 @@ rbs_ast_ruby_annotations_node_type_assertion_t *rbs_ast_ruby_annotations_node_ty } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_ruby_annotations_return_type_annotation_t *rbs_ast_ruby_annotations_return_type_annotation_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_location_t *prefix_location, rbs_location_t *return_location, rbs_location_t *colon_location, rbs_node_t *return_type, rbs_location_t *comment_location) { - rbs_ast_ruby_annotations_return_type_annotation_t *instance = rbs_allocator_alloc(allocator, rbs_ast_ruby_annotations_return_type_annotation_t); + rbs_ast_ruby_annotations_return_type_annotation_t *instance = rbs_alloc(allocator, rbs_ast_ruby_annotations_return_type_annotation_t); *instance = (rbs_ast_ruby_annotations_return_type_annotation_t) { .base = (rbs_node_t) { @@ -927,7 +929,7 @@ rbs_ast_ruby_annotations_return_type_annotation_t *rbs_ast_ruby_annotations_retu } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_ruby_annotations_skip_annotation_t *rbs_ast_ruby_annotations_skip_annotation_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_location_t *prefix_location, rbs_location_t *skip_location, rbs_location_t *comment_location) { - rbs_ast_ruby_annotations_skip_annotation_t *instance = rbs_allocator_alloc(allocator, rbs_ast_ruby_annotations_skip_annotation_t); + rbs_ast_ruby_annotations_skip_annotation_t *instance = rbs_alloc(allocator, rbs_ast_ruby_annotations_skip_annotation_t); *instance = (rbs_ast_ruby_annotations_skip_annotation_t) { .base = (rbs_node_t) { @@ -943,7 +945,7 @@ rbs_ast_ruby_annotations_skip_annotation_t *rbs_ast_ruby_annotations_skip_annota } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_ruby_annotations_type_application_annotation_t *rbs_ast_ruby_annotations_type_application_annotation_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_location_t *prefix_location, rbs_node_list_t *type_args, rbs_location_t *close_bracket_location, rbs_location_list_t *comma_locations) { - rbs_ast_ruby_annotations_type_application_annotation_t *instance = rbs_allocator_alloc(allocator, rbs_ast_ruby_annotations_type_application_annotation_t); + rbs_ast_ruby_annotations_type_application_annotation_t *instance = rbs_alloc(allocator, rbs_ast_ruby_annotations_type_application_annotation_t); *instance = (rbs_ast_ruby_annotations_type_application_annotation_t) { .base = (rbs_node_t) { @@ -960,7 +962,7 @@ rbs_ast_ruby_annotations_type_application_annotation_t *rbs_ast_ruby_annotations } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_string_t *rbs_ast_string_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_string_t string) { - rbs_ast_string_t *instance = rbs_allocator_alloc(allocator, rbs_ast_string_t); + rbs_ast_string_t *instance = rbs_alloc(allocator, rbs_ast_string_t); *instance = (rbs_ast_string_t) { .base = (rbs_node_t) { @@ -974,7 +976,7 @@ rbs_ast_string_t *rbs_ast_string_new(rbs_allocator_t *allocator, rbs_location_t } #line 156 "prism/templates/src/ast.c.erb" rbs_ast_type_param_t *rbs_ast_type_param_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_ast_symbol_t *name, rbs_keyword_t *variance, rbs_node_t *upper_bound, rbs_node_t *lower_bound, rbs_node_t *default_type, bool unchecked) { - rbs_ast_type_param_t *instance = rbs_allocator_alloc(allocator, rbs_ast_type_param_t); + rbs_ast_type_param_t *instance = rbs_alloc(allocator, rbs_ast_type_param_t); *instance = (rbs_ast_type_param_t) { .base = (rbs_node_t) { @@ -993,7 +995,7 @@ rbs_ast_type_param_t *rbs_ast_type_param_new(rbs_allocator_t *allocator, rbs_loc } #line 156 "prism/templates/src/ast.c.erb" rbs_method_type_t *rbs_method_type_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_list_t *type_params, rbs_node_t *type, rbs_types_block_t *block) { - rbs_method_type_t *instance = rbs_allocator_alloc(allocator, rbs_method_type_t); + rbs_method_type_t *instance = rbs_alloc(allocator, rbs_method_type_t); *instance = (rbs_method_type_t) { .base = (rbs_node_t) { @@ -1009,7 +1011,7 @@ rbs_method_type_t *rbs_method_type_new(rbs_allocator_t *allocator, rbs_location_ } #line 156 "prism/templates/src/ast.c.erb" rbs_namespace_t *rbs_namespace_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_list_t *path, bool absolute) { - rbs_namespace_t *instance = rbs_allocator_alloc(allocator, rbs_namespace_t); + rbs_namespace_t *instance = rbs_alloc(allocator, rbs_namespace_t); *instance = (rbs_namespace_t) { .base = (rbs_node_t) { @@ -1024,7 +1026,7 @@ rbs_namespace_t *rbs_namespace_new(rbs_allocator_t *allocator, rbs_location_t *l } #line 156 "prism/templates/src/ast.c.erb" rbs_signature_t *rbs_signature_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_list_t *directives, rbs_node_list_t *declarations) { - rbs_signature_t *instance = rbs_allocator_alloc(allocator, rbs_signature_t); + rbs_signature_t *instance = rbs_alloc(allocator, rbs_signature_t); *instance = (rbs_signature_t) { .base = (rbs_node_t) { @@ -1039,7 +1041,7 @@ rbs_signature_t *rbs_signature_new(rbs_allocator_t *allocator, rbs_location_t *l } #line 156 "prism/templates/src/ast.c.erb" rbs_type_name_t *rbs_type_name_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_namespace_t *rbs_namespace, rbs_ast_symbol_t *name) { - rbs_type_name_t *instance = rbs_allocator_alloc(allocator, rbs_type_name_t); + rbs_type_name_t *instance = rbs_alloc(allocator, rbs_type_name_t); *instance = (rbs_type_name_t) { .base = (rbs_node_t) { @@ -1054,7 +1056,7 @@ rbs_type_name_t *rbs_type_name_new(rbs_allocator_t *allocator, rbs_location_t *l } #line 156 "prism/templates/src/ast.c.erb" rbs_types_alias_t *rbs_types_alias_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *name, rbs_node_list_t *args) { - rbs_types_alias_t *instance = rbs_allocator_alloc(allocator, rbs_types_alias_t); + rbs_types_alias_t *instance = rbs_alloc(allocator, rbs_types_alias_t); *instance = (rbs_types_alias_t) { .base = (rbs_node_t) { @@ -1069,7 +1071,7 @@ rbs_types_alias_t *rbs_types_alias_new(rbs_allocator_t *allocator, rbs_location_ } #line 156 "prism/templates/src/ast.c.erb" rbs_types_bases_any_t *rbs_types_bases_any_new(rbs_allocator_t *allocator, rbs_location_t *location, bool todo) { - rbs_types_bases_any_t *instance = rbs_allocator_alloc(allocator, rbs_types_bases_any_t); + rbs_types_bases_any_t *instance = rbs_alloc(allocator, rbs_types_bases_any_t); *instance = (rbs_types_bases_any_t) { .base = (rbs_node_t) { @@ -1083,7 +1085,7 @@ rbs_types_bases_any_t *rbs_types_bases_any_new(rbs_allocator_t *allocator, rbs_l } #line 156 "prism/templates/src/ast.c.erb" rbs_types_bases_bool_t *rbs_types_bases_bool_new(rbs_allocator_t *allocator, rbs_location_t *location) { - rbs_types_bases_bool_t *instance = rbs_allocator_alloc(allocator, rbs_types_bases_bool_t); + rbs_types_bases_bool_t *instance = rbs_alloc(allocator, rbs_types_bases_bool_t); *instance = (rbs_types_bases_bool_t) { .base = (rbs_node_t) { @@ -1096,7 +1098,7 @@ rbs_types_bases_bool_t *rbs_types_bases_bool_new(rbs_allocator_t *allocator, rbs } #line 156 "prism/templates/src/ast.c.erb" rbs_types_bases_bottom_t *rbs_types_bases_bottom_new(rbs_allocator_t *allocator, rbs_location_t *location) { - rbs_types_bases_bottom_t *instance = rbs_allocator_alloc(allocator, rbs_types_bases_bottom_t); + rbs_types_bases_bottom_t *instance = rbs_alloc(allocator, rbs_types_bases_bottom_t); *instance = (rbs_types_bases_bottom_t) { .base = (rbs_node_t) { @@ -1109,7 +1111,7 @@ rbs_types_bases_bottom_t *rbs_types_bases_bottom_new(rbs_allocator_t *allocator, } #line 156 "prism/templates/src/ast.c.erb" rbs_types_bases_class_t *rbs_types_bases_class_new(rbs_allocator_t *allocator, rbs_location_t *location) { - rbs_types_bases_class_t *instance = rbs_allocator_alloc(allocator, rbs_types_bases_class_t); + rbs_types_bases_class_t *instance = rbs_alloc(allocator, rbs_types_bases_class_t); *instance = (rbs_types_bases_class_t) { .base = (rbs_node_t) { @@ -1122,7 +1124,7 @@ rbs_types_bases_class_t *rbs_types_bases_class_new(rbs_allocator_t *allocator, r } #line 156 "prism/templates/src/ast.c.erb" rbs_types_bases_instance_t *rbs_types_bases_instance_new(rbs_allocator_t *allocator, rbs_location_t *location) { - rbs_types_bases_instance_t *instance = rbs_allocator_alloc(allocator, rbs_types_bases_instance_t); + rbs_types_bases_instance_t *instance = rbs_alloc(allocator, rbs_types_bases_instance_t); *instance = (rbs_types_bases_instance_t) { .base = (rbs_node_t) { @@ -1135,7 +1137,7 @@ rbs_types_bases_instance_t *rbs_types_bases_instance_new(rbs_allocator_t *alloca } #line 156 "prism/templates/src/ast.c.erb" rbs_types_bases_nil_t *rbs_types_bases_nil_new(rbs_allocator_t *allocator, rbs_location_t *location) { - rbs_types_bases_nil_t *instance = rbs_allocator_alloc(allocator, rbs_types_bases_nil_t); + rbs_types_bases_nil_t *instance = rbs_alloc(allocator, rbs_types_bases_nil_t); *instance = (rbs_types_bases_nil_t) { .base = (rbs_node_t) { @@ -1148,7 +1150,7 @@ rbs_types_bases_nil_t *rbs_types_bases_nil_new(rbs_allocator_t *allocator, rbs_l } #line 156 "prism/templates/src/ast.c.erb" rbs_types_bases_self_t *rbs_types_bases_self_new(rbs_allocator_t *allocator, rbs_location_t *location) { - rbs_types_bases_self_t *instance = rbs_allocator_alloc(allocator, rbs_types_bases_self_t); + rbs_types_bases_self_t *instance = rbs_alloc(allocator, rbs_types_bases_self_t); *instance = (rbs_types_bases_self_t) { .base = (rbs_node_t) { @@ -1161,7 +1163,7 @@ rbs_types_bases_self_t *rbs_types_bases_self_new(rbs_allocator_t *allocator, rbs } #line 156 "prism/templates/src/ast.c.erb" rbs_types_bases_top_t *rbs_types_bases_top_new(rbs_allocator_t *allocator, rbs_location_t *location) { - rbs_types_bases_top_t *instance = rbs_allocator_alloc(allocator, rbs_types_bases_top_t); + rbs_types_bases_top_t *instance = rbs_alloc(allocator, rbs_types_bases_top_t); *instance = (rbs_types_bases_top_t) { .base = (rbs_node_t) { @@ -1174,7 +1176,7 @@ rbs_types_bases_top_t *rbs_types_bases_top_new(rbs_allocator_t *allocator, rbs_l } #line 156 "prism/templates/src/ast.c.erb" rbs_types_bases_void_t *rbs_types_bases_void_new(rbs_allocator_t *allocator, rbs_location_t *location) { - rbs_types_bases_void_t *instance = rbs_allocator_alloc(allocator, rbs_types_bases_void_t); + rbs_types_bases_void_t *instance = rbs_alloc(allocator, rbs_types_bases_void_t); *instance = (rbs_types_bases_void_t) { .base = (rbs_node_t) { @@ -1187,7 +1189,7 @@ rbs_types_bases_void_t *rbs_types_bases_void_new(rbs_allocator_t *allocator, rbs } #line 156 "prism/templates/src/ast.c.erb" rbs_types_block_t *rbs_types_block_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_t *type, bool required, rbs_node_t *self_type) { - rbs_types_block_t *instance = rbs_allocator_alloc(allocator, rbs_types_block_t); + rbs_types_block_t *instance = rbs_alloc(allocator, rbs_types_block_t); *instance = (rbs_types_block_t) { .base = (rbs_node_t) { @@ -1203,7 +1205,7 @@ rbs_types_block_t *rbs_types_block_new(rbs_allocator_t *allocator, rbs_location_ } #line 156 "prism/templates/src/ast.c.erb" rbs_types_class_instance_t *rbs_types_class_instance_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *name, rbs_node_list_t *args) { - rbs_types_class_instance_t *instance = rbs_allocator_alloc(allocator, rbs_types_class_instance_t); + rbs_types_class_instance_t *instance = rbs_alloc(allocator, rbs_types_class_instance_t); *instance = (rbs_types_class_instance_t) { .base = (rbs_node_t) { @@ -1218,7 +1220,7 @@ rbs_types_class_instance_t *rbs_types_class_instance_new(rbs_allocator_t *alloca } #line 156 "prism/templates/src/ast.c.erb" rbs_types_class_singleton_t *rbs_types_class_singleton_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *name) { - rbs_types_class_singleton_t *instance = rbs_allocator_alloc(allocator, rbs_types_class_singleton_t); + rbs_types_class_singleton_t *instance = rbs_alloc(allocator, rbs_types_class_singleton_t); *instance = (rbs_types_class_singleton_t) { .base = (rbs_node_t) { @@ -1232,7 +1234,7 @@ rbs_types_class_singleton_t *rbs_types_class_singleton_new(rbs_allocator_t *allo } #line 156 "prism/templates/src/ast.c.erb" rbs_types_function_t *rbs_types_function_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_list_t *required_positionals, rbs_node_list_t *optional_positionals, rbs_node_t *rest_positionals, rbs_node_list_t *trailing_positionals, rbs_hash_t *required_keywords, rbs_hash_t *optional_keywords, rbs_node_t *rest_keywords, rbs_node_t *return_type) { - rbs_types_function_t *instance = rbs_allocator_alloc(allocator, rbs_types_function_t); + rbs_types_function_t *instance = rbs_alloc(allocator, rbs_types_function_t); *instance = (rbs_types_function_t) { .base = (rbs_node_t) { @@ -1253,7 +1255,7 @@ rbs_types_function_t *rbs_types_function_new(rbs_allocator_t *allocator, rbs_loc } #line 156 "prism/templates/src/ast.c.erb" rbs_types_function_param_t *rbs_types_function_param_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_t *type, rbs_ast_symbol_t *name) { - rbs_types_function_param_t *instance = rbs_allocator_alloc(allocator, rbs_types_function_param_t); + rbs_types_function_param_t *instance = rbs_alloc(allocator, rbs_types_function_param_t); *instance = (rbs_types_function_param_t) { .base = (rbs_node_t) { @@ -1268,7 +1270,7 @@ rbs_types_function_param_t *rbs_types_function_param_new(rbs_allocator_t *alloca } #line 156 "prism/templates/src/ast.c.erb" rbs_types_interface_t *rbs_types_interface_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_type_name_t *name, rbs_node_list_t *args) { - rbs_types_interface_t *instance = rbs_allocator_alloc(allocator, rbs_types_interface_t); + rbs_types_interface_t *instance = rbs_alloc(allocator, rbs_types_interface_t); *instance = (rbs_types_interface_t) { .base = (rbs_node_t) { @@ -1283,7 +1285,7 @@ rbs_types_interface_t *rbs_types_interface_new(rbs_allocator_t *allocator, rbs_l } #line 156 "prism/templates/src/ast.c.erb" rbs_types_intersection_t *rbs_types_intersection_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_list_t *types) { - rbs_types_intersection_t *instance = rbs_allocator_alloc(allocator, rbs_types_intersection_t); + rbs_types_intersection_t *instance = rbs_alloc(allocator, rbs_types_intersection_t); *instance = (rbs_types_intersection_t) { .base = (rbs_node_t) { @@ -1297,7 +1299,7 @@ rbs_types_intersection_t *rbs_types_intersection_new(rbs_allocator_t *allocator, } #line 156 "prism/templates/src/ast.c.erb" rbs_types_literal_t *rbs_types_literal_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_t *literal) { - rbs_types_literal_t *instance = rbs_allocator_alloc(allocator, rbs_types_literal_t); + rbs_types_literal_t *instance = rbs_alloc(allocator, rbs_types_literal_t); *instance = (rbs_types_literal_t) { .base = (rbs_node_t) { @@ -1311,7 +1313,7 @@ rbs_types_literal_t *rbs_types_literal_new(rbs_allocator_t *allocator, rbs_locat } #line 156 "prism/templates/src/ast.c.erb" rbs_types_optional_t *rbs_types_optional_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_t *type) { - rbs_types_optional_t *instance = rbs_allocator_alloc(allocator, rbs_types_optional_t); + rbs_types_optional_t *instance = rbs_alloc(allocator, rbs_types_optional_t); *instance = (rbs_types_optional_t) { .base = (rbs_node_t) { @@ -1325,7 +1327,7 @@ rbs_types_optional_t *rbs_types_optional_new(rbs_allocator_t *allocator, rbs_loc } #line 156 "prism/templates/src/ast.c.erb" rbs_types_proc_t *rbs_types_proc_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_t *type, rbs_types_block_t *block, rbs_node_t *self_type) { - rbs_types_proc_t *instance = rbs_allocator_alloc(allocator, rbs_types_proc_t); + rbs_types_proc_t *instance = rbs_alloc(allocator, rbs_types_proc_t); *instance = (rbs_types_proc_t) { .base = (rbs_node_t) { @@ -1341,7 +1343,7 @@ rbs_types_proc_t *rbs_types_proc_new(rbs_allocator_t *allocator, rbs_location_t } #line 156 "prism/templates/src/ast.c.erb" rbs_types_record_t *rbs_types_record_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_hash_t *all_fields) { - rbs_types_record_t *instance = rbs_allocator_alloc(allocator, rbs_types_record_t); + rbs_types_record_t *instance = rbs_alloc(allocator, rbs_types_record_t); *instance = (rbs_types_record_t) { .base = (rbs_node_t) { @@ -1355,7 +1357,7 @@ rbs_types_record_t *rbs_types_record_new(rbs_allocator_t *allocator, rbs_locatio } #line 156 "prism/templates/src/ast.c.erb" rbs_types_record_field_type_t *rbs_types_record_field_type_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_t *type, bool required) { - rbs_types_record_field_type_t *instance = rbs_allocator_alloc(allocator, rbs_types_record_field_type_t); + rbs_types_record_field_type_t *instance = rbs_alloc(allocator, rbs_types_record_field_type_t); *instance = (rbs_types_record_field_type_t) { .base = (rbs_node_t) { @@ -1370,7 +1372,7 @@ rbs_types_record_field_type_t *rbs_types_record_field_type_new(rbs_allocator_t * } #line 156 "prism/templates/src/ast.c.erb" rbs_types_tuple_t *rbs_types_tuple_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_list_t *types) { - rbs_types_tuple_t *instance = rbs_allocator_alloc(allocator, rbs_types_tuple_t); + rbs_types_tuple_t *instance = rbs_alloc(allocator, rbs_types_tuple_t); *instance = (rbs_types_tuple_t) { .base = (rbs_node_t) { @@ -1384,7 +1386,7 @@ rbs_types_tuple_t *rbs_types_tuple_new(rbs_allocator_t *allocator, rbs_location_ } #line 156 "prism/templates/src/ast.c.erb" rbs_types_union_t *rbs_types_union_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_list_t *types) { - rbs_types_union_t *instance = rbs_allocator_alloc(allocator, rbs_types_union_t); + rbs_types_union_t *instance = rbs_alloc(allocator, rbs_types_union_t); *instance = (rbs_types_union_t) { .base = (rbs_node_t) { @@ -1398,7 +1400,7 @@ rbs_types_union_t *rbs_types_union_new(rbs_allocator_t *allocator, rbs_location_ } #line 156 "prism/templates/src/ast.c.erb" rbs_types_untyped_function_t *rbs_types_untyped_function_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_node_t *return_type) { - rbs_types_untyped_function_t *instance = rbs_allocator_alloc(allocator, rbs_types_untyped_function_t); + rbs_types_untyped_function_t *instance = rbs_alloc(allocator, rbs_types_untyped_function_t); *instance = (rbs_types_untyped_function_t) { .base = (rbs_node_t) { @@ -1412,7 +1414,7 @@ rbs_types_untyped_function_t *rbs_types_untyped_function_new(rbs_allocator_t *al } #line 156 "prism/templates/src/ast.c.erb" rbs_types_variable_t *rbs_types_variable_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_ast_symbol_t *name) { - rbs_types_variable_t *instance = rbs_allocator_alloc(allocator, rbs_types_variable_t); + rbs_types_variable_t *instance = rbs_alloc(allocator, rbs_types_variable_t); *instance = (rbs_types_variable_t) { .base = (rbs_node_t) { diff --git a/src/location.c b/src/location.c index ad75a4ad0..afd057acf 100644 --- a/src/location.c +++ b/src/location.c @@ -10,9 +10,12 @@ void rbs_loc_alloc_children(rbs_allocator_t *allocator, rbs_location_t *loc, siz loc->children = rbs_allocator_malloc_impl(allocator, RBS_LOC_CHILDREN_SIZE(capacity), rbs_alignof(rbs_loc_children)); - loc->children->len = 0; - loc->children->required_p = 0; - loc->children->cap = capacity; + *loc->children = (rbs_loc_children) { + .len = 0, + .cap = capacity, + .required_p = 0, + .entries = { 0 }, + }; } void rbs_loc_add_optional_child(rbs_location_t *loc, rbs_constant_id_t name, rbs_range_t r) { @@ -20,8 +23,11 @@ void rbs_loc_add_optional_child(rbs_location_t *loc, rbs_constant_id_t name, rbs rbs_assert((loc->children->len + 1 <= loc->children->cap), "Not enough space was pre-allocated for the children. Children: %hu, Capacity: %hu", loc->children->len, loc->children->cap); unsigned short i = loc->children->len++; - loc->children->entries[i].name = name; - loc->children->entries[i].rg = (rbs_loc_range) { r.start.char_pos, r.end.char_pos }; + + loc->children->entries[i] = (rbs_loc_entry) { + .name = name, + .rg = (rbs_loc_range) { r.start.char_pos, r.end.char_pos }, + }; } void rbs_loc_add_required_child(rbs_location_t *loc, rbs_constant_id_t name, rbs_range_t r) { @@ -31,7 +37,7 @@ void rbs_loc_add_required_child(rbs_location_t *loc, rbs_constant_id_t name, rbs } rbs_location_t *rbs_location_new(rbs_allocator_t *allocator, rbs_range_t rg) { - rbs_location_t *location = rbs_allocator_alloc(allocator, rbs_location_t); + rbs_location_t *location = rbs_alloc(allocator, rbs_location_t); *location = (rbs_location_t) { .rg = rg, .children = NULL, @@ -41,7 +47,7 @@ rbs_location_t *rbs_location_new(rbs_allocator_t *allocator, rbs_range_t rg) { } rbs_location_list_t *rbs_location_list_new(rbs_allocator_t *allocator) { - rbs_location_list_t *list = rbs_allocator_alloc(allocator, rbs_location_list_t); + rbs_location_list_t *list = rbs_alloc(allocator, rbs_location_list_t); *list = (rbs_location_list_t) { .allocator = allocator, .head = NULL, @@ -53,7 +59,7 @@ rbs_location_list_t *rbs_location_list_new(rbs_allocator_t *allocator) { } void rbs_location_list_append(rbs_location_list_t *list, rbs_location_t *loc) { - rbs_location_list_node_t *node = rbs_allocator_alloc(list->allocator, rbs_location_list_node_t); + rbs_location_list_node_t *node = rbs_alloc(list->allocator, rbs_location_list_node_t); *node = (rbs_location_list_node_t) { .loc = loc, .next = NULL, diff --git a/src/parser.c b/src/parser.c index 0cbb4bf12..1e9bd5bd3 100644 --- a/src/parser.c +++ b/src/parser.c @@ -837,9 +837,12 @@ static bool parse_function(rbs_parser_t *parser, bool accept_type_binding, parse ); } - (*result)->function = function; - (*result)->block = block; - (*result)->function_self_type = function_self_type; + **result = (parse_function_result) { + .function = function, + .block = block, + .function_self_type = function_self_type, + }; + return true; } @@ -849,7 +852,7 @@ static bool parse_function(rbs_parser_t *parser, bool accept_type_binding, parse NODISCARD static bool parse_proc_type(rbs_parser_t *parser, rbs_types_proc_t **proc, bool self_allowed) { rbs_position_t start = parser->current_token.range.start; - parse_function_result *result = rbs_allocator_alloc(ALLOCATOR(), parse_function_result); + parse_function_result *result = rbs_alloc(ALLOCATOR(), parse_function_result); CHECK_PARSE(parse_function(parser, true, &result, self_allowed)); rbs_position_t end = parser->current_token.range.end; @@ -1563,7 +1566,7 @@ bool rbs_parse_method_type(rbs_parser_t *parser, rbs_method_type_t **method_type rbs_range_t type_range; type_range.start = parser->next_token.range.start; - parse_function_result *result = rbs_allocator_alloc(ALLOCATOR(), parse_function_result); + parse_function_result *result = rbs_alloc(ALLOCATOR(), parse_function_result); CHECK_PARSE(parse_function(parser, false, &result, true)); rg.end = parser->current_token.range.end; @@ -1787,8 +1790,10 @@ static bool parse_method_name(rbs_parser_t *parser, rbs_range_t *range, rbs_ast_ case tULLIDENT: KEYWORD_CASES if (parser->next_token.type == pQUESTION && parser->current_token.range.end.byte_pos == parser->next_token.range.start.byte_pos) { - range->start = parser->current_token.range.start; - range->end = parser->next_token.range.end; + *range = (rbs_range_t) { + .start = parser->current_token.range.start, + .end = parser->next_token.range.end, + }; rbs_parser_advance(parser); rbs_constant_id_t constant_id = rbs_constant_pool_insert_shared_with_encoding( @@ -3208,7 +3213,7 @@ static rbs_ast_comment_t *parse_comment_lines(rbs_parser_t *parser, rbs_comment_ rbs_buffer_init(ALLOCATOR(), &rbs_buffer); for (size_t i = 0; i < com->line_tokens_count; i++) { - rbs_token_t tok = com->line_tokens[i]; + rbs_token_t tok = rbs_buffer_get(com->line_tokens, i, rbs_token_t); const char *comment_start = parser->rbs_lexer_t->string.start + tok.range.start.byte_pos + hash_bytes; size_t comment_bytes = RBS_RANGE_BYTES(tok.range) - hash_bytes; @@ -3252,43 +3257,29 @@ static rbs_comment_t *comment_get_comment(rbs_comment_t *com, int line) { } static void comment_insert_new_line(rbs_allocator_t *allocator, rbs_comment_t *com, rbs_token_t comment_token) { - if (com->line_tokens_count == com->line_tokens_capacity) { - size_t old_size = com->line_tokens_capacity; - size_t new_size = old_size * 2; - com->line_tokens_capacity = new_size; - - com->line_tokens = rbs_allocator_realloc( - allocator, - com->line_tokens, - sizeof(rbs_token_t) * old_size, - sizeof(rbs_token_t) * new_size, - rbs_token_t - ); - } + rbs_buffer_append_value(allocator, &com->line_tokens, &comment_token, rbs_token_t); - com->line_tokens[com->line_tokens_count++] = comment_token; + com->line_tokens_count++; com->end = comment_token.range.end; } static rbs_comment_t *alloc_comment(rbs_allocator_t *allocator, rbs_token_t comment_token, rbs_comment_t *last_comment) { - rbs_comment_t *new_comment = rbs_allocator_alloc(allocator, rbs_comment_t); - - size_t initial_line_capacity = 10; - - rbs_token_t *tokens = rbs_allocator_calloc(allocator, initial_line_capacity, rbs_token_t); - tokens[0] = comment_token; + rbs_comment_t *new_comment = rbs_alloc(allocator, rbs_comment_t); *new_comment = (rbs_comment_t) { .start = comment_token.range.start, .end = comment_token.range.end, - .line_tokens_capacity = initial_line_capacity, - .line_tokens_count = 1, - .line_tokens = tokens, + .line_tokens_count = 0, + .line_tokens = { 0 }, .next_comment = last_comment, }; + size_t initial_line_capacity = 10; + rbs_buffer_init_with_capacity(allocator, &new_comment->line_tokens, initial_line_capacity * sizeof(rbs_token_t)); + comment_insert_new_line(allocator, new_comment, comment_token); + return new_comment; } @@ -3357,12 +3348,12 @@ bool rbs_parse_type_params(rbs_parser_t *parser, bool module_type_params, rbs_no } id_table *alloc_empty_table(rbs_allocator_t *allocator) { - id_table *table = rbs_allocator_alloc(allocator, id_table); + id_table *table = rbs_alloc(allocator, id_table); *table = (id_table) { .size = 10, .count = 0, - .ids = rbs_allocator_calloc(allocator, 10, rbs_constant_id_t), + .ids = rbs_calloc(allocator, 10, rbs_constant_id_t), .next = NULL, }; @@ -3370,7 +3361,7 @@ id_table *alloc_empty_table(rbs_allocator_t *allocator) { } id_table *alloc_reset_table(rbs_allocator_t *allocator) { - id_table *table = rbs_allocator_alloc(allocator, id_table); + id_table *table = rbs_alloc(allocator, id_table); *table = (id_table) { .size = 0, @@ -3407,7 +3398,7 @@ bool rbs_parser_insert_typevar(rbs_parser_t *parser, rbs_constant_id_t id) { // expand rbs_constant_id_t *ptr = table->ids; table->size += 10; - table->ids = rbs_allocator_calloc(ALLOCATOR(), table->size, rbs_constant_id_t); + table->ids = rbs_calloc(ALLOCATOR(), table->size, rbs_constant_id_t); memcpy(table->ids, ptr, sizeof(rbs_constant_id_t) * table->count); } @@ -3469,7 +3460,7 @@ rbs_ast_comment_t *rbs_parser_get_comment(rbs_parser_t *parser, int subject_line } rbs_lexer_t *rbs_lexer_new(rbs_allocator_t *allocator, rbs_string_t string, const rbs_encoding_t *encoding, int start_pos, int end_pos) { - rbs_lexer_t *lexer = rbs_allocator_alloc(allocator, rbs_lexer_t); + rbs_lexer_t *lexer = rbs_alloc(allocator, rbs_lexer_t); rbs_position_t start_position = (rbs_position_t) { .byte_pos = 0, @@ -3500,7 +3491,7 @@ rbs_parser_t *rbs_parser_new(rbs_string_t string, const rbs_encoding_t *encoding rbs_allocator_t *allocator = rbs_allocator_init(); rbs_lexer_t *lexer = rbs_lexer_new(allocator, string, encoding, start_pos, end_pos); - rbs_parser_t *parser = rbs_allocator_alloc(allocator, rbs_parser_t); + rbs_parser_t *parser = rbs_alloc(allocator, rbs_parser_t); *parser = (rbs_parser_t) { .rbs_lexer_t = lexer, @@ -3561,16 +3552,18 @@ void rbs_parser_set_error(rbs_parser_t *parser, rbs_token_t tok, bool syntax_err int length = vsnprintf(NULL, 0, fmt, args); va_end(args); - char *message = rbs_allocator_alloc_many(ALLOCATOR(), length + 1, char); + char *message = rbs_alloc_many(ALLOCATOR(), length + 1, char); va_start(args, fmt); vsnprintf(message, length + 1, fmt, args); va_end(args); - parser->error = rbs_allocator_alloc(ALLOCATOR(), rbs_error_t); - parser->error->token = tok; - parser->error->message = message; - parser->error->syntax_error = syntax_error; + parser->error = rbs_alloc(ALLOCATOR(), rbs_error_t); + *parser->error = (rbs_error_t) { + .message = message, + .token = tok, + .syntax_error = syntax_error, + }; } /* diff --git a/src/util/rbs_buffer.c b/src/util/rbs_buffer.c index 71421b975..7622380f9 100644 --- a/src/util/rbs_buffer.c +++ b/src/util/rbs_buffer.c @@ -1,13 +1,23 @@ #include "rbs/util/rbs_buffer.h" #include "rbs/util/rbs_assert.h" +/** + * The default capacity of a rbs_buffer_t. + * If the buffer needs to grow beyond this capacity, it will be doubled. + */ +#define RBS_BUFFER_DEFAULT_CAPACITY 128 + bool rbs_buffer_init(rbs_allocator_t *allocator, rbs_buffer_t *buffer) { - size_t capacity = RBS_BUFFER_DEFAULT_CAPACITY; + return rbs_buffer_init_with_capacity(allocator, buffer, RBS_BUFFER_DEFAULT_CAPACITY); +} - buffer->length = 0; - buffer->capacity = capacity; +bool rbs_buffer_init_with_capacity(rbs_allocator_t *allocator, rbs_buffer_t *buffer, size_t capacity) { + *buffer = (rbs_buffer_t) { + .length = 0, + .capacity = capacity, + .value = rbs_calloc(allocator, capacity, char), + }; - buffer->value = rbs_allocator_calloc(allocator, capacity, char); return buffer->value != NULL; } @@ -33,7 +43,7 @@ void rbs_buffer_append_string(rbs_allocator_t *allocator, rbs_buffer_t *buffer, new_capacity *= 2; } - char *new_value = rbs_allocator_realloc(allocator, buffer->value, old_capacity, new_capacity, char); + char *new_value = rbs_realloc(allocator, buffer->value, old_capacity, new_capacity, char); rbs_assert(new_value != NULL, "Failed to append to buffer. Old capacity: %zu, new capacity: %zu", old_capacity, new_capacity); buffer->value = new_value; diff --git a/src/util/rbs_unescape.c b/src/util/rbs_unescape.c index 909c9c41d..e92fb727a 100644 --- a/src/util/rbs_unescape.c +++ b/src/util/rbs_unescape.c @@ -56,7 +56,7 @@ rbs_string_t unescape_string(rbs_allocator_t *allocator, const rbs_string_t stri size_t len = string.end - string.start; const char *input = string.start; - char *output = rbs_allocator_alloc_many(allocator, len + 1, char); + char *output = rbs_alloc_many(allocator, len + 1, char); if (!output) return RBS_STRING_NULL; size_t i = 0, j = 0; diff --git a/templates/src/ast.c.erb b/templates/src/ast.c.erb index 9c98b2373..aca7f2b41 100644 --- a/templates/src/ast.c.erb +++ b/templates/src/ast.c.erb @@ -20,7 +20,7 @@ const char *rbs_node_type_name(rbs_node_t *node) { /* rbs_node_list */ rbs_node_list_t *rbs_node_list_new(rbs_allocator_t *allocator) { - rbs_node_list_t *list = rbs_allocator_alloc(allocator, rbs_node_list_t); + rbs_node_list_t *list = rbs_alloc(allocator, rbs_node_list_t); *list = (rbs_node_list_t) { .allocator = allocator, .head = NULL, @@ -32,7 +32,7 @@ rbs_node_list_t *rbs_node_list_new(rbs_allocator_t *allocator) { } void rbs_node_list_append(rbs_node_list_t *list, rbs_node_t *node) { - rbs_node_list_node_t *new_node = rbs_allocator_alloc(list->allocator, rbs_node_list_node_t); + rbs_node_list_node_t *new_node = rbs_alloc(list->allocator, rbs_node_list_node_t); *new_node = (rbs_node_list_node_t) { .node = node, .next = NULL, @@ -52,7 +52,7 @@ void rbs_node_list_append(rbs_node_list_t *list, rbs_node_t *node) { /* rbs_hash */ rbs_hash_t *rbs_hash_new(rbs_allocator_t *allocator) { - rbs_hash_t *hash = rbs_allocator_alloc(allocator, rbs_hash_t); + rbs_hash_t *hash = rbs_alloc(allocator, rbs_hash_t); *hash = (rbs_hash_t) { .allocator = allocator, .head = NULL, @@ -104,10 +104,12 @@ void rbs_hash_set(rbs_hash_t *hash, rbs_node_t *key, rbs_node_t *value) { return; } - rbs_hash_node_t *new_node = rbs_allocator_alloc(hash->allocator, rbs_hash_node_t); - new_node->key = key; - new_node->value = value; - new_node->next = NULL; + rbs_hash_node_t *new_node = rbs_alloc(hash->allocator, rbs_hash_node_t); + *new_node = (rbs_hash_node_t) { + .key = key, + .value = value, + .next = NULL, + }; if (hash->tail == NULL) { hash->head = new_node; @@ -124,7 +126,7 @@ rbs_node_t *rbs_hash_get(rbs_hash_t *hash, rbs_node_t *key) { } rbs_keyword_t *rbs_keyword_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_constant_id_t constant_id) { - rbs_keyword_t *instance = rbs_allocator_alloc(allocator, rbs_keyword_t); + rbs_keyword_t *instance = rbs_alloc(allocator, rbs_keyword_t); *instance = (rbs_keyword_t) { .base = (rbs_node_t) { @@ -138,7 +140,7 @@ rbs_keyword_t *rbs_keyword_new(rbs_allocator_t *allocator, rbs_location_t *locat } rbs_ast_symbol_t *rbs_ast_symbol_new(rbs_allocator_t *allocator, rbs_location_t *location, rbs_constant_pool_t *constant_pool, rbs_constant_id_t constant_id) { - rbs_ast_symbol_t *instance = rbs_allocator_alloc(allocator, rbs_ast_symbol_t); + rbs_ast_symbol_t *instance = rbs_alloc(allocator, rbs_ast_symbol_t); *instance = (rbs_ast_symbol_t) { .base = (rbs_node_t) { @@ -154,7 +156,7 @@ rbs_ast_symbol_t *rbs_ast_symbol_new(rbs_allocator_t *allocator, rbs_location_t <%- nodes.each do |node| -%> #line <%= __LINE__ + 1 %> "prism/templates/src/<%= File.basename(__FILE__) %>" <%= node.c_type_name %> *<%= node.c_constructor_function_name %>(<%= node.constructor_params.map(&:parameter_decl).join(", ") %>) { - <%= node.c_type_name %> *instance = rbs_allocator_alloc(allocator, <%= node.c_type_name %>); + <%= node.c_type_name %> *instance = rbs_alloc(allocator, <%= node.c_type_name %>); <%- node.fields.filter { |f| f.c_type == "VALUE" }.each do |f| -%> rb_gc_register_mark_object(<%= f.c_name %>); <%- end -%>