feat: 数组类型语法 [T; N] 改为 T[N] 后置语法
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
fn main() -> i64 {
|
||||
let arr: [i64; 3] = arr;
|
||||
let arr: i64[3] = arr;
|
||||
arr[0] = 10;
|
||||
arr[1] = 20;
|
||||
arr[2] = 30;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
struct Point { x: i64, y: i64 }
|
||||
|
||||
fn main() -> i64 {
|
||||
let arr: [Point; 2] = arr;
|
||||
let arr: Point[2] = arr;
|
||||
arr[0] = Point { x: 10, y: 20 };
|
||||
arr[1] = Point { x: 30, y: 40 };
|
||||
print_i64(arr[0].x);
|
||||
|
||||
+2
-2
@@ -292,13 +292,13 @@ void test_codegen_array() {
|
||||
|
||||
/* 构造 AST:
|
||||
fn main() -> i64 {
|
||||
let arr: [i64; 3] = arr;
|
||||
let arr: i64[3] = arr;
|
||||
arr[0] = 10;
|
||||
print_i64(arr[0]);
|
||||
return 0;
|
||||
}
|
||||
*/
|
||||
// let arr: [i64; 3] = arr;
|
||||
// let arr: i64[3] = arr;
|
||||
AstNode* arr_init = ast_make_ident(&a, "arr", loc_at(1, 1));
|
||||
AstNode* let_stmt = ast_make_let(&a, "arr", TYPE_ARRAY, true, false,
|
||||
arr_init, NULL, TYPE_I64, NULL, 3, loc_at(1, 1));
|
||||
|
||||
+3
-3
@@ -265,7 +265,7 @@ void test_array_ok() {
|
||||
Arena a = arena_create(1);
|
||||
size_t tc; ErrorInfo lex_err = {0};
|
||||
Token* toks = lex(&a,
|
||||
"fn main() { let arr: [i64; 3] = arr; arr[0]; return; }",
|
||||
"fn main() { let arr: i64[3] = arr; arr[0]; return; }",
|
||||
"test", &tc, &lex_err);
|
||||
ASSERT(toks != NULL);
|
||||
ErrorInfo parse_err = {0};
|
||||
@@ -282,7 +282,7 @@ void test_array_index_type_error() {
|
||||
Arena a = arena_create(1);
|
||||
size_t tc; ErrorInfo lex_err = {0};
|
||||
Token* toks = lex(&a,
|
||||
"fn main() { let arr: [i64; 3] = arr; arr[true]; return; }",
|
||||
"fn main() { let arr: i64[3] = arr; arr[true]; return; }",
|
||||
"test", &tc, &lex_err);
|
||||
ASSERT(toks != NULL);
|
||||
ErrorInfo parse_err = {0};
|
||||
@@ -316,7 +316,7 @@ void test_array_assign_ok() {
|
||||
Arena a = arena_create(1);
|
||||
size_t tc; ErrorInfo lex_err = {0};
|
||||
Token* toks = lex(&a,
|
||||
"fn main() { let arr: [i64; 3] = arr; arr[0] = 42; return; }",
|
||||
"fn main() { let arr: i64[3] = arr; arr[0] = 42; return; }",
|
||||
"test", &tc, &lex_err);
|
||||
ASSERT(toks != NULL);
|
||||
ErrorInfo parse_err = {0};
|
||||
|
||||
Reference in New Issue
Block a user