mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-04 19:31:08 +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 F() -> 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,
|
||||
@@ -24,22 +24,21 @@ fn F() -> i32 {
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+2},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+1, type: type1},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+6, type: type0},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+8, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+9},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+7, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+8},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -57,7 +56,6 @@ fn F() -> i32 {
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -67,7 +65,7 @@ fn F() -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F() -> i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %n: i32 = var
|
||||
// CHECK:STDOUT: %n: i32 = var "n"
|
||||
// CHECK:STDOUT: %.loc8: i32 = int_literal 0
|
||||
// CHECK:STDOUT: assign %n, %.loc8
|
||||
// CHECK:STDOUT: %.loc9_13.1: type = ptr_type i32
|
||||
|
||||
+61
-79
@@ -22,7 +22,7 @@ fn F(param: i32) {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: [block4]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 1,
|
||||
@@ -50,11 +50,11 @@ fn F(param: i32) {
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+19,
|
||||
// CHECK:STDOUT: node+24,
|
||||
// CHECK:STDOUT: node+38,
|
||||
// CHECK:STDOUT: node+40,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: node+21,
|
||||
// CHECK:STDOUT: node+33,
|
||||
// CHECK:STDOUT: node+35,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -67,74 +67,65 @@ fn F(param: i32) {
|
||||
// CHECK:STDOUT: ],
|
||||
// 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: StructTypeField, arg0: str3, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str4, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block5, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str3, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+8, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+6, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str4, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+11, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+9, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block7, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+6, arg1: node+14},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+12},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str3, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str4, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block8, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str5, arg1: node+20, type: type2},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+6, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+20, arg1: node+22},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str5, type: type2},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+5, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+18, arg1: node+19},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type3},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str6, arg1: node+25, type: type3},
|
||||
// CHECK:STDOUT: {kind: StructAccess, arg0: node+6, arg1: member0, type: type0},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+27, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+25, arg1: node+28},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str6, type: type3},
|
||||
// CHECK:STDOUT: {kind: StructAccess, arg0: node+5, arg1: member0, type: type0},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+23, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+22, arg1: node+24},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type3},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str7, arg1: node+31, type: type3},
|
||||
// CHECK:STDOUT: {kind: StructAccess, arg0: node+6, arg1: member1, type: type0},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+33, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+31, arg1: node+34},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str7, type: type3},
|
||||
// CHECK:STDOUT: {kind: StructAccess, arg0: node+5, arg1: member1, type: type0},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+28, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+27, arg1: node+29},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block9, type: type4},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type5},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str8, arg1: node+41, type: type5},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str8, type: type5},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+43, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+37, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int3, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+45, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+39, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block10, type: type5},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+41, arg1: node+47},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+36, arg1: node+41},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type3},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str9, arg1: node+50, type: type3},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str9, type: type3},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int4, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleIndex, arg0: node+41, arg1: node+52, type: type0},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+53, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+50, arg1: node+54},
|
||||
// CHECK:STDOUT: {kind: TupleIndex, arg0: node+36, arg1: node+45, type: type0},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+46, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+44, arg1: node+47},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type3},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str10, arg1: node+57, type: type3},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str10, type: type3},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int5, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleIndex, arg0: node+41, arg1: node+59, type: type0},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+60, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+57, arg1: node+61},
|
||||
// CHECK:STDOUT: {kind: TupleIndex, arg0: node+36, arg1: node+51, type: type0},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+52, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+50, arg1: node+53},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type3},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str11, arg1: node+64, type: type3},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str11, type: type3},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+0, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+64, arg1: node+66},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+56, arg1: node+57},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
@@ -142,23 +133,23 @@ fn F(param: 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: node+5,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: node+15,
|
||||
@@ -206,39 +197,30 @@ fn F(param: i32) {
|
||||
// CHECK:STDOUT: node+57,
|
||||
// CHECK:STDOUT: node+58,
|
||||
// CHECK:STDOUT: node+59,
|
||||
// CHECK:STDOUT: node+60,
|
||||
// CHECK:STDOUT: node+61,
|
||||
// CHECK:STDOUT: node+62,
|
||||
// CHECK:STDOUT: node+63,
|
||||
// CHECK:STDOUT: node+64,
|
||||
// CHECK:STDOUT: node+65,
|
||||
// CHECK:STDOUT: node+66,
|
||||
// CHECK:STDOUT: node+67,
|
||||
// CHECK:STDOUT: node+68,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+36,
|
||||
// CHECK:STDOUT: node+37,
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+44,
|
||||
// CHECK:STDOUT: node+46,
|
||||
// CHECK:STDOUT: node+31,
|
||||
// CHECK:STDOUT: node+32,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+38,
|
||||
// CHECK:STDOUT: node+40,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -249,7 +231,7 @@ fn F(param: i32) {
|
||||
// CHECK:STDOUT: fn @F(%param: i32) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc8_27: type = struct_type {.a: i32, .b: i32}
|
||||
// CHECK:STDOUT: %s: {.a: i32, .b: i32} = var
|
||||
// CHECK:STDOUT: %s: {.a: i32, .b: i32} = var "s"
|
||||
// CHECK:STDOUT: %.loc8_37: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc8_35: i32 = stub_reference %.loc8_37
|
||||
// CHECK:STDOUT: %.loc8_45: i32 = int_literal 2
|
||||
@@ -258,16 +240,16 @@ fn F(param: i32) {
|
||||
// CHECK:STDOUT: assign %s, %.loc8_46
|
||||
// CHECK:STDOUT: %.loc10_27: type = struct_type {.a: i32, .b: i32}
|
||||
// CHECK:STDOUT: %.loc10_28: type = ptr_type {.a: i32, .b: i32}
|
||||
// CHECK:STDOUT: %p: {.a: i32, .b: i32}* = var
|
||||
// CHECK:STDOUT: %p: {.a: i32, .b: i32}* = var "p"
|
||||
// CHECK:STDOUT: %.loc10_32: {.a: i32, .b: i32}* = address_of %s
|
||||
// CHECK:STDOUT: assign %p, %.loc10_32
|
||||
// CHECK:STDOUT: %.loc11_13: type = ptr_type i32
|
||||
// CHECK:STDOUT: %q: i32* = var
|
||||
// CHECK:STDOUT: %q: i32* = var "q"
|
||||
// CHECK:STDOUT: %.loc11_19: i32 = struct_access %s, member0
|
||||
// CHECK:STDOUT: %.loc11_17: i32* = address_of %.loc11_19
|
||||
// CHECK:STDOUT: assign %q, %.loc11_17
|
||||
// CHECK:STDOUT: %.loc12_13: type = ptr_type i32
|
||||
// CHECK:STDOUT: %r: i32* = var
|
||||
// CHECK:STDOUT: %r: i32* = var "r"
|
||||
// CHECK:STDOUT: %.loc12_19: i32 = struct_access %s, member1
|
||||
// CHECK:STDOUT: %.loc12_17: i32* = address_of %.loc12_19
|
||||
// CHECK:STDOUT: assign %r, %.loc12_17
|
||||
@@ -276,7 +258,7 @@ fn F(param: i32) {
|
||||
// CHECK:STDOUT: %.loc14_19.1: type = tuple_type (type, type)
|
||||
// CHECK:STDOUT: %.loc14_19.2: (type, type) = tuple_value (%.loc14_11, %.loc14_16)
|
||||
// CHECK:STDOUT: %.loc14_19.3: type = tuple_type (i32, i32)
|
||||
// CHECK:STDOUT: %t: (i32, i32) = var
|
||||
// CHECK:STDOUT: %t: (i32, i32) = var "t"
|
||||
// CHECK:STDOUT: %.loc14_24.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc14_24.2: i32 = stub_reference %.loc14_24.1
|
||||
// CHECK:STDOUT: %.loc14_27.1: i32 = int_literal 2
|
||||
@@ -284,19 +266,19 @@ fn F(param: i32) {
|
||||
// CHECK:STDOUT: %.loc14_28: (i32, i32) = tuple_value (%.loc14_24.2, %.loc14_27.2)
|
||||
// CHECK:STDOUT: assign %t, %.loc14_28
|
||||
// CHECK:STDOUT: %.loc15_14: type = ptr_type i32
|
||||
// CHECK:STDOUT: %t0: i32* = var
|
||||
// CHECK:STDOUT: %t0: i32* = var "t0"
|
||||
// CHECK:STDOUT: %.loc15_21: i32 = int_literal 0
|
||||
// CHECK:STDOUT: %.loc15_22: i32 = tuple_index %t, %.loc15_21
|
||||
// CHECK:STDOUT: %.loc15_18: i32* = address_of %.loc15_22
|
||||
// CHECK:STDOUT: assign %t0, %.loc15_18
|
||||
// CHECK:STDOUT: %.loc16_14: type = ptr_type i32
|
||||
// CHECK:STDOUT: %t1: i32* = var
|
||||
// CHECK:STDOUT: %t1: i32* = var "t1"
|
||||
// CHECK:STDOUT: %.loc16_21: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc16_22: i32 = tuple_index %t, %.loc16_21
|
||||
// CHECK:STDOUT: %.loc16_18: i32* = address_of %.loc16_22
|
||||
// CHECK:STDOUT: assign %t1, %.loc16_18
|
||||
// CHECK:STDOUT: %.loc20_22: type = ptr_type i32
|
||||
// CHECK:STDOUT: %param_addr: i32* = var
|
||||
// CHECK:STDOUT: %param_addr: i32* = var "param_addr"
|
||||
// CHECK:STDOUT: %.loc20_26: i32* = address_of %param
|
||||
// CHECK:STDOUT: assign %param_addr, %.loc20_26
|
||||
// CHECK:STDOUT: return
|
||||
|
||||
+10
-14
@@ -13,7 +13,7 @@ fn F() -> 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,
|
||||
@@ -27,23 +27,21 @@ fn F() -> i32 {
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+2},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type1},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+1, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+6, arg1: node+8},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+6, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+10},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+6},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+8},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -61,8 +59,6 @@ fn F() -> i32 {
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -72,11 +68,11 @@ fn F() -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F() -> i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %n: i32 = var
|
||||
// CHECK:STDOUT: %n: i32 = var "n"
|
||||
// CHECK:STDOUT: %.loc8: i32 = int_literal 0
|
||||
// CHECK:STDOUT: assign %n, %.loc8
|
||||
// CHECK:STDOUT: %.loc9_13: type = ptr_type i32
|
||||
// CHECK:STDOUT: %p: i32* = var
|
||||
// CHECK:STDOUT: %p: i32* = var "p"
|
||||
// CHECK:STDOUT: %.loc9_17: i32* = address_of %n
|
||||
// CHECK:STDOUT: assign %p, %.loc9_17
|
||||
// CHECK:STDOUT: %.loc11: i32 = dereference %p
|
||||
|
||||
@@ -79,11 +79,11 @@ fn AddressOfTupleElementValue() {
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, return_type: type1},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block0, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str5, param_refs: block0, body: {block7}}},
|
||||
// CHECK:STDOUT: {name: str6, param_refs: block0, body: {block8}}},
|
||||
// CHECK:STDOUT: {name: str7, param_refs: block0, body: {block9}}},
|
||||
// CHECK:STDOUT: {name: str8, param_refs: block0, body: {block10}}},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block0, body: [block3]},
|
||||
// CHECK:STDOUT: {name: str5, param_refs: block0, body: [block7]},
|
||||
// CHECK:STDOUT: {name: str6, param_refs: block0, body: [block8]},
|
||||
// CHECK:STDOUT: {name: str7, param_refs: block0, body: [block9]},
|
||||
// CHECK:STDOUT: {name: str8, param_refs: block0, body: [block10]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 0,
|
||||
|
||||
@@ -21,7 +21,7 @@ fn Deref(n: i32) {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: [block4]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -33,24 +33,23 @@ fn Deref(n: i32) {
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: ],
|
||||
// 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: Dereference, arg0: node+0, type: typeError},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type1},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+5, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+4, type: typeError},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block0, type: type2},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+8, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+7, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
@@ -58,15 +57,15 @@ fn Deref(n: 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: node+5,
|
||||
@@ -74,7 +73,6 @@ fn Deref(n: i32) {
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -28,8 +28,7 @@ var p: *i32;
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: nodeIntegerType, type: typeError},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: typeError},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+1, type: typeError},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: typeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -37,11 +36,10 @@ var p: *i32;
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
// CHECK:STDOUT: %.loc13: <error> = dereference i32
|
||||
// CHECK:STDOUT: %p: <error> = var
|
||||
// CHECK:STDOUT: %p: <error> = var "p"
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -13,7 +13,7 @@ fn ConstMismatch(p: const {}*) -> const ({}*) {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type4, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type4, body: [block4]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -27,8 +27,8 @@ fn ConstMismatch(p: const {}*) -> const ({}*) {
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -37,8 +37,7 @@ fn ConstMismatch(p: const {}*) -> const ({}*) {
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ConstType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+4, type: type2},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type2},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: ConstType, arg0: type3, type: typeTypeType},
|
||||
@@ -54,19 +53,18 @@ fn ConstMismatch(p: const {}*) -> const ({}*) {
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+8
-10
@@ -11,7 +11,7 @@ fn F(p: const (const (const i32*)*)) -> const 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: ]
|
||||
@@ -37,13 +37,12 @@ fn F(p: const (const (const i32*)*)) -> const i32 {
|
||||
// CHECK:STDOUT: {kind: ConstType, arg0: type2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type3, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: ConstType, arg0: type4, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type5},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+5, type: type5},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type5},
|
||||
// CHECK:STDOUT: {kind: ConstType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+5, type: type3},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+9, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+10},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+8, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+9},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -55,19 +54,18 @@ fn F(p: const (const (const i32*)*)) -> const i32 {
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+16
-20
@@ -14,8 +14,8 @@ fn ConstPtr(p: const i32*) -> (const 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: str2, param_refs: block6, return_type: type3, body: {block7}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type1, body: [block4]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block6, return_type: type3, body: [block7]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -29,26 +29,24 @@ fn ConstPtr(p: const i32*) -> (const i32)* {
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+1, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type1},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1},
|
||||
// CHECK:STDOUT: {kind: ConstType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type3},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+8, type: type3},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type3},
|
||||
// CHECK:STDOUT: {kind: ConstType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+8},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+7},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -56,32 +54,30 @@ fn ConstPtr(p: const i32*) -> (const i32)* {
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// 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: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
Reference in New Issue
Block a user