diff --git a/core/runtime/core_builtin_soa.odin b/core/runtime/core_builtin_soa.odin index a6b356642..2b7fd3681 100644 --- a/core/runtime/core_builtin_soa.odin +++ b/core/runtime/core_builtin_soa.odin @@ -150,14 +150,14 @@ make_soa_dynamic_array :: proc($T: typeid/#soa[dynamic]$E, allocator := context. } @builtin -make_soa_dynamic_array_len :: proc($T: typeid/#soa[dynamic]$E, auto_cast length: int, allocator := context.allocator, loc := #caller_location) -> (array: T) { +make_soa_dynamic_array_len :: proc($T: typeid/#soa[dynamic]$E, #any_int length: int, allocator := context.allocator, loc := #caller_location) -> (array: T) { context.allocator = allocator resize_soa(&array, length, loc) return } @builtin -make_soa_dynamic_array_len_cap :: proc($T: typeid/#soa[dynamic]$E, auto_cast length, capacity: int, allocator := context.allocator, loc := #caller_location) -> (array: T) { +make_soa_dynamic_array_len_cap :: proc($T: typeid/#soa[dynamic]$E, #any_int length, capacity: int, allocator := context.allocator, loc := #caller_location) -> (array: T) { context.allocator = allocator if reserve_soa(&array, capacity, loc) { resize_soa(&array, length, loc) diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 6c3e731f8..608eb879b 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -5321,9 +5321,7 @@ gb_internal CALL_ARGUMENT_CHECKER(check_call_arguments_internal) { i64 s = 0; if (!check_is_assignable_to_with_score(c, &o, t, &s, param_is_variadic)) { bool ok = false; - if (e->flags & EntityFlag_AutoCast) { - ok = check_is_castable_to(c, &o, t); - } else if (e->flags & EntityFlag_AnyInt) { + if (e->flags & EntityFlag_AnyInt) { if (is_type_integer(t)) { ok = check_is_castable_to(c, &o, t); } @@ -5592,9 +5590,6 @@ gb_internal CALL_ARGUMENT_CHECKER(check_named_call_arguments) { i64 s = 0; if (!check_is_assignable_to_with_score(c, o, e->type, &s, param_is_variadic)) { bool ok = false; - if (e->flags & EntityFlag_AutoCast) { - ok = check_is_castable_to(c, o, e->type); - } if (ok) { s = assign_score_function(MAXIMUM_TYPE_DISTANCE); } else { @@ -10243,9 +10238,6 @@ gb_internal gbString write_expr_to_string(gbString str, Ast *node, bool shorthan if (f->flags&FieldFlag_c_vararg) { str = gb_string_appendc(str, "#c_vararg "); } - if (f->flags&FieldFlag_auto_cast) { - str = gb_string_appendc(str, "auto_cast "); - } if (f->flags&FieldFlag_any_int) { str = gb_string_appendc(str, "#any_int "); } diff --git a/src/check_type.cpp b/src/check_type.cpp index 0bd9af15f..ad746514e 100644 --- a/src/check_type.cpp +++ b/src/check_type.cpp @@ -1619,10 +1619,6 @@ gb_internal Type *check_get_params(CheckerContext *ctx, Scope *scope, Ast *_para } } - if (p->flags&FieldFlag_auto_cast) { - error(name, "'auto_cast' can only be applied to variable fields"); - p->flags &= ~FieldFlag_auto_cast; - } if (p->flags&FieldFlag_const) { error(name, "'#const' can only be applied to variable fields"); p->flags &= ~FieldFlag_const; @@ -1681,11 +1677,7 @@ gb_internal Type *check_get_params(CheckerContext *ctx, Scope *scope, Ast *_para } if (type != t_invalid && !check_is_assignable_to(ctx, &op, type)) { bool ok = true; - if (p->flags&FieldFlag_auto_cast) { - if (!check_is_castable_to(ctx, &op, type)) { - ok = false; - } - } else if (p->flags&FieldFlag_any_int) { + if (p->flags&FieldFlag_any_int) { if ((!is_type_integer(op.type) && !is_type_enum(op.type)) || (!is_type_integer(type) && !is_type_enum(type))) { ok = false; } else if (!check_is_castable_to(ctx, &op, type)) { @@ -1731,10 +1723,6 @@ gb_internal Type *check_get_params(CheckerContext *ctx, Scope *scope, Ast *_para error(name, "'#no_alias' can only be applied to non constant values"); p->flags &= ~FieldFlag_no_alias; // Remove the flag } - if (p->flags&FieldFlag_auto_cast) { - error(name, "'auto_cast' can only be applied to variable fields"); - p->flags &= ~FieldFlag_auto_cast; - } if (p->flags&FieldFlag_any_int) { error(name, "'#any_int' can only be applied to variable fields"); p->flags &= ~FieldFlag_any_int; @@ -1765,9 +1753,6 @@ gb_internal Type *check_get_params(CheckerContext *ctx, Scope *scope, Ast *_para if (p->flags&FieldFlag_no_alias) { param->flags |= EntityFlag_NoAlias; } - if (p->flags&FieldFlag_auto_cast) { - param->flags |= EntityFlag_AutoCast; - } if (p->flags&FieldFlag_any_int) { if (!is_type_integer(param->type) && !is_type_enum(param->type)) { gbString str = type_to_string(param->type); diff --git a/src/docs_writer.cpp b/src/docs_writer.cpp index cb7fa0e1e..814769f57 100644 --- a/src/docs_writer.cpp +++ b/src/docs_writer.cpp @@ -859,7 +859,6 @@ gb_internal OdinDocEntityIndex odin_doc_add_entity(OdinDocWriter *w, Entity *e) if (e->flags & EntityFlag_Param) { if (e->flags & EntityFlag_Using) { flags |= OdinDocEntityFlag_Param_Using; } if (e->flags & EntityFlag_ConstInput) { flags |= OdinDocEntityFlag_Param_Const; } - if (e->flags & EntityFlag_AutoCast) { flags |= OdinDocEntityFlag_Param_AutoCast; } if (e->flags & EntityFlag_Ellipsis) { flags |= OdinDocEntityFlag_Param_Ellipsis; } if (e->flags & EntityFlag_NoAlias) { flags |= OdinDocEntityFlag_Param_NoAlias; } if (e->flags & EntityFlag_AnyInt) { flags |= OdinDocEntityFlag_Param_AnyInt; } diff --git a/src/entity.cpp b/src/entity.cpp index b92ba825f..4b0a6a3c8 100644 --- a/src/entity.cpp +++ b/src/entity.cpp @@ -61,7 +61,7 @@ enum EntityFlag : u64 { EntityFlag_ProcBodyChecked = 1ull<<21, EntityFlag_CVarArg = 1ull<<22, - EntityFlag_AutoCast = 1ull<<23, + EntityFlag_AnyInt = 1ull<<24, EntityFlag_Disabled = 1ull<<25, diff --git a/src/parser.cpp b/src/parser.cpp index c26ca3dcb..b364d01cf 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -3524,7 +3524,6 @@ struct ParseFieldPrefixMapping { gb_global ParseFieldPrefixMapping parse_field_prefix_mappings[] = { {str_lit("using"), Token_using, FieldFlag_using}, - {str_lit("auto_cast"), Token_auto_cast, FieldFlag_auto_cast}, {str_lit("no_alias"), Token_Hash, FieldFlag_no_alias}, {str_lit("c_vararg"), Token_Hash, FieldFlag_c_vararg}, {str_lit("const"), Token_Hash, FieldFlag_const}, @@ -3542,9 +3541,6 @@ gb_internal FieldFlag is_token_field_prefix(AstFile *f) { case Token_using: return FieldFlag_using; - case Token_auto_cast: - return FieldFlag_auto_cast; - case Token_Hash: advance_token(f); switch (f->curr_token.kind) { diff --git a/src/parser.hpp b/src/parser.hpp index 6782a9248..552e9bfb5 100644 --- a/src/parser.hpp +++ b/src/parser.hpp @@ -312,7 +312,7 @@ enum FieldFlag : u32 { FieldFlag_using = 1<<1, FieldFlag_no_alias = 1<<2, FieldFlag_c_vararg = 1<<3, - FieldFlag_auto_cast = 1<<4, + FieldFlag_const = 1<<5, FieldFlag_any_int = 1<<6, FieldFlag_subtype = 1<<7, @@ -327,7 +327,7 @@ enum FieldFlag : u32 { FieldFlag_Invalid = 1u<<31, // Parameter List Restrictions - FieldFlag_Signature = FieldFlag_ellipsis|FieldFlag_using|FieldFlag_no_alias|FieldFlag_c_vararg|FieldFlag_auto_cast|FieldFlag_const|FieldFlag_any_int|FieldFlag_by_ptr, + FieldFlag_Signature = FieldFlag_ellipsis|FieldFlag_using|FieldFlag_no_alias|FieldFlag_c_vararg|FieldFlag_const|FieldFlag_any_int|FieldFlag_by_ptr, FieldFlag_Struct = FieldFlag_using|FieldFlag_subtype|FieldFlag_Tags, };