Pass 'generic_pointer_macro'

This commit is contained in:
David Gonzalez Martin 2025-06-17 19:28:09 -06:00
parent 2d2dd43512
commit 62c9909d46

View File

@ -9541,6 +9541,18 @@ resolve_type = fn (module: &Module, type: &Type) &Type
{
result = type;
},
.pointer =>
{
>old_element_type = type.content.pointer.element_type;
>element_type = resolve_type(module, old_element_type);
result = type;
if (element_type != old_element_type)
{
result = get_pointer_type(module, element_type);
}
},
else =>
{
#trap();
@ -9585,6 +9597,16 @@ clone_value = fn (module: &Module, scope: &Scope, old_value: &Value) &Value
},
};
},
.unary =>
{
>unary_value = clone_value(module, scope, old_value.content.unary.value);
result.content = {
.unary = {
.value = unary_value,
.id = old_value.content.unary.id,
},
};
},
else =>
{
#trap();
@ -12600,7 +12622,11 @@ emit_field_access = fn (module: &Module, value: &Value, left_llvm: &LLVMValue, l
if (real_aggregate_type != aggregate_element_type)
{
#trap();
v = create_load(module, {
.type = aggregate_element_type,
.pointer = aggregate.llvm,
zero,
});
}
else
{
@ -17147,6 +17173,7 @@ names: [_][]u8 =
"slice_only_start",
"basic_macro",
"generic_macro",
"generic_pointer_macro",
];
[export] main = fn [cc(c)] (argument_count: u32, argv: &&u8, envp: &&u8) s32