diff --git a/tests.cpp b/tests.cpp new file mode 100644 index 0000000..817da83 --- /dev/null +++ b/tests.cpp @@ -0,0 +1,37 @@ +function void +test_types(){ + Scratch scratch; + Parse_Ctx ctx = {}; + parse_init(&ctx, scratch, scratch); + pctx = &ctx; + + Ast_Type *array_type1 = type_array(type_s64, 1, 32); + Ast_Type *array_type2 = type_array(type_s64, 1, 32); + Ast_Type *array_type3 = type_array(type_s64, 1, 48); + assert(array_type1 == array_type2); + assert(array_type2 != array_type3); + Ast_Type *pointer_type1 = type_pointer(type_s64); + Ast_Type *pointer_type2 = type_pointer(type_s64); + assert(pointer_type2 == pointer_type1); + Ast_Type *pointer_type3 = type_pointer(pointer_type1); + Ast_Type *pointer_type4 = type_pointer(pointer_type2); + assert(pointer_type3 != pointer_type1); + assert(pointer_type3 == pointer_type4); + + Array types = {scratch}; + types.add(type_array(type_s64, 1, 32)); + Ast_Type *func_type1 = type_lambda(0, types[0], types); + Ast_Type *func_type2 = type_lambda(0, types[0], types); + assert(func_type1 == func_type2); + + Array types2 = {scratch}; + { + types2.add(type_array(type_s64, 1, 32)); + types2.add(type_s64); + } + types.add(type_s64); + Ast_Type *func_type3 = type_lambda(0, types[0], types); + Ast_Type *func_type4 = type_lambda(0, types[0], types2); + assert(func_type1 != func_type3); + assert(func_type3 == func_type4); +} \ No newline at end of file