mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-03 22:28:46 +00:00
Update Standard Library; Fix Type_Info for integers
This commit is contained in:
@@ -1200,6 +1200,7 @@ b32 check_value_is_expressible(Checker *c, ExactValue in_value, Type *type, Exac
|
||||
return false;
|
||||
if (out_value) *out_value = v;
|
||||
i64 i = v.value_integer;
|
||||
u64 u = *cast(u64 *)&i;
|
||||
i64 s = 8*type_size_of(c->sizes, c->allocator, type);
|
||||
u64 umax = ~0ull;
|
||||
if (s < 64) {
|
||||
@@ -1221,7 +1222,7 @@ b32 check_value_is_expressible(Checker *c, ExactValue in_value, Type *type, Exac
|
||||
case Basic_u32:
|
||||
case Basic_u64:
|
||||
case Basic_uint:
|
||||
return !(i < 0 || cast(u64)i > umax);
|
||||
return !(u < 0 || u > umax);
|
||||
|
||||
case Basic_UntypedInteger:
|
||||
return true;
|
||||
|
||||
@@ -1017,10 +1017,14 @@ void check_stmt(Checker *c, AstNode *node, u32 flags) {
|
||||
auto *tuple = &proc_type->Proc.results->Tuple;
|
||||
variables = tuple->variables;
|
||||
}
|
||||
check_init_variables(c, variables, result_count,
|
||||
rs->results, make_string("return statement"));
|
||||
if (gb_array_count(rs->results) == 0) {
|
||||
error(ast_node_token(node), "Expected %td return values, got 0", result_count);
|
||||
} else {
|
||||
check_init_variables(c, variables, result_count,
|
||||
rs->results, make_string("return statement"));
|
||||
}
|
||||
} else if (gb_array_count(rs->results) > 0) {
|
||||
error(ast_node_token(rs->results[0]), "No result values expected");
|
||||
error(ast_node_token(rs->results[0]), "No return values expected");
|
||||
}
|
||||
case_end;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user