mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Collapse names into VarStorage (#3116)
This removes BindName, putting name information directly on VarStorage.
As a side-effect of updating semantics_ir_test for this change, I also
noted that function bodies were being generated as invalid YAML so am
fixing that (just `{}` to `[]` bracketing, otherwise the test wouldn't
work anymore).
Because names are now available, I've updated lowering to use them for
vars.
In the SemIR formatter, the name is now repeated because it's a
parameter to VarStorage. I believe this is just default behavior, and
we'd have to special-case VarStorage to remove it because it's automatic
argument printing in action. On the balance, it felt like letting it
print was reasonable.
I've noted in places that the name on VarStorage is expected to be
optional, but am not adding support because I'd have no way of testing
it at present.
This commit is contained in:
@@ -11,7 +11,7 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 1,
|
||||
@@ -31,12 +31,11 @@ fn Main() {
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+4, arg1: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+6},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+3, arg1: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+5},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -18,7 +18,7 @@ fn F(b: bool) -> i32 {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type1, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type1, body: [block4]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 0,
|
||||
@@ -39,23 +39,21 @@ fn F(b: bool) -> i32 {
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+3},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+5, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+2},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type1},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: unreachable, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+9},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: BoolLiteral, arg0: false, type: type0},
|
||||
// CHECK:STDOUT: {kind: UnaryOperatorNot, arg0: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: BoolLiteral, arg0: true, type: type0},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: unreachable, arg1: node+0},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: unreachable, type: type0},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: unreachable, arg1: node+15},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: unreachable, arg1: node+13},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: unreachable, type: type0},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: unreachable},
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -64,17 +62,16 @@ fn F(b: bool) -> i32 {
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -12,7 +12,7 @@ fn Main() -> i32 {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
@@ -12,7 +12,7 @@ fn F() -> () {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
@@ -13,7 +13,7 @@ fn Main() -> i32 {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
@@ -16,7 +16,7 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 0,
|
||||
|
||||
@@ -13,7 +13,7 @@ fn Main() -> i32 {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
@@ -9,7 +9,7 @@ fn F() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ fn Main() -> {.a: i32} {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type1, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type1, body: [block3]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 3,
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ fn Main() -> (i32, i32) {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type2, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type2, body: [block3]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 15,
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ fn Main() -> i32 {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 0,
|
||||
|
||||
Reference in New Issue
Block a user