refactor(argparse): 将null替换为nullptr以提高C++兼容性
- 在argparse库中将所有null指针常量替换为nullptr - 更新头文件和源文件中的指针初始化和比较操作 - 修改测试文件中的相关断言检查 - 更新AST定义文件中的注释说明
This commit is contained in:
@@ -32,7 +32,7 @@ static void test_parser_unit(void) {
|
||||
// 1. 变量声明 int a;
|
||||
{
|
||||
scc_ast_decl_t int_decl;
|
||||
scc_ast_decl_val_init(&int_decl, &int_type, "a", null,
|
||||
scc_ast_decl_val_init(&int_decl, &int_type, "a", nullptr,
|
||||
scc_pos_create());
|
||||
SCC_CHECK_AST(&int_decl.base, "int a;", scc_parse_declaration);
|
||||
}
|
||||
@@ -43,14 +43,15 @@ static void test_parser_unit(void) {
|
||||
scc_ast_type_t func_type;
|
||||
scc_ast_decl_vec_t func_params;
|
||||
scc_ast_decl_t void_decl;
|
||||
scc_ast_decl_param_init(&void_decl, &void_type, null, scc_pos_create());
|
||||
scc_ast_decl_param_init(&void_decl, &void_type, nullptr,
|
||||
scc_pos_create());
|
||||
scc_ast_decl_t *array[] = {&void_decl};
|
||||
scc_vec_unsafe_from_static_array(func_params, array);
|
||||
scc_ast_type_function_init(&func_type, &int_type, &func_params,
|
||||
scc_pos_create());
|
||||
// 构造复合语句块(空)
|
||||
scc_ast_stmt_t compound;
|
||||
scc_ast_stmt_compound_init(&compound, null, scc_pos_create());
|
||||
scc_ast_stmt_compound_init(&compound, nullptr, scc_pos_create());
|
||||
|
||||
// 构造函数声明
|
||||
scc_ast_decl_t func_decl;
|
||||
@@ -66,14 +67,15 @@ static void test_parser_unit(void) {
|
||||
scc_ast_type_t func_type;
|
||||
scc_ast_decl_vec_t func_params;
|
||||
scc_ast_decl_t void_decl;
|
||||
scc_ast_decl_param_init(&void_decl, &void_type, null, scc_pos_create());
|
||||
scc_ast_decl_param_init(&void_decl, &void_type, nullptr,
|
||||
scc_pos_create());
|
||||
scc_ast_decl_t *array[] = {&void_decl};
|
||||
scc_vec_unsafe_from_static_array(func_params, array);
|
||||
scc_ast_type_function_init(&func_type, &int_type, &func_params,
|
||||
scc_pos_create());
|
||||
|
||||
scc_ast_stmt_t compound;
|
||||
scc_ast_stmt_compound_init(&compound, null, scc_pos_create());
|
||||
scc_ast_stmt_compound_init(&compound, nullptr, scc_pos_create());
|
||||
|
||||
scc_ast_decl_t func_decl;
|
||||
scc_ast_decl_func_init(&func_decl, &func_type, "main", &compound,
|
||||
@@ -114,7 +116,8 @@ static void test_parser_unit(void) {
|
||||
scc_ast_type_t func_type;
|
||||
scc_ast_decl_vec_t func_params;
|
||||
scc_ast_decl_t void_decl;
|
||||
scc_ast_decl_param_init(&void_decl, &void_type, null, scc_pos_create());
|
||||
scc_ast_decl_param_init(&void_decl, &void_type, nullptr,
|
||||
scc_pos_create());
|
||||
scc_ast_decl_t *array[] = {&void_decl};
|
||||
scc_vec_unsafe_from_static_array(func_params, array);
|
||||
scc_ast_type_function_init(&func_type, &int_type, &func_params,
|
||||
@@ -139,11 +142,13 @@ static void test_parser_unit(void) {
|
||||
{
|
||||
// 变量声明 int a;
|
||||
scc_ast_decl_t a_decl;
|
||||
scc_ast_decl_val_init(&a_decl, &int_type, "a", null, scc_pos_create());
|
||||
scc_ast_decl_val_init(&a_decl, &int_type, "a", nullptr,
|
||||
scc_pos_create());
|
||||
|
||||
// 变量声明 int b;
|
||||
scc_ast_decl_t b_decl;
|
||||
scc_ast_decl_val_init(&b_decl, &int_type, "b", null, scc_pos_create());
|
||||
scc_ast_decl_val_init(&b_decl, &int_type, "b", nullptr,
|
||||
scc_pos_create());
|
||||
|
||||
// 表达式 1 + 2 * 3
|
||||
scc_ast_expr_t lit1, lit2, lit3, mul, add;
|
||||
@@ -213,7 +218,7 @@ static void test_parser_unit(void) {
|
||||
// 函数类型
|
||||
scc_ast_type_t func_type;
|
||||
scc_ast_type_function_init(&func_type, (scc_ast_type_t *)&int_type,
|
||||
null, scc_pos_create());
|
||||
nullptr, scc_pos_create());
|
||||
|
||||
scc_ast_decl_t func_decl;
|
||||
scc_ast_decl_func_init(&func_decl, &func_type, "main", &compound,
|
||||
@@ -284,8 +289,8 @@ static void test_parser_unit(void) {
|
||||
// 函数类型(返回 int,无参数)
|
||||
scc_ast_type_t func_type;
|
||||
scc_ast_type_function_init(&func_type, (scc_ast_type_t *)&int_type,
|
||||
null,
|
||||
scc_pos_create()); // null 表示无参数
|
||||
nullptr,
|
||||
scc_pos_create()); // nullptr 表示无参数
|
||||
|
||||
// 函数声明 int main() { ... }
|
||||
scc_ast_decl_t func_decl;
|
||||
@@ -320,15 +325,15 @@ static void test_parser_unit(void) {
|
||||
scc_ast_decl_param_init(¶m1, (scc_ast_type_t *)&int_type, "b",
|
||||
scc_pos_create());
|
||||
scc_ast_decl_t param2;
|
||||
scc_ast_decl_param_init(¶m2, (scc_ast_type_t *)&va_list_type, null,
|
||||
scc_pos_create());
|
||||
scc_ast_decl_param_init(¶m2, (scc_ast_type_t *)&va_list_type,
|
||||
nullptr, scc_pos_create());
|
||||
scc_ast_decl_t *params_array[] = {¶m0, ¶m1, ¶m2};
|
||||
scc_vec_unsafe_from_static_array(params, params_array);
|
||||
scc_ast_type_t decl_func_type;
|
||||
scc_ast_type_function_init(&decl_func_type, (scc_ast_type_t *)&int_type,
|
||||
¶ms, scc_pos_create());
|
||||
scc_ast_decl_t decl_func;
|
||||
scc_ast_decl_func_init(&decl_func, &decl_func_type, "add", null,
|
||||
scc_ast_decl_func_init(&decl_func, &decl_func_type, "add", nullptr,
|
||||
scc_pos_create());
|
||||
SCC_CHECK_AST(&decl_func.base, "int add(int a, int b, ...);",
|
||||
scc_parse_declaration);
|
||||
@@ -343,7 +348,7 @@ static void test_parser_unit(void) {
|
||||
scc_pos_create());
|
||||
|
||||
scc_ast_decl_t i32a_decl;
|
||||
scc_ast_decl_val_init(&i32a_decl, &typedef_type, "a", null,
|
||||
scc_ast_decl_val_init(&i32a_decl, &typedef_type, "a", nullptr,
|
||||
scc_pos_create());
|
||||
|
||||
scc_ast_node_t *array[] = {&typedef_decl.base, &i32a_decl.base};
|
||||
@@ -364,7 +369,7 @@ static void test_parser_unit(void) {
|
||||
scc_pos_create());
|
||||
|
||||
scc_ast_decl_t void_ptr_a_decl;
|
||||
scc_ast_decl_val_init(&void_ptr_a_decl, &void_ptr_type, "a", null,
|
||||
scc_ast_decl_val_init(&void_ptr_a_decl, &void_ptr_type, "a", nullptr,
|
||||
scc_pos_create());
|
||||
|
||||
scc_ast_node_t *array2[] = {&void_ptr_decl.base, &void_ptr_a_decl.base};
|
||||
@@ -381,19 +386,20 @@ static void test_parser_unit(void) {
|
||||
{
|
||||
// struct { int x; } (匿名结构体定义)
|
||||
scc_ast_decl_t field;
|
||||
scc_ast_decl_val_init(&field, (scc_ast_type_t *)&int_type, "x", null,
|
||||
scc_ast_decl_val_init(&field, (scc_ast_type_t *)&int_type, "x", nullptr,
|
||||
scc_pos_create());
|
||||
scc_ast_decl_vec_t fields;
|
||||
scc_vec_init(fields);
|
||||
scc_vec_push(fields, &field);
|
||||
|
||||
scc_ast_decl_t struct_def;
|
||||
scc_ast_decl_struct_init(&struct_def, null, &fields, scc_pos_create());
|
||||
scc_ast_decl_struct_init(&struct_def, nullptr, &fields,
|
||||
scc_pos_create());
|
||||
SCC_CHECK_AST(&struct_def.base, "struct { int x;};",
|
||||
scc_parse_declaration);
|
||||
|
||||
scc_ast_type_t struct_type;
|
||||
scc_ast_type_struct_init(&struct_type, null, &struct_def,
|
||||
scc_ast_type_struct_init(&struct_type, nullptr, &struct_def,
|
||||
scc_pos_create());
|
||||
scc_ast_type_t typedef_type;
|
||||
scc_ast_type_typedef_init(&typedef_type, "struct_t", &struct_def,
|
||||
@@ -406,7 +412,7 @@ static void test_parser_unit(void) {
|
||||
scc_parse_declaration);
|
||||
|
||||
scc_ast_decl_t typedef_impl_decl;
|
||||
scc_ast_decl_val_init(&typedef_impl_decl, &typedef_type, "a", null,
|
||||
scc_ast_decl_val_init(&typedef_impl_decl, &typedef_type, "a", nullptr,
|
||||
scc_pos_create());
|
||||
scc_ast_node_t *array[] = {&typedef_decl.base, &typedef_impl_decl.base};
|
||||
scc_ast_stmt_t stmt;
|
||||
@@ -431,7 +437,8 @@ static void test_parser_unit(void) {
|
||||
scc_ast_decl_t param2;
|
||||
scc_ast_decl_param_init(¶m2, &int_type, "b", scc_pos_create());
|
||||
scc_ast_decl_t param3;
|
||||
scc_ast_decl_param_init(¶m3, &va_list_type, null, scc_pos_create());
|
||||
scc_ast_decl_param_init(¶m3, &va_list_type, nullptr,
|
||||
scc_pos_create());
|
||||
scc_ast_decl_t *params_array[] = {¶m1, ¶m2, ¶m3};
|
||||
scc_ast_decl_vec_t func_params;
|
||||
scc_vec_unsafe_from_static_array(func_params, params_array);
|
||||
@@ -443,7 +450,7 @@ static void test_parser_unit(void) {
|
||||
scc_ast_type_function_init(&func_type, &return_type, &func_params,
|
||||
scc_pos_create());
|
||||
scc_ast_decl_t func_decl;
|
||||
scc_ast_decl_func_init(&func_decl, &func_type, "func", null,
|
||||
scc_ast_decl_func_init(&func_decl, &func_type, "func", nullptr,
|
||||
scc_pos_create());
|
||||
|
||||
scc_ast_decl_t *decls_array[] = {&type_decl, &func_decl};
|
||||
@@ -512,7 +519,7 @@ static void test_parser_unit(void) {
|
||||
|
||||
// 6. 函数声明
|
||||
scc_ast_decl_t decl;
|
||||
scc_ast_decl_func_init(&decl, &func_type, "call", null,
|
||||
scc_ast_decl_func_init(&decl, &func_type, "call", nullptr,
|
||||
scc_pos_create());
|
||||
|
||||
// 7. 与解析结果比较
|
||||
@@ -664,9 +671,9 @@ static void test_parser_unit(void) {
|
||||
{
|
||||
scc_ast_decl_t decl_a, decl_b;
|
||||
scc_ast_decl_val_init(&decl_a, (scc_ast_type_t *)&int_type, "a",
|
||||
null, scc_pos_create());
|
||||
nullptr, scc_pos_create());
|
||||
scc_ast_decl_val_init(&decl_b, (scc_ast_type_t *)&int_type, "b",
|
||||
null, scc_pos_create());
|
||||
nullptr, scc_pos_create());
|
||||
|
||||
scc_ast_decl_vec_t decl_vec;
|
||||
scc_vec_init(decl_vec);
|
||||
@@ -708,7 +715,7 @@ static void test_parser_unit(void) {
|
||||
{
|
||||
// 构造 struct list_head 类型(不完整)
|
||||
scc_ast_type_t struct_list_head;
|
||||
scc_ast_type_struct_init(&struct_list_head, "list_head", null,
|
||||
scc_ast_type_struct_init(&struct_list_head, "list_head", nullptr,
|
||||
scc_pos_create());
|
||||
|
||||
// 构造两个指针类型(分别用于 next 和 prev,指向同一结构体)
|
||||
@@ -720,9 +727,9 @@ static void test_parser_unit(void) {
|
||||
|
||||
// 构造变量声明 next 和 prev
|
||||
scc_ast_decl_t next_decl, prev_decl;
|
||||
scc_ast_decl_val_init(&next_decl, &ptr_to_struct1, "next", null,
|
||||
scc_ast_decl_val_init(&next_decl, &ptr_to_struct1, "next", nullptr,
|
||||
scc_pos_create());
|
||||
scc_ast_decl_val_init(&prev_decl, &ptr_to_struct2, "prev", null,
|
||||
scc_ast_decl_val_init(&prev_decl, &ptr_to_struct2, "prev", nullptr,
|
||||
scc_pos_create());
|
||||
|
||||
// 构造声明列表
|
||||
@@ -742,7 +749,7 @@ static void test_parser_unit(void) {
|
||||
// 构造字段 int a;
|
||||
scc_ast_decl_t field_a;
|
||||
scc_ast_decl_val_init(&field_a, (scc_ast_type_t *)&int_type, "a",
|
||||
null, scc_pos_create());
|
||||
nullptr, scc_pos_create());
|
||||
|
||||
scc_ast_decl_vec_t fields;
|
||||
scc_vec_init(fields);
|
||||
@@ -750,12 +757,12 @@ static void test_parser_unit(void) {
|
||||
|
||||
// 构造匿名结构体定义声明
|
||||
scc_ast_decl_t struct_def;
|
||||
scc_ast_decl_struct_init(&struct_def, null, &fields,
|
||||
scc_ast_decl_struct_init(&struct_def, nullptr, &fields,
|
||||
scc_pos_create()); // fields 被移动
|
||||
|
||||
// 构造匿名结构体类型
|
||||
scc_ast_type_t anon_struct_type;
|
||||
scc_ast_type_struct_init(&anon_struct_type, null, &struct_def,
|
||||
scc_ast_type_struct_init(&anon_struct_type, nullptr, &struct_def,
|
||||
scc_pos_create());
|
||||
|
||||
// 构造指针类型指向该匿名结构体
|
||||
@@ -807,7 +814,8 @@ static void test_parser_unit(void) {
|
||||
scc_ast_type_t func_type;
|
||||
scc_ast_decl_vec_t func_params;
|
||||
scc_ast_decl_t void_decl;
|
||||
scc_ast_decl_param_init(&void_decl, &void_type, null, scc_pos_create());
|
||||
scc_ast_decl_param_init(&void_decl, &void_type, nullptr,
|
||||
scc_pos_create());
|
||||
scc_ast_decl_t *array[] = {&void_decl};
|
||||
scc_vec_unsafe_from_static_array(func_params, array);
|
||||
scc_ast_type_function_init(&func_type, &ptr_to_array, &func_params,
|
||||
@@ -818,7 +826,7 @@ static void test_parser_unit(void) {
|
||||
scc_ast_type_pointer_init(&ptr_to_func, &func_type, scc_pos_create());
|
||||
|
||||
scc_ast_decl_t ptr_to_func_decl;
|
||||
scc_ast_decl_val_init(&ptr_to_func_decl, &ptr_to_func, "foo", null,
|
||||
scc_ast_decl_val_init(&ptr_to_func_decl, &ptr_to_func, "foo", nullptr,
|
||||
scc_pos_create());
|
||||
SCC_CHECK_AST(&ptr_to_func_decl.base, "int (*(*foo)(void))[5];",
|
||||
scc_parse_declaration);
|
||||
@@ -838,13 +846,14 @@ static void test_parser_unit(void) {
|
||||
scc_ast_decl_param_init(¶m2, &typedef_func_type, "a",
|
||||
scc_pos_create());
|
||||
scc_ast_decl_t param3;
|
||||
scc_ast_decl_param_init(¶m1, &va_list_type, null, scc_pos_create());
|
||||
scc_ast_decl_param_init(¶m1, &va_list_type, nullptr,
|
||||
scc_pos_create());
|
||||
scc_ast_decl_t *func_hard_array[] = {¶m1, ¶m2, ¶m3};
|
||||
scc_ast_decl_vec_t func_hard_params;
|
||||
scc_vec_unsafe_from_static_array(func_hard_params, func_hard_array);
|
||||
scc_ast_type_function_init(&func_hard_type, &ptr_to_array,
|
||||
&func_hard_params, scc_pos_create());
|
||||
scc_ast_decl_func_init(&func_hard_decl, &func_hard_type, "bar", null,
|
||||
scc_ast_decl_func_init(&func_hard_decl, &func_hard_type, "bar", nullptr,
|
||||
scc_pos_create());
|
||||
|
||||
scc_ast_decl_vec_t decls;
|
||||
@@ -865,5 +874,5 @@ static void test_parser_unit(void) {
|
||||
|
||||
TEST_LIST = {
|
||||
{"parser_unit", test_parser_unit},
|
||||
{null, null},
|
||||
{nullptr, nullptr},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user