This commit is contained in:
2026-04-29 19:23:59 +02:00
parent 323a599399
commit cc25563cd2
2 changed files with 13 additions and 7 deletions
+3 -3
View File
@@ -11,7 +11,7 @@
typedef struct { typedef struct {
/** @brief The name of the module being imported. */ /** @brief The name of the module being imported. */
const char* module_name; char* module_name;
/** @brief Whether the import is public or not. */ /** @brief Whether the import is public or not. */
bool is_public; bool is_public;
@@ -53,7 +53,7 @@ struct TypeExpression{
*/ */
typedef struct { typedef struct {
/** @brief The name of the alias. */ /** @brief The name of the alias. */
const char* name; char* name;
/** @brief The value of the alias. */ /** @brief The value of the alias. */
TypeExpression value; TypeExpression value;
@@ -68,7 +68,7 @@ typedef struct {
*/ */
typedef struct { typedef struct {
/** @brief The name of the module. */ /** @brief The name of the module. */
const char* name; char* name;
/** @brief The list of imports in the module. */ /** @brief The list of imports in the module. */
ImportDeclaration* imports; ImportDeclaration* imports;
+10 -4
View File
@@ -224,6 +224,7 @@ Module* parser_parse(TokenStream* ts) {
parser_next_token(p); parser_next_token(p);
Module* module = malloc(sizeof(Module)); Module* module = malloc(sizeof(Module));
memset(module, 0, sizeof(Module));
if (!parse_declaration_module(p, module)) { if (!parse_declaration_module(p, module)) {
goto fail; goto fail;
} }
@@ -265,20 +266,25 @@ void free_type_expression(TypeExpression* expr) {
} }
void parser_free(Module* module) { void parser_free(Module* module) {
if (module == NULL) return; if (module == NULL) {
return;
}
if (module->imports != NULL) { if (module->imports != NULL) {
for(size_t i = 0; i < module->import_count; i++) { for(size_t i = 0; i < module->import_count; i++) {
free((void*)module->imports[i].module_name); free(module->imports[i].module_name);
} }
free(module->imports); free(module->imports);
} }
if (module->aliases != NULL) { if (module->aliases != NULL) {
for(size_t i = 0; i < module->alias_count; i++) { for(size_t i = 0; i < module->alias_count; i++) {
free((void*)module->aliases[i].name); free(module->aliases[i].name);
free_type_expression(&module->aliases[i].value); free_type_expression(&module->aliases[i].value);
} }
free(module->aliases); free(module->aliases);
} }
free((void*)module->name);
free(module->name);
free(module); free(module);
} }