leo/compiler/tests/canonicalization/compound_assignment.json
2021-03-31 14:59:45 -04:00

868 lines
31 KiB
JSON

{
"name": "",
"expected_input": [],
"imports": [],
"circuits": {
"{\"name\":\"Foo\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":9,\\\"col_stop\\\":12,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"circuit Foo {\\\"}\"}": {
"circuit_name": "{\"name\":\"Foo\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":9,\\\"col_stop\\\":12,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"circuit Foo {\\\"}\"}",
"members": [
{
"CircuitVariable": [
"{\"name\":\"f\",\"span\":\"{\\\"line_start\\\":2,\\\"line_stop\\\":2,\\\"col_start\\\":3,\\\"col_stop\\\":4,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" f: u8,\\\"}\"}",
{
"IntegerType": "U8"
}
]
}
]
}
},
"functions": {
"{\"name\":\"main\",\"span\":\"{\\\"line_start\\\":4,\\\"line_stop\\\":4,\\\"col_start\\\":10,\\\"col_stop\\\":14,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function main() {\\\"}\"}": {
"annotations": [],
"identifier": "{\"name\":\"main\",\"span\":\"{\\\"line_start\\\":4,\\\"line_stop\\\":4,\\\"col_start\\\":10,\\\"col_stop\\\":14,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function main() {\\\"}\"}",
"input": [],
"output": {
"Tuple": []
},
"block": {
"statements": [
{
"Definition": {
"declaration_type": "Let",
"variable_names": [
{
"mutable": true,
"identifier": "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":5,\\\"line_stop\\\":5,\\\"col_start\\\":7,\\\"col_stop\\\":8,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" let x = 10u32;\\\"}\"}",
"span": {
"line_start": 5,
"line_stop": 5,
"col_start": 7,
"col_stop": 8,
"path": "",
"content": " let x = 10u32;"
}
}
],
"type_": null,
"value": {
"Value": {
"Integer": [
"U32",
"10",
{
"line_start": 5,
"line_stop": 5,
"col_start": 11,
"col_stop": 16,
"path": "",
"content": " let x = 10u32;"
}
]
}
},
"span": {
"line_start": 5,
"line_stop": 5,
"col_start": 3,
"col_stop": 16,
"path": "",
"content": " let x = 10u32;"
}
}
},
{
"Assign": {
"operation": "Assign",
"assignee": {
"identifier": "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":6,\\\"line_stop\\\":6,\\\"col_start\\\":3,\\\"col_stop\\\":4,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" x += 20;\\\"}\"}",
"accesses": [],
"span": {
"line_start": 6,
"line_stop": 6,
"col_start": 3,
"col_stop": 4,
"path": "",
"content": " x += 20;"
}
},
"value": {
"Binary": {
"left": {
"Identifier": "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":6,\\\"line_stop\\\":6,\\\"col_start\\\":3,\\\"col_stop\\\":4,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" x += 20;\\\"}\"}"
},
"right": {
"Value": {
"Implicit": [
"20",
{
"line_start": 6,
"line_stop": 6,
"col_start": 8,
"col_stop": 10,
"path": "",
"content": " x += 20;"
}
]
}
},
"op": "Add",
"span": {
"line_start": 6,
"line_stop": 6,
"col_start": 3,
"col_stop": 10,
"path": "",
"content": " x += 20;"
}
}
},
"span": {
"line_start": 6,
"line_stop": 6,
"col_start": 3,
"col_stop": 10,
"path": "",
"content": " x += 20;"
}
}
},
{
"Console": {
"function": {
"Assert": {
"Binary": {
"left": {
"Identifier": "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":7,\\\"line_stop\\\":7,\\\"col_start\\\":18,\\\"col_stop\\\":19,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" console.assert(x == 30u32);\\\"}\"}"
},
"right": {
"Value": {
"Integer": [
"U32",
"30",
{
"line_start": 7,
"line_stop": 7,
"col_start": 23,
"col_stop": 28,
"path": "",
"content": " console.assert(x == 30u32);"
}
]
}
},
"op": "Eq",
"span": {
"line_start": 7,
"line_stop": 7,
"col_start": 18,
"col_stop": 28,
"path": "",
"content": " console.assert(x == 30u32);"
}
}
}
},
"span": {
"line_start": 7,
"line_stop": 7,
"col_start": 3,
"col_stop": 28,
"path": "",
"content": " console.assert(x == 30u32);"
}
}
},
{
"Definition": {
"declaration_type": "Let",
"variable_names": [
{
"mutable": true,
"identifier": "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":9,\\\"line_stop\\\":9,\\\"col_start\\\":7,\\\"col_stop\\\":8,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" let y = [1u8, 2u8];\\\"}\"}",
"span": {
"line_start": 9,
"line_stop": 9,
"col_start": 7,
"col_stop": 8,
"path": "",
"content": " let y = [1u8, 2u8];"
}
}
],
"type_": null,
"value": {
"ArrayInline": {
"elements": [
{
"Expression": {
"Value": {
"Integer": [
"U8",
"1",
{
"line_start": 9,
"line_stop": 9,
"col_start": 12,
"col_stop": 15,
"path": "",
"content": " let y = [1u8, 2u8];"
}
]
}
}
},
{
"Expression": {
"Value": {
"Integer": [
"U8",
"2",
{
"line_start": 9,
"line_stop": 9,
"col_start": 17,
"col_stop": 20,
"path": "",
"content": " let y = [1u8, 2u8];"
}
]
}
}
}
],
"span": {
"line_start": 9,
"line_stop": 9,
"col_start": 11,
"col_stop": 21,
"path": "",
"content": " let y = [1u8, 2u8];"
}
}
},
"span": {
"line_start": 9,
"line_stop": 9,
"col_start": 3,
"col_stop": 21,
"path": "",
"content": " let y = [1u8, 2u8];"
}
}
},
{
"Assign": {
"operation": "Assign",
"assignee": {
"identifier": "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":10,\\\"line_stop\\\":10,\\\"col_start\\\":3,\\\"col_stop\\\":4,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" y[0] += 3u8;\\\"}\"}",
"accesses": [
{
"ArrayIndex": {
"Value": {
"Implicit": [
"0",
{
"line_start": 10,
"line_stop": 10,
"col_start": 5,
"col_stop": 6,
"path": "",
"content": " y[0] += 3u8;"
}
]
}
}
}
],
"span": {
"line_start": 10,
"line_stop": 10,
"col_start": 3,
"col_stop": 7,
"path": "",
"content": " y[0] += 3u8;"
}
},
"value": {
"Binary": {
"left": {
"ArrayAccess": {
"array": {
"Identifier": "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":10,\\\"line_stop\\\":10,\\\"col_start\\\":3,\\\"col_stop\\\":4,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" y[0] += 3u8;\\\"}\"}"
},
"index": {
"Value": {
"Implicit": [
"0",
{
"line_start": 10,
"line_stop": 10,
"col_start": 5,
"col_stop": 6,
"path": "",
"content": " y[0] += 3u8;"
}
]
}
},
"span": {
"line_start": 10,
"line_stop": 10,
"col_start": 3,
"col_stop": 14,
"path": "",
"content": " y[0] += 3u8;"
}
}
},
"right": {
"Value": {
"Integer": [
"U8",
"3",
{
"line_start": 10,
"line_stop": 10,
"col_start": 11,
"col_stop": 14,
"path": "",
"content": " y[0] += 3u8;"
}
]
}
},
"op": "Add",
"span": {
"line_start": 10,
"line_stop": 10,
"col_start": 3,
"col_stop": 14,
"path": "",
"content": " y[0] += 3u8;"
}
}
},
"span": {
"line_start": 10,
"line_stop": 10,
"col_start": 3,
"col_stop": 14,
"path": "",
"content": " y[0] += 3u8;"
}
}
},
{
"Console": {
"function": {
"Assert": {
"Binary": {
"left": {
"ArrayAccess": {
"array": {
"Identifier": "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":11,\\\"line_stop\\\":11,\\\"col_start\\\":18,\\\"col_stop\\\":19,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" console.assert(y[0] == 4u8);\\\"}\"}"
},
"index": {
"Value": {
"Implicit": [
"0",
{
"line_start": 11,
"line_stop": 11,
"col_start": 20,
"col_stop": 21,
"path": "",
"content": " console.assert(y[0] == 4u8);"
}
]
}
},
"span": {
"line_start": 11,
"line_stop": 11,
"col_start": 18,
"col_stop": 22,
"path": "",
"content": " console.assert(y[0] == 4u8);"
}
}
},
"right": {
"Value": {
"Integer": [
"U8",
"4",
{
"line_start": 11,
"line_stop": 11,
"col_start": 26,
"col_stop": 29,
"path": "",
"content": " console.assert(y[0] == 4u8);"
}
]
}
},
"op": "Eq",
"span": {
"line_start": 11,
"line_stop": 11,
"col_start": 18,
"col_stop": 29,
"path": "",
"content": " console.assert(y[0] == 4u8);"
}
}
}
},
"span": {
"line_start": 11,
"line_stop": 11,
"col_start": 3,
"col_stop": 29,
"path": "",
"content": " console.assert(y[0] == 4u8);"
}
}
},
{
"Definition": {
"declaration_type": "Let",
"variable_names": [
{
"mutable": true,
"identifier": "{\"name\":\"z\",\"span\":\"{\\\"line_start\\\":13,\\\"line_stop\\\":13,\\\"col_start\\\":7,\\\"col_stop\\\":8,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" let z = (1u8, 2u8);\\\"}\"}",
"span": {
"line_start": 13,
"line_stop": 13,
"col_start": 7,
"col_stop": 8,
"path": "",
"content": " let z = (1u8, 2u8);"
}
}
],
"type_": null,
"value": {
"TupleInit": {
"elements": [
{
"Value": {
"Integer": [
"U8",
"1",
{
"line_start": 13,
"line_stop": 13,
"col_start": 12,
"col_stop": 15,
"path": "",
"content": " let z = (1u8, 2u8);"
}
]
}
},
{
"Value": {
"Integer": [
"U8",
"2",
{
"line_start": 13,
"line_stop": 13,
"col_start": 17,
"col_stop": 20,
"path": "",
"content": " let z = (1u8, 2u8);"
}
]
}
}
],
"span": {
"line_start": 13,
"line_stop": 13,
"col_start": 11,
"col_stop": 21,
"path": "",
"content": " let z = (1u8, 2u8);"
}
}
},
"span": {
"line_start": 13,
"line_stop": 13,
"col_start": 3,
"col_stop": 21,
"path": "",
"content": " let z = (1u8, 2u8);"
}
}
},
{
"Assign": {
"operation": "Assign",
"assignee": {
"identifier": "{\"name\":\"z\",\"span\":\"{\\\"line_start\\\":14,\\\"line_stop\\\":14,\\\"col_start\\\":3,\\\"col_stop\\\":4,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" z.1 += 3u8;\\\"}\"}",
"accesses": [
{
"Tuple": [
{
"value": "1"
},
{
"line_start": 14,
"line_stop": 14,
"col_start": 3,
"col_stop": 6,
"path": "",
"content": " z.1 += 3u8;"
}
]
}
],
"span": {
"line_start": 14,
"line_stop": 14,
"col_start": 3,
"col_stop": 6,
"path": "",
"content": " z.1 += 3u8;"
}
},
"value": {
"Binary": {
"left": {
"TupleAccess": {
"tuple": {
"Identifier": "{\"name\":\"z\",\"span\":\"{\\\"line_start\\\":14,\\\"line_stop\\\":14,\\\"col_start\\\":3,\\\"col_stop\\\":4,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" z.1 += 3u8;\\\"}\"}"
},
"index": {
"value": "1"
},
"span": {
"line_start": 14,
"line_stop": 14,
"col_start": 3,
"col_stop": 13,
"path": "",
"content": " z.1 += 3u8;"
}
}
},
"right": {
"Value": {
"Integer": [
"U8",
"3",
{
"line_start": 14,
"line_stop": 14,
"col_start": 10,
"col_stop": 13,
"path": "",
"content": " z.1 += 3u8;"
}
]
}
},
"op": "Add",
"span": {
"line_start": 14,
"line_stop": 14,
"col_start": 3,
"col_stop": 13,
"path": "",
"content": " z.1 += 3u8;"
}
}
},
"span": {
"line_start": 14,
"line_stop": 14,
"col_start": 3,
"col_stop": 13,
"path": "",
"content": " z.1 += 3u8;"
}
}
},
{
"Console": {
"function": {
"Assert": {
"Binary": {
"left": {
"TupleAccess": {
"tuple": {
"Identifier": "{\"name\":\"z\",\"span\":\"{\\\"line_start\\\":15,\\\"line_stop\\\":15,\\\"col_start\\\":18,\\\"col_stop\\\":19,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" console.assert(z.1 == 5u8);\\\"}\"}"
},
"index": {
"value": "1"
},
"span": {
"line_start": 15,
"line_stop": 15,
"col_start": 18,
"col_stop": 21,
"path": "",
"content": " console.assert(z.1 == 5u8);"
}
}
},
"right": {
"Value": {
"Integer": [
"U8",
"5",
{
"line_start": 15,
"line_stop": 15,
"col_start": 25,
"col_stop": 28,
"path": "",
"content": " console.assert(z.1 == 5u8);"
}
]
}
},
"op": "Eq",
"span": {
"line_start": 15,
"line_stop": 15,
"col_start": 18,
"col_stop": 28,
"path": "",
"content": " console.assert(z.1 == 5u8);"
}
}
}
},
"span": {
"line_start": 15,
"line_stop": 15,
"col_start": 3,
"col_stop": 28,
"path": "",
"content": " console.assert(z.1 == 5u8);"
}
}
},
{
"Definition": {
"declaration_type": "Let",
"variable_names": [
{
"mutable": true,
"identifier": "{\"name\":\"foo\",\"span\":\"{\\\"line_start\\\":17,\\\"line_stop\\\":17,\\\"col_start\\\":7,\\\"col_stop\\\":10,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" let foo = Foo { f: 6u8 };\\\"}\"}",
"span": {
"line_start": 17,
"line_stop": 17,
"col_start": 7,
"col_stop": 10,
"path": "",
"content": " let foo = Foo { f: 6u8 };"
}
}
],
"type_": null,
"value": {
"CircuitInit": {
"name": "{\"name\":\"Foo\",\"span\":\"{\\\"line_start\\\":17,\\\"line_stop\\\":17,\\\"col_start\\\":13,\\\"col_stop\\\":16,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" let foo = Foo { f: 6u8 };\\\"}\"}",
"members": [
{
"identifier": "{\"name\":\"f\",\"span\":\"{\\\"line_start\\\":17,\\\"line_stop\\\":17,\\\"col_start\\\":19,\\\"col_stop\\\":20,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" let foo = Foo { f: 6u8 };\\\"}\"}",
"expression": {
"Value": {
"Integer": [
"U8",
"6",
{
"line_start": 17,
"line_stop": 17,
"col_start": 22,
"col_stop": 25,
"path": "",
"content": " let foo = Foo { f: 6u8 };"
}
]
}
}
}
],
"span": {
"line_start": 17,
"line_stop": 17,
"col_start": 13,
"col_stop": 27,
"path": "",
"content": " let foo = Foo { f: 6u8 };"
}
}
},
"span": {
"line_start": 17,
"line_stop": 17,
"col_start": 3,
"col_stop": 27,
"path": "",
"content": " let foo = Foo { f: 6u8 };"
}
}
},
{
"Assign": {
"operation": "Assign",
"assignee": {
"identifier": "{\"name\":\"foo\",\"span\":\"{\\\"line_start\\\":18,\\\"line_stop\\\":18,\\\"col_start\\\":3,\\\"col_stop\\\":6,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" foo.f += 2u8;\\\"}\"}",
"accesses": [
{
"Member": "{\"name\":\"f\",\"span\":\"{\\\"line_start\\\":18,\\\"line_stop\\\":18,\\\"col_start\\\":7,\\\"col_stop\\\":8,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" foo.f += 2u8;\\\"}\"}"
}
],
"span": {
"line_start": 18,
"line_stop": 18,
"col_start": 3,
"col_stop": 8,
"path": "",
"content": " foo.f += 2u8;"
}
},
"value": {
"Binary": {
"left": {
"CircuitMemberAccess": {
"circuit": {
"Identifier": "{\"name\":\"foo\",\"span\":\"{\\\"line_start\\\":18,\\\"line_stop\\\":18,\\\"col_start\\\":3,\\\"col_stop\\\":6,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" foo.f += 2u8;\\\"}\"}"
},
"name": "{\"name\":\"f\",\"span\":\"{\\\"line_start\\\":18,\\\"line_stop\\\":18,\\\"col_start\\\":7,\\\"col_stop\\\":8,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" foo.f += 2u8;\\\"}\"}",
"span": {
"line_start": 18,
"line_stop": 18,
"col_start": 3,
"col_stop": 15,
"path": "",
"content": " foo.f += 2u8;"
}
}
},
"right": {
"Value": {
"Integer": [
"U8",
"2",
{
"line_start": 18,
"line_stop": 18,
"col_start": 12,
"col_stop": 15,
"path": "",
"content": " foo.f += 2u8;"
}
]
}
},
"op": "Add",
"span": {
"line_start": 18,
"line_stop": 18,
"col_start": 3,
"col_stop": 15,
"path": "",
"content": " foo.f += 2u8;"
}
}
},
"span": {
"line_start": 18,
"line_stop": 18,
"col_start": 3,
"col_stop": 15,
"path": "",
"content": " foo.f += 2u8;"
}
}
},
{
"Console": {
"function": {
"Assert": {
"Binary": {
"left": {
"CircuitMemberAccess": {
"circuit": {
"Identifier": "{\"name\":\"foo\",\"span\":\"{\\\"line_start\\\":19,\\\"line_stop\\\":19,\\\"col_start\\\":18,\\\"col_stop\\\":21,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" console.assert(foo.f == 8u8);\\\"}\"}"
},
"name": "{\"name\":\"f\",\"span\":\"{\\\"line_start\\\":19,\\\"line_stop\\\":19,\\\"col_start\\\":22,\\\"col_stop\\\":23,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\" console.assert(foo.f == 8u8);\\\"}\"}",
"span": {
"line_start": 19,
"line_stop": 19,
"col_start": 18,
"col_stop": 23,
"path": "",
"content": " console.assert(foo.f == 8u8);"
}
}
},
"right": {
"Value": {
"Integer": [
"U8",
"8",
{
"line_start": 19,
"line_stop": 19,
"col_start": 27,
"col_stop": 30,
"path": "",
"content": " console.assert(foo.f == 8u8);"
}
]
}
},
"op": "Eq",
"span": {
"line_start": 19,
"line_stop": 19,
"col_start": 18,
"col_stop": 30,
"path": "",
"content": " console.assert(foo.f == 8u8);"
}
}
}
},
"span": {
"line_start": 19,
"line_stop": 19,
"col_start": 3,
"col_stop": 30,
"path": "",
"content": " console.assert(foo.f == 8u8);"
}
}
}
],
"span": {
"line_start": 4,
"line_stop": 20,
"col_start": 17,
"col_stop": 2,
"path": "",
"content": "function main() {\n...\n} "
}
},
"span": {
"line_start": 4,
"line_stop": 20,
"col_start": 1,
"col_stop": 2,
"path": "",
"content": "function main() {\n...\n} \n\n\n\n\n\n\n\n\n\n\n\n\n\n"
}
}
}
}