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 {
/** @brief The name of the module being imported. */
const char* module_name;
char* module_name;
/** @brief Whether the import is public or not. */
bool is_public;
@@ -53,7 +53,7 @@ struct TypeExpression{
*/
typedef struct {
/** @brief The name of the alias. */
const char* name;
char* name;
/** @brief The value of the alias. */
TypeExpression value;
@@ -68,7 +68,7 @@ typedef struct {
*/
typedef struct {
/** @brief The name of the module. */
const char* name;
char* name;
/** @brief The list of imports in the module. */
ImportDeclaration* imports;
+10 -4
View File
@@ -224,6 +224,7 @@ Module* parser_parse(TokenStream* ts) {
parser_next_token(p);
Module* module = malloc(sizeof(Module));
memset(module, 0, sizeof(Module));
if (!parse_declaration_module(p, module)) {
goto fail;
}
@@ -265,20 +266,25 @@ void free_type_expression(TypeExpression* expr) {
}
void parser_free(Module* module) {
if (module == NULL) return;
if (module == NULL) {
return;
}
if (module->imports != NULL) {
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);
}
if (module->aliases != NULL) {
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(module->aliases);
}
free((void*)module->name);
free(module->name);
free(module);
}