function void test_types(){ Scratch scratch; Parse_Ctx ctx = {}; parse_init(&ctx, scratch, scratch); pctx = &ctx; Ast_Type *array_type1 = type_array(type_s64, 32); Ast_Type *array_type2 = type_array(type_s64, 32); Ast_Type *array_type3 = type_array(type_s64, 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); #if 0 Array types = {scratch}; types.add(type_array(type_s64, 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, 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); #endif }