Remove type visiting in generic visitor

This commit is contained in:
2025-08-06 12:55:37 +02:00
parent b18effbdd8
commit 5d1804fbc2
10 changed files with 374 additions and 232 deletions

View File

@@ -77,7 +77,7 @@ namespace elna::gcc
if (!VOID_TYPE_P(TREE_VALUE(current_parameter)))
{
error_at(call_location, "too few arguments, expected %i, got %lu",
error_at(call_location, "Too few arguments, expected %i, got %lu",
list_length(TYPE_ARG_TYPES(symbol_type)) - 1, arguments.size());
this->current_expression = error_mark_node;
}
@@ -1179,46 +1179,6 @@ namespace elna::gcc
this->current_expression = NULL_TREE;
}
void generic_visitor::visit(boot::named_type_expression *type)
{
this->current_expression = TREE_TYPE(this->symbols->lookup(type->name));
}
void generic_visitor::visit(boot::array_type_expression *)
{
gcc_unreachable();
}
void generic_visitor::visit(boot::pointer_type_expression *type)
{
type->base().accept(this);
if (this->current_expression != NULL_TREE && this->current_expression != error_mark_node)
{
this->current_expression = build_global_pointer_type(this->current_expression);
}
}
void generic_visitor::visit(boot::record_type_expression *)
{
gcc_unreachable();
}
void generic_visitor::visit(boot::union_type_expression *)
{
gcc_unreachable();
}
void generic_visitor::visit(boot::procedure_type_expression *)
{
gcc_unreachable();
}
void generic_visitor::visit(boot::enumeration_type_expression *)
{
gcc_unreachable();
}
void generic_visitor::visit(boot::defer_statement *statement)
{
enter_scope();