Move types to Core_Ctx
This commit is contained in:
@@ -90,7 +90,63 @@ pctx->op_info_table[18] = {pctx->intern("~"_s), "NEG"_s, TK_Neg, 0, 1};
|
||||
pctx->op_info_table[19] = {pctx->intern("!"_s), "NOT"_s, TK_Not, 0, 1};
|
||||
/*END*/
|
||||
|
||||
init_type();
|
||||
// Init types
|
||||
pctx->type__void = {TYPE_VOID};
|
||||
pctx->type__string = {TYPE_STRING, sizeof(String), __alignof(String)};
|
||||
pctx->type__bool = {TYPE_BOOL, sizeof(bool), __alignof(bool)};
|
||||
pctx->type__type = {TYPE_TYPE, sizeof(S64), __alignof(S64)};
|
||||
|
||||
pctx->type__f32 = {TYPE_F32, sizeof(F32), __alignof(F32)};
|
||||
pctx->type__f64 = {TYPE_F64, sizeof(F64), __alignof(F64)};
|
||||
|
||||
pctx->type__s8 = {TYPE_S8, sizeof(S8), __alignof(S8)};
|
||||
pctx->type__s16 = {TYPE_S16, sizeof(S16), __alignof(S16)};
|
||||
pctx->type__s32 = {TYPE_S32, sizeof(S32), __alignof(S32)};
|
||||
pctx->type__s64 = {TYPE_S64, sizeof(S64), __alignof(S64)};
|
||||
|
||||
pctx->type__u8 = {TYPE_U8, sizeof(U8), __alignof(U8), true};
|
||||
pctx->type__u16 = {TYPE_U16, sizeof(U16), __alignof(U16), true};
|
||||
pctx->type__u32 = {TYPE_U32, sizeof(U32), __alignof(U32), true};
|
||||
pctx->type__u64 = {TYPE_U64, sizeof(U64), __alignof(U64), true};
|
||||
|
||||
pctx->type__untyped_bool = {TYPE_UNTYPED_BOOL, sizeof(bool), __alignof(bool)};
|
||||
pctx->type__untyped_int = {TYPE_UNTYPED_INT, sizeof(S64), __alignof(S64)};
|
||||
pctx->type__untyped_string = {TYPE_UNTYPED_STRING, sizeof(String), __alignof(String)};
|
||||
pctx->type__untyped_float = {TYPE_UNTYPED_FLOAT, sizeof(double), __alignof(double)};
|
||||
|
||||
pctx->type__char = {TYPE_CHAR, sizeof(char), __alignof(char)};
|
||||
pctx->type__int = {TYPE_INT, sizeof(int), __alignof(int)};
|
||||
|
||||
pctx->type_char = &pctx->type__char;
|
||||
pctx->type_int = &pctx->type__int;
|
||||
pctx->type_void = &pctx->type__void;
|
||||
|
||||
//pctx->type_any; // Needs to be inited at runtime
|
||||
|
||||
pctx->type_type = &pctx->type__type;
|
||||
pctx->type_string = &pctx->type__string;
|
||||
pctx->type_bool = &pctx->type__bool;
|
||||
|
||||
pctx->type_f32 = &pctx->type__f32;
|
||||
pctx->type_f64 = &pctx->type__f64;
|
||||
|
||||
pctx->type_s8 = &pctx->type__s8 ;
|
||||
pctx->type_s16 = &pctx->type__s16;
|
||||
pctx->type_s32 = &pctx->type__s32;
|
||||
pctx->type_s64 = &pctx->type__s64;
|
||||
|
||||
pctx->type_u8 = &pctx->type__u8 ;
|
||||
pctx->type_u16 = &pctx->type__u16;
|
||||
pctx->type_u32 = &pctx->type__u32;
|
||||
pctx->type_u64 = &pctx->type__u64;
|
||||
|
||||
pctx->untyped_string = &pctx->type__untyped_string;
|
||||
pctx->untyped_bool = &pctx->type__untyped_bool;
|
||||
pctx->untyped_int = &pctx->type__untyped_int;
|
||||
pctx->untyped_float = &pctx->type__untyped_float;
|
||||
|
||||
pctx->type_pointer_to_char = type_pointer(pctx->type_char);
|
||||
pctx->type_pointer_to_void = type_pointer(pctx->type_void);
|
||||
|
||||
// Init paths
|
||||
ctx->exe_folder = os_get_exe_dir(ctx->perm);
|
||||
@@ -227,22 +283,22 @@ compile_file_to_string(Allocator *allocator, String filename) {
|
||||
{
|
||||
Ast_Module *module = add_module(0, pctx->intern("Language.core"_s));
|
||||
{
|
||||
insert_builtin_type_into_scope(module, "S64"_s, type_s64);
|
||||
insert_builtin_type_into_scope(module, "S32"_s, type_s32);
|
||||
insert_builtin_type_into_scope(module, "S16"_s, type_s16);
|
||||
insert_builtin_type_into_scope(module, "S8"_s, type_s8);
|
||||
insert_builtin_type_into_scope(module, "int"_s, type_int);
|
||||
insert_builtin_type_into_scope(module, "char"_s, type_char);
|
||||
insert_builtin_type_into_scope(module, "U64"_s, type_u64);
|
||||
insert_builtin_type_into_scope(module, "U32"_s, type_u32);
|
||||
insert_builtin_type_into_scope(module, "U16"_s, type_u16);
|
||||
insert_builtin_type_into_scope(module, "U8"_s, type_u8);
|
||||
insert_builtin_type_into_scope(module, "F64"_s, type_f64);
|
||||
insert_builtin_type_into_scope(module, "F32"_s, type_f32);
|
||||
insert_builtin_type_into_scope(module, "void"_s, type_void);
|
||||
insert_builtin_type_into_scope(module, "Bool"_s, type_bool);
|
||||
insert_builtin_type_into_scope(module, "String"_s, type_string);
|
||||
insert_builtin_type_into_scope(module, "Type"_s, type_type);
|
||||
insert_builtin_type_into_scope(module, "S64"_s, pctx->type_s64);
|
||||
insert_builtin_type_into_scope(module, "S32"_s, pctx->type_s32);
|
||||
insert_builtin_type_into_scope(module, "S16"_s, pctx->type_s16);
|
||||
insert_builtin_type_into_scope(module, "S8"_s, pctx->type_s8);
|
||||
insert_builtin_type_into_scope(module, "int"_s, pctx->type_int);
|
||||
insert_builtin_type_into_scope(module, "char"_s, pctx->type_char);
|
||||
insert_builtin_type_into_scope(module, "U64"_s, pctx->type_u64);
|
||||
insert_builtin_type_into_scope(module, "U32"_s, pctx->type_u32);
|
||||
insert_builtin_type_into_scope(module, "U16"_s, pctx->type_u16);
|
||||
insert_builtin_type_into_scope(module, "U8"_s, pctx->type_u8);
|
||||
insert_builtin_type_into_scope(module, "F64"_s, pctx->type_f64);
|
||||
insert_builtin_type_into_scope(module, "F32"_s, pctx->type_f32);
|
||||
insert_builtin_type_into_scope(module, "void"_s, pctx->type_void);
|
||||
insert_builtin_type_into_scope(module, "Bool"_s, pctx->type_bool);
|
||||
insert_builtin_type_into_scope(module, "String"_s, pctx->type_string);
|
||||
insert_builtin_type_into_scope(module, "Type"_s, pctx->type_type);
|
||||
}
|
||||
|
||||
{
|
||||
@@ -251,14 +307,14 @@ compile_file_to_string(Allocator *allocator, String filename) {
|
||||
decl->state = DECL_RESOLVED;
|
||||
|
||||
Value v1 = {};
|
||||
v1.type = untyped_string;
|
||||
v1.type = pctx->untyped_string;
|
||||
v1.intern_val = pctx->intern(OS_NAME);
|
||||
Ast_Decl *const_os1 = ast_const(&pctx->null_token, pctx->intern("OSName"_s), v1);
|
||||
const_os1->state = DECL_RESOLVED;
|
||||
insert_into_scope(scope, const_os1);
|
||||
|
||||
Value v2 = {};
|
||||
v1.type = untyped_string;
|
||||
v1.type = pctx->untyped_string;
|
||||
v1.intern_val = pctx->intern(OS_NAME_LOWER);
|
||||
Ast_Decl *const_os2 = ast_const(&pctx->null_token, pctx->intern("OSNameLower"_s), v2);
|
||||
const_os2->state = DECL_RESOLVED;
|
||||
@@ -276,8 +332,8 @@ compile_file_to_string(Allocator *allocator, String filename) {
|
||||
// so we mark where it ends
|
||||
pctx->base_language_ordered_decl_len = length(&pctx->ordered_decls);
|
||||
Ast_Decl *any_decl = search_for_single_decl(module, pctx->intern("Any"_s));
|
||||
assert(any_decl->type == type_type);
|
||||
type_any = any_decl->type_val;
|
||||
assert(any_decl->type == pctx->type_type);
|
||||
pctx->type_any = any_decl->type_val;
|
||||
}
|
||||
|
||||
Ast_Module *module = add_module(0, pctx->intern(filename), true);
|
||||
|
||||
Reference in New Issue
Block a user