Add support for dereference operator. (#3066)

Also fix a couple of error-recovery issues exposed by the tests for this
change.
This commit is contained in:
Richard Smith
2023-08-08 21:55:32 +00:00
committed by GitHub
parent 62205763a5
commit 2947877518
15 changed files with 326 additions and 21 deletions
+2 -6
View File
@@ -8,10 +8,7 @@ fn F() -> i32 {
var n: i32 = 0;
var p: i32* = &n;
// TODO: Dereference.
// return *p;
return 0;
return *p;
}
// CHECK:STDOUT: cross_reference_irs_size: 1
@@ -20,7 +17,6 @@ fn F() -> i32 {
// CHECK:STDOUT: ]
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: 0,
// CHECK:STDOUT: 0,
// CHECK:STDOUT: ]
// CHECK:STDOUT: real_literals: [
// CHECK:STDOUT: ]
@@ -46,7 +42,7 @@ fn F() -> i32 {
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+6, type: type1},
// CHECK:STDOUT: {kind: AddressOf, arg0: node+1, type: type1},
// CHECK:STDOUT: {kind: Assign, arg0: node+6, arg1: node+8},
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
// CHECK:STDOUT: {kind: Dereference, arg0: node+6, type: type0},
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+10},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [