int main(int argc, char *argv[]) {
- bh_scratch_init(&global_scratch, bh_heap_allocator(), 128 * 1024); // NOTE: 128 KB
+ bh_scratch_init(&global_scratch, bh_heap_allocator(), 256 * 1024); // NOTE: 256 KiB
global_scratch_allocator = bh_scratch_allocator(&global_scratch);
bh_managed_heap_init(&global_heap);
{
+ // CLEANUP maybe make function_get_expected_arguments?
i32 non_vararg_param_count = (i32) callee->type->Function.param_count;
if (non_vararg_param_count > 0 &&
callee->type->Function.params[callee->type->Function.param_count - 1] == builtin_vararg_type_type)
resolve_expression_type(binop->right);
if (binop->right->type->kind == Type_Kind_Compound) {
- i32 expr_count = binop->right->type->Compound.count;
AstCompound* lhs = (AstCompound *) binop->left;
assert(lhs->kind == Ast_Kind_Compound);
+ i32 expr_count = binop->right->type->Compound.count;
fori (i, 0, expr_count) {
lhs->exprs[i]->type = binop->right->type->Compound.types[i];
}
}
i32 mem_count = type_structlike_mem_count(sl->type);
-
arguments_ensure_length(&sl->args, mem_count);
char* err_msg = NULL;
AstTyped** actual = sl->args.values;
StructMember smem;
- b32 all_comptime = 1;
+ sl->flags |= Ast_Flag_Comptime;
fori (i, 0, mem_count) {
CHECK(expression, actual);
return Check_Error;
}
- if (((*actual)->flags & Ast_Flag_Comptime) == 0)
- all_comptime = 0;
-
+ sl->flags &= ((*actual)->flags & Ast_Flag_Comptime);
actual++;
}
- if (all_comptime)
- sl->flags |= Ast_Flag_Comptime;
-
return Check_Success;
}
return Check_Error;
}
- b32 all_comptime = 1;
+ al->flags |= Ast_Flag_Comptime;
Type* elem_type = al->type->Array.elem;
bh_arr_each(AstTyped *, expr, al->values) {
CHECK(expression, expr);
- if (((*expr)->flags & Ast_Flag_Comptime) == 0)
- all_comptime = 0;
+ al->flags &= ((*expr)->flags & Ast_Flag_Comptime);
if (!type_check_or_auto_cast(expr, elem_type)) {
onyx_report_error((*expr)->token->pos, "Mismatched types for value of in array, expected '%s', got '%s'.",
return Check_Error;
}
}
-
- if (all_comptime)
- al->flags |= Ast_Flag_Comptime;
return Check_Success;
}
assert(sl->type);
StructMember s;
- if (!type_lookup_member(sl->type, name, &s)) return -1; // nocheckin: Report error
-
- if (s.included_through_use) return -1; // nocheckin: Report error
+ if (!type_lookup_member(sl->type, name, &s)) return -1;
+ if (s.included_through_use) return -1;
return s.idx;
}
token_toggle_end(named_value->token);
i32 idx = lookup_idx_by_name(provider, named_value->token->text);
if (idx == -1) {
- if (err_msg) *err_msg = bh_aprintf(global_heap_allocator, "'%s' is not a valid named parameter here.", named_value->token->text);
+ if (err_msg) *err_msg = bh_aprintf(global_scratch_allocator, "'%s' is not a valid named parameter here.", named_value->token->text);
token_toggle_end(named_value->token);
return 0;
}
assert(idx < bh_arr_length(args->values));
if (args->values[idx] != NULL) {
- if (err_msg) *err_msg = bh_aprintf(global_heap_allocator, "Multiple values given for parameter named '%s'.", named_value->token->text);
+ if (err_msg) *err_msg = bh_aprintf(global_scratch_allocator, "Multiple values given for parameter named '%s'.", named_value->token->text);
token_toggle_end(named_value->token);
return 0;
}
print_array(y);
}
- poly_named(10, ~~ u32.[ 10, 20, 30 ]);
- poly_named(y = ~~ f32.[ 10, 20, 30 ], 10.0f);
+ poly_named(10, u32.[ 10, 20, 30 ]);
+ poly_named(y = f32.[ 10, 20, 30 ], 10.0f);
println("\n\n=========================");