diff --git a/Cargo.lock b/Cargo.lock index 376eb95..5ecb1fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,17 @@ dependencies = [ "memchr", ] +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + [[package]] name = "autocfg" version = "1.1.0" @@ -44,12 +55,33 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bstr" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" +dependencies = [ + "lazy_static", + "memchr", + "regex-automata", + "serde", +] + [[package]] name = "bumpalo" version = "3.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" +[[package]] +name = "cast" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c24dab4283a142afa2fdca129b80ad2c6284e073930f964c3a1293c225ee39a" +dependencies = [ + "rustc_version", +] + [[package]] name = "cc" version = "1.0.73" @@ -62,6 +94,17 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "bitflags", + "textwrap 0.11.0", + "unicode-width", +] + [[package]] name = "console" version = "0.15.0" @@ -84,6 +127,109 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "criterion" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10" +dependencies = [ + "atty", + "cast", + "clap", + "criterion-plot", + "csv", + "itertools", + "lazy_static", + "num-traits", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_cbor", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d00996de9f2f7559f7f4dc286073197f83e92256a59ed395f9aac01fe717da57" +dependencies = [ + "cast", + "itertools", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "lazy_static", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" +dependencies = [ + "cfg-if", + "lazy_static", +] + +[[package]] +name = "csv" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" +dependencies = [ + "bstr", + "csv-core", + "itoa 0.4.8", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +dependencies = [ + "memchr", +] + [[package]] name = "dbg-pls" version = "0.3.0" @@ -91,7 +237,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96fb680d63b394b942cb518404505ab0610e51e5be82af6818b45aae888064d9" dependencies = [ "dbg-pls-derive", - "itoa", + "itoa 1.0.1", "once_cell", "prettyplease", "proc-macro2", @@ -99,7 +245,7 @@ dependencies = [ "ryu", "syn", "syntect", - "textwrap", + "textwrap 0.15.0", ] [[package]] @@ -118,11 +264,18 @@ name = "dilaria" version = "0.1.0" dependencies = [ "bumpalo", + "criterion", "dbg-pls", "insta", "rustc-hash", ] +[[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + [[package]] name = "encode_unicode" version = "0.3.6" @@ -147,12 +300,27 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "half" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" + [[package]] name = "hashbrown" version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + [[package]] name = "indexmap" version = "1.8.1" @@ -177,12 +345,36 @@ dependencies = [ "similar", ] +[[package]] +name = "itertools" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + [[package]] name = "itoa" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +[[package]] +name = "js-sys" +version = "0.3.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" +dependencies = [ + "wasm-bindgen", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -216,12 +408,30 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" +[[package]] +name = "log" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" +dependencies = [ + "cfg-if", +] + [[package]] name = "memchr" version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + [[package]] name = "miniz_oxide" version = "0.5.1" @@ -231,6 +441,25 @@ dependencies = [ "adler", ] +[[package]] +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + [[package]] name = "num_threads" version = "0.1.5" @@ -268,6 +497,12 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "oorandom" +version = "11.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" + [[package]] name = "pkg-config" version = "0.3.25" @@ -288,6 +523,34 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "plotters" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a3fd9ec30b9749ce28cd91f255d569591cdf937fe280c312143e3c4bad6f2a" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d88417318da0eaf0fdcdb51a0ee6c3bed624333bff8f946733049380be67ac1c" + +[[package]] +name = "plotters-svg" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521fa9638fa597e1dc53e9412a4f9cefb01187ee1f7413076f9e6749e2885ba9" +dependencies = [ + "plotters-backend", +] + [[package]] name = "prettyplease" version = "0.1.9" @@ -316,6 +579,30 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rayon" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd249e82c21598a9a426a4e00dd7adc1d640b22445ec8545feef801d1a74c221" +dependencies = [ + "autocfg", + "crossbeam-deque", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f51245e1e62e1f1629cbfec37b5793bbabcaeb90f30e94d2ba03564687353e4" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + [[package]] name = "regex" version = "1.5.5" @@ -327,6 +614,12 @@ dependencies = [ "regex-syntax", ] +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" + [[package]] name = "regex-syntax" version = "0.6.25" @@ -339,6 +632,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + [[package]] name = "ryu" version = "1.0.9" @@ -360,6 +662,18 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "semver" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4" + [[package]] name = "serde" version = "1.0.136" @@ -369,6 +683,16 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde_cbor" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" +dependencies = [ + "half", + "serde", +] + [[package]] name = "serde_derive" version = "1.0.136" @@ -386,7 +710,7 @@ version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" dependencies = [ - "itoa", + "itoa 1.0.1", "ryu", "serde", ] @@ -458,6 +782,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + [[package]] name = "textwrap" version = "0.15.0" @@ -475,11 +808,21 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd" dependencies = [ - "itoa", + "itoa 1.0.1", "libc", "num_threads", ] +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + [[package]] name = "unicode-linebreak" version = "0.1.2" @@ -512,6 +855,70 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "wasm-bindgen" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" + +[[package]] +name = "web-sys" +version = "0.3.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "winapi" version = "0.3.9" diff --git a/Cargo.toml b/Cargo.toml index 912d852..40c553f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,4 +19,9 @@ _debug = ["dbg-pls"] default = ["_debug", "fxhash"] [dev-dependencies] +criterion = "0.3.5" insta = "1.9.0" + +[[bench]] +name = "parser" +harness = false diff --git a/benches/benchfile.dil b/benches/benchfile.dil new file mode 100644 index 0000000..2a00ca7 --- /dev/null +++ b/benches/benchfile.dil @@ -0,0 +1,2456 @@ +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); + +fn main() { + cool_stuff(get_a(), get_b()); + uwu(); +} + +fn cool_stuff(a, b) { + return ( + a + b / a.b * b.hello().world + ); +} + +fn uwu() { + let a = 5; + let b = 5; + let c = 6; + let d = 6; + + let x = a + c - b + d / d; + print x; + + let y = {}; + y.a = a; + y.b = b; + y.c = c; + + fn to_string(y) { + let string = ""; + let string = string + y; + return y; + } + + y.to_string = to_string; + + more_magic(); + + owo(); +} + +fn owo() { + turn_left(); + turn_right(); + turn_center(); + + let d = direction(); + + if d < 0 { + turn_right(); + } else if d == 0 { + turn_center(); + } else { + turn_left(); + } + + really_long_function_name_wow_its_so_long(); +} + +fn really_long_function_name_wow_its_so_long() { + let code = "fn main() {}"; + fs.write("main.rs", code); + command.spawn("rustc main.rs"); + let program = fs.read("main"); + let output = command.exec("main"); + + if output == "" { + print "correct"; + } +} + +## + comment + yeah a comment +## + +let x = 5; + +frobnify(x); diff --git a/benches/parser.rs b/benches/parser.rs new file mode 100644 index 0000000..9997f69 --- /dev/null +++ b/benches/parser.rs @@ -0,0 +1,26 @@ +use bumpalo::Bump; +use criterion::{black_box, criterion_group, criterion_main, Criterion, Throughput}; + +fn criterion_benchmark(c: &mut Criterion) { + let source = include_str!("benchfile.dil"); + let mut group = c.benchmark_group("parse"); + + let alloc = Bump::new(); + // SAFETY: dropped at the end of function + let mut rt_alloc = unsafe { dilaria::RtAlloc::new() }; + + group.throughput(Throughput::Bytes(source.len() as u64)); + group.bench_function("benchfile.dil", |b| { + b.iter(|| parse(black_box(source), &alloc, &mut rt_alloc)); + }); + + group.finish(); +} + +fn parse(source: &str, alloc: &Bump, rt_alloc: &mut dilaria::RtAlloc) { + let p = dilaria::_parse(source, alloc, rt_alloc); + black_box(&p); +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches); diff --git a/src/lib.rs b/src/lib.rs index b780334..d18e69f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,11 +10,14 @@ use std::io::Write; pub use bumpalo::Bump; -pub use crate::syntax::{lex::*, parse::*}; use crate::{ - runtime::gc::RtAlloc, + errors::CompilerError, syntax::{ast::Program, lex, parse}, }; +pub use crate::{ + runtime::gc::RtAlloc, + syntax::{lex::*, parse::*}, +}; #[cfg(not(feature = "fxhash"))] #[allow(clippy::disallowed_types)] @@ -46,7 +49,7 @@ pub fn run_program(program: &str, cfg: &mut Config) { // SAFETY: I will try to 🥺 let mut runtime = unsafe { RtAlloc::new() }; - let lexer = lex::Lexer::new(program, &mut runtime); + let lexer = Lexer::new(program, &mut runtime); let ast = parse::parse(lexer, &ast_alloc); match ast { @@ -113,3 +116,13 @@ pub fn _fuzz_lex(program: &str) { let lexer = lex::Lexer::new(program, &mut runtime); for _token in lexer {} } + +#[doc(hidden)] +pub fn _parse<'ast>( + program: &str, + alloc: &'ast Bump, + rt_alloc: &mut RtAlloc, +) -> Result, CompilerError> { + let lex = Lexer::new(program, rt_alloc); + parse(lex, alloc) +} diff --git a/src/syntax/parse/snapshots/dilaria__syntax__parse__test__benchfile_parses.snap b/src/syntax/parse/snapshots/dilaria__syntax__parse__test__benchfile_parses.snap new file mode 100644 index 0000000..728fca3 --- /dev/null +++ b/src/syntax/parse/snapshots/dilaria__syntax__parse__test__benchfile_parses.snap @@ -0,0 +1,44909 @@ +--- +source: src/syntax/parse/test.rs +expression: program +--- +Ok( + Block { + stmts: [ + FnDecl( + FnDecl { + span: Span( + 0..58, + ), + name: Ident { + sym: "main", + span: Span( + 3..7, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 16..26, + ), + }, + ), + span: Span( + 26..44, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 27..32, + ), + }, + ), + span: Span( + 32..34, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 36..41, + ), + }, + ), + span: Span( + 41..43, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 50..53, + ), + }, + ), + span: Span( + 53..55, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 10..58, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 60..141, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 63..73, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 74..75, + ), + }, + Ident { + sym: "b", + span: Span( + 77..78, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 103..132, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 103..104, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 107..132, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 107..108, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 112..132, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 111..112, + ), + }, + ), + span: Span( + 112..114, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 113..114, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 117..118, + ), + }, + ), + span: Span( + 118..124, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 119..124, + ), + }, + ), + }, + ), + span: Span( + 124..126, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 126..132, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 127..132, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 86..139, + ), + ), + ], + span: Span( + 80..141, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 143..482, + ), + name: Ident { + sym: "uwu", + span: Span( + 146..149, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 158..167, + ), + name: Ident { + sym: "a", + span: Span( + 162..163, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 166..167, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 173..182, + ), + name: Ident { + sym: "b", + span: Span( + 177..178, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 181..182, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 188..197, + ), + name: Ident { + sym: "c", + span: Span( + 192..193, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 196..197, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 203..212, + ), + name: Ident { + sym: "d", + span: Span( + 207..208, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 211..212, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 219..244, + ), + name: Ident { + sym: "x", + span: Span( + 223..224, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 227..244, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 227..228, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 231..244, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 231..232, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 235..244, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 235..236, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 239..244, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 239..240, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 243..244, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 256..257, + ), + }, + ), + Span( + 250..258, + ), + ), + Declaration( + Declaration { + span: Span( + 264..274, + ), + name: Ident { + sym: "y", + span: Span( + 268..269, + ), + }, + init: Literal( + Object( + Span( + 272..274, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 281..288, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 280..281, + ), + }, + ), + span: Span( + 281..283, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 282..283, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 286..287, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 294..301, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 293..294, + ), + }, + ), + span: Span( + 294..296, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 295..296, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 299..300, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 307..314, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 306..307, + ), + }, + ), + span: Span( + 307..309, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 308..309, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 312..313, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 320..419, + ), + name: Ident { + sym: "to_string", + span: Span( + 323..332, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 333..334, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 346..360, + ), + name: Ident { + sym: "string", + span: Span( + 350..356, + ), + }, + init: Literal( + String( + "", + Span( + 359..360, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 371..394, + ), + name: Ident { + sym: "string", + span: Span( + 375..381, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 384..394, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 384..390, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 393..394, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 411..412, + ), + }, + ), + ), + Span( + 404..413, + ), + ), + ], + span: Span( + 336..419, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 426..449, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 425..426, + ), + }, + ), + span: Span( + 426..436, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 427..436, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 439..448, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 455..465, + ), + }, + ), + span: Span( + 465..467, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 474..477, + ), + }, + ), + span: Span( + 477..479, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 152..482, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 484..750, + ), + name: Ident { + sym: "owo", + span: Span( + 487..490, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 499..508, + ), + }, + ), + span: Span( + 508..510, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 516..526, + ), + }, + ), + span: Span( + 526..528, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 534..545, + ), + }, + ), + span: Span( + 545..547, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 554..573, + ), + name: Ident { + sym: "d", + span: Span( + 558..559, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 562..571, + ), + }, + ), + span: Span( + 571..573, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 580..698, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 583..588, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 583..584, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 587..588, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 599..609, + ), + }, + ), + span: Span( + 609..611, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 589..618, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 624..698, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 627..633, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 627..628, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 632..633, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 644..655, + ), + }, + ), + span: Span( + 655..657, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 634..664, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 680..689, + ), + }, + ), + span: Span( + 689..691, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 670..698, + ), + }, + Span( + 665..698, + ), + ), + ), + }, + Span( + 619..698, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 704..745, + ), + }, + ), + span: Span( + 745..747, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 493..750, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 752..1028, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 755..796, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 805..829, + ), + name: Ident { + sym: "code", + span: Span( + 809..813, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 816..829, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 836..838, + ), + }, + ), + span: Span( + 838..844, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 839..844, + ), + }, + ), + }, + ), + span: Span( + 844..861, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 845..853, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 856..860, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 867..874, + ), + }, + ), + span: Span( + 874..880, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 875..880, + ), + }, + ), + }, + ), + span: Span( + 880..897, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 881..895, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 903..932, + ), + name: Ident { + sym: "program", + span: Span( + 907..914, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 917..919, + ), + }, + ), + span: Span( + 919..924, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 920..924, + ), + }, + ), + }, + ), + span: Span( + 924..932, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 925..930, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 938..971, + ), + name: Ident { + sym: "output", + span: Span( + 942..948, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 951..958, + ), + }, + ), + span: Span( + 958..963, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 959..963, + ), + }, + ), + }, + ), + span: Span( + 963..971, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 964..969, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 978..1026, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 981..992, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 981..987, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 991..992, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 1010..1018, + ), + ), + ), + Span( + 1004..1020, + ), + ), + ], + span: Span( + 994..1026, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 799..1028, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 1069..1078, + ), + name: Ident { + sym: "x", + span: Span( + 1073..1074, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 1077..1078, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 1081..1089, + ), + }, + ), + span: Span( + 1089..1092, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 1090..1091, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 1095..1153, + ), + name: Ident { + sym: "main", + span: Span( + 1098..1102, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 1111..1121, + ), + }, + ), + span: Span( + 1121..1139, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 1122..1127, + ), + }, + ), + span: Span( + 1127..1129, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 1131..1136, + ), + }, + ), + span: Span( + 1136..1138, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 1145..1148, + ), + }, + ), + span: Span( + 1148..1150, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 1105..1153, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 1155..1236, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 1158..1168, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 1169..1170, + ), + }, + Ident { + sym: "b", + span: Span( + 1172..1173, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 1198..1227, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 1198..1199, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 1202..1227, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 1202..1203, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 1207..1227, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 1206..1207, + ), + }, + ), + span: Span( + 1207..1209, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 1208..1209, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 1212..1213, + ), + }, + ), + span: Span( + 1213..1219, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 1214..1219, + ), + }, + ), + }, + ), + span: Span( + 1219..1221, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 1221..1227, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 1222..1227, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 1181..1234, + ), + ), + ], + span: Span( + 1175..1236, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 1238..1577, + ), + name: Ident { + sym: "uwu", + span: Span( + 1241..1244, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 1253..1262, + ), + name: Ident { + sym: "a", + span: Span( + 1257..1258, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 1261..1262, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 1268..1277, + ), + name: Ident { + sym: "b", + span: Span( + 1272..1273, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 1276..1277, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 1283..1292, + ), + name: Ident { + sym: "c", + span: Span( + 1287..1288, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 1291..1292, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 1298..1307, + ), + name: Ident { + sym: "d", + span: Span( + 1302..1303, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 1306..1307, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 1314..1339, + ), + name: Ident { + sym: "x", + span: Span( + 1318..1319, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 1322..1339, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 1322..1323, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 1326..1339, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 1326..1327, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 1330..1339, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 1330..1331, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 1334..1339, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 1334..1335, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 1338..1339, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 1351..1352, + ), + }, + ), + Span( + 1345..1353, + ), + ), + Declaration( + Declaration { + span: Span( + 1359..1369, + ), + name: Ident { + sym: "y", + span: Span( + 1363..1364, + ), + }, + init: Literal( + Object( + Span( + 1367..1369, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 1376..1383, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 1375..1376, + ), + }, + ), + span: Span( + 1376..1378, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 1377..1378, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 1381..1382, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 1389..1396, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 1388..1389, + ), + }, + ), + span: Span( + 1389..1391, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 1390..1391, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 1394..1395, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 1402..1409, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 1401..1402, + ), + }, + ), + span: Span( + 1402..1404, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 1403..1404, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 1407..1408, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 1415..1514, + ), + name: Ident { + sym: "to_string", + span: Span( + 1418..1427, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 1428..1429, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 1441..1455, + ), + name: Ident { + sym: "string", + span: Span( + 1445..1451, + ), + }, + init: Literal( + String( + "", + Span( + 1454..1455, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 1466..1489, + ), + name: Ident { + sym: "string", + span: Span( + 1470..1476, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 1479..1489, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 1479..1485, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 1488..1489, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 1506..1507, + ), + }, + ), + ), + Span( + 1499..1508, + ), + ), + ], + span: Span( + 1431..1514, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 1521..1544, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 1520..1521, + ), + }, + ), + span: Span( + 1521..1531, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 1522..1531, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 1534..1543, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 1550..1560, + ), + }, + ), + span: Span( + 1560..1562, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 1569..1572, + ), + }, + ), + span: Span( + 1572..1574, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 1247..1577, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 1579..1845, + ), + name: Ident { + sym: "owo", + span: Span( + 1582..1585, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 1594..1603, + ), + }, + ), + span: Span( + 1603..1605, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 1611..1621, + ), + }, + ), + span: Span( + 1621..1623, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 1629..1640, + ), + }, + ), + span: Span( + 1640..1642, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 1649..1668, + ), + name: Ident { + sym: "d", + span: Span( + 1653..1654, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 1657..1666, + ), + }, + ), + span: Span( + 1666..1668, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 1675..1793, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 1678..1683, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 1678..1679, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 1682..1683, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 1694..1704, + ), + }, + ), + span: Span( + 1704..1706, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 1684..1713, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 1719..1793, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 1722..1728, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 1722..1723, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 1727..1728, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 1739..1750, + ), + }, + ), + span: Span( + 1750..1752, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 1729..1759, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 1775..1784, + ), + }, + ), + span: Span( + 1784..1786, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 1765..1793, + ), + }, + Span( + 1760..1793, + ), + ), + ), + }, + Span( + 1714..1793, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 1799..1840, + ), + }, + ), + span: Span( + 1840..1842, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 1588..1845, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 1847..2123, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 1850..1891, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 1900..1924, + ), + name: Ident { + sym: "code", + span: Span( + 1904..1908, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 1911..1924, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 1931..1933, + ), + }, + ), + span: Span( + 1933..1939, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 1934..1939, + ), + }, + ), + }, + ), + span: Span( + 1939..1956, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 1940..1948, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 1951..1955, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 1962..1969, + ), + }, + ), + span: Span( + 1969..1975, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 1970..1975, + ), + }, + ), + }, + ), + span: Span( + 1975..1992, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 1976..1990, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 1998..2027, + ), + name: Ident { + sym: "program", + span: Span( + 2002..2009, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 2012..2014, + ), + }, + ), + span: Span( + 2014..2019, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 2015..2019, + ), + }, + ), + }, + ), + span: Span( + 2019..2027, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 2020..2025, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 2033..2066, + ), + name: Ident { + sym: "output", + span: Span( + 2037..2043, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 2046..2053, + ), + }, + ), + span: Span( + 2053..2058, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 2054..2058, + ), + }, + ), + }, + ), + span: Span( + 2058..2066, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 2059..2064, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 2073..2121, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 2076..2087, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 2076..2082, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 2086..2087, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 2105..2113, + ), + ), + ), + Span( + 2099..2115, + ), + ), + ], + span: Span( + 2089..2121, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 1894..2123, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 2164..2173, + ), + name: Ident { + sym: "x", + span: Span( + 2168..2169, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 2172..2173, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 2176..2184, + ), + }, + ), + span: Span( + 2184..2187, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 2185..2186, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 2190..2248, + ), + name: Ident { + sym: "main", + span: Span( + 2193..2197, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 2206..2216, + ), + }, + ), + span: Span( + 2216..2234, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 2217..2222, + ), + }, + ), + span: Span( + 2222..2224, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 2226..2231, + ), + }, + ), + span: Span( + 2231..2233, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 2240..2243, + ), + }, + ), + span: Span( + 2243..2245, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 2200..2248, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 2250..2331, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 2253..2263, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 2264..2265, + ), + }, + Ident { + sym: "b", + span: Span( + 2267..2268, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 2293..2322, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 2293..2294, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 2297..2322, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 2297..2298, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 2302..2322, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 2301..2302, + ), + }, + ), + span: Span( + 2302..2304, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 2303..2304, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 2307..2308, + ), + }, + ), + span: Span( + 2308..2314, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 2309..2314, + ), + }, + ), + }, + ), + span: Span( + 2314..2316, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 2316..2322, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 2317..2322, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 2276..2329, + ), + ), + ], + span: Span( + 2270..2331, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 2333..2672, + ), + name: Ident { + sym: "uwu", + span: Span( + 2336..2339, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 2348..2357, + ), + name: Ident { + sym: "a", + span: Span( + 2352..2353, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 2356..2357, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 2363..2372, + ), + name: Ident { + sym: "b", + span: Span( + 2367..2368, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 2371..2372, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 2378..2387, + ), + name: Ident { + sym: "c", + span: Span( + 2382..2383, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 2386..2387, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 2393..2402, + ), + name: Ident { + sym: "d", + span: Span( + 2397..2398, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 2401..2402, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 2409..2434, + ), + name: Ident { + sym: "x", + span: Span( + 2413..2414, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 2417..2434, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 2417..2418, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 2421..2434, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 2421..2422, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 2425..2434, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 2425..2426, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 2429..2434, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 2429..2430, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 2433..2434, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 2446..2447, + ), + }, + ), + Span( + 2440..2448, + ), + ), + Declaration( + Declaration { + span: Span( + 2454..2464, + ), + name: Ident { + sym: "y", + span: Span( + 2458..2459, + ), + }, + init: Literal( + Object( + Span( + 2462..2464, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 2471..2478, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 2470..2471, + ), + }, + ), + span: Span( + 2471..2473, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 2472..2473, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 2476..2477, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 2484..2491, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 2483..2484, + ), + }, + ), + span: Span( + 2484..2486, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 2485..2486, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 2489..2490, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 2497..2504, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 2496..2497, + ), + }, + ), + span: Span( + 2497..2499, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 2498..2499, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 2502..2503, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 2510..2609, + ), + name: Ident { + sym: "to_string", + span: Span( + 2513..2522, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 2523..2524, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 2536..2550, + ), + name: Ident { + sym: "string", + span: Span( + 2540..2546, + ), + }, + init: Literal( + String( + "", + Span( + 2549..2550, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 2561..2584, + ), + name: Ident { + sym: "string", + span: Span( + 2565..2571, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 2574..2584, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 2574..2580, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 2583..2584, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 2601..2602, + ), + }, + ), + ), + Span( + 2594..2603, + ), + ), + ], + span: Span( + 2526..2609, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 2616..2639, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 2615..2616, + ), + }, + ), + span: Span( + 2616..2626, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 2617..2626, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 2629..2638, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 2645..2655, + ), + }, + ), + span: Span( + 2655..2657, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 2664..2667, + ), + }, + ), + span: Span( + 2667..2669, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 2342..2672, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 2674..2940, + ), + name: Ident { + sym: "owo", + span: Span( + 2677..2680, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 2689..2698, + ), + }, + ), + span: Span( + 2698..2700, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 2706..2716, + ), + }, + ), + span: Span( + 2716..2718, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 2724..2735, + ), + }, + ), + span: Span( + 2735..2737, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 2744..2763, + ), + name: Ident { + sym: "d", + span: Span( + 2748..2749, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 2752..2761, + ), + }, + ), + span: Span( + 2761..2763, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 2770..2888, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 2773..2778, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 2773..2774, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 2777..2778, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 2789..2799, + ), + }, + ), + span: Span( + 2799..2801, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 2779..2808, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 2814..2888, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 2817..2823, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 2817..2818, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 2822..2823, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 2834..2845, + ), + }, + ), + span: Span( + 2845..2847, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 2824..2854, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 2870..2879, + ), + }, + ), + span: Span( + 2879..2881, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 2860..2888, + ), + }, + Span( + 2855..2888, + ), + ), + ), + }, + Span( + 2809..2888, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 2894..2935, + ), + }, + ), + span: Span( + 2935..2937, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 2683..2940, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 2942..3218, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 2945..2986, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 2995..3019, + ), + name: Ident { + sym: "code", + span: Span( + 2999..3003, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 3006..3019, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 3026..3028, + ), + }, + ), + span: Span( + 3028..3034, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 3029..3034, + ), + }, + ), + }, + ), + span: Span( + 3034..3051, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 3035..3043, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 3046..3050, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 3057..3064, + ), + }, + ), + span: Span( + 3064..3070, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 3065..3070, + ), + }, + ), + }, + ), + span: Span( + 3070..3087, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 3071..3085, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 3093..3122, + ), + name: Ident { + sym: "program", + span: Span( + 3097..3104, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 3107..3109, + ), + }, + ), + span: Span( + 3109..3114, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 3110..3114, + ), + }, + ), + }, + ), + span: Span( + 3114..3122, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 3115..3120, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 3128..3161, + ), + name: Ident { + sym: "output", + span: Span( + 3132..3138, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 3141..3148, + ), + }, + ), + span: Span( + 3148..3153, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 3149..3153, + ), + }, + ), + }, + ), + span: Span( + 3153..3161, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 3154..3159, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 3168..3216, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 3171..3182, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 3171..3177, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 3181..3182, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 3200..3208, + ), + ), + ), + Span( + 3194..3210, + ), + ), + ], + span: Span( + 3184..3216, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 2989..3218, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 3259..3268, + ), + name: Ident { + sym: "x", + span: Span( + 3263..3264, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 3267..3268, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 3271..3279, + ), + }, + ), + span: Span( + 3279..3282, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 3280..3281, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 3285..3343, + ), + name: Ident { + sym: "main", + span: Span( + 3288..3292, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 3301..3311, + ), + }, + ), + span: Span( + 3311..3329, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 3312..3317, + ), + }, + ), + span: Span( + 3317..3319, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 3321..3326, + ), + }, + ), + span: Span( + 3326..3328, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 3335..3338, + ), + }, + ), + span: Span( + 3338..3340, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 3295..3343, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 3345..3426, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 3348..3358, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 3359..3360, + ), + }, + Ident { + sym: "b", + span: Span( + 3362..3363, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 3388..3417, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 3388..3389, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 3392..3417, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 3392..3393, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 3397..3417, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 3396..3397, + ), + }, + ), + span: Span( + 3397..3399, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 3398..3399, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 3402..3403, + ), + }, + ), + span: Span( + 3403..3409, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 3404..3409, + ), + }, + ), + }, + ), + span: Span( + 3409..3411, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 3411..3417, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 3412..3417, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 3371..3424, + ), + ), + ], + span: Span( + 3365..3426, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 3428..3767, + ), + name: Ident { + sym: "uwu", + span: Span( + 3431..3434, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 3443..3452, + ), + name: Ident { + sym: "a", + span: Span( + 3447..3448, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 3451..3452, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 3458..3467, + ), + name: Ident { + sym: "b", + span: Span( + 3462..3463, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 3466..3467, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 3473..3482, + ), + name: Ident { + sym: "c", + span: Span( + 3477..3478, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 3481..3482, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 3488..3497, + ), + name: Ident { + sym: "d", + span: Span( + 3492..3493, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 3496..3497, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 3504..3529, + ), + name: Ident { + sym: "x", + span: Span( + 3508..3509, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 3512..3529, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 3512..3513, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 3516..3529, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 3516..3517, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 3520..3529, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 3520..3521, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 3524..3529, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 3524..3525, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 3528..3529, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 3541..3542, + ), + }, + ), + Span( + 3535..3543, + ), + ), + Declaration( + Declaration { + span: Span( + 3549..3559, + ), + name: Ident { + sym: "y", + span: Span( + 3553..3554, + ), + }, + init: Literal( + Object( + Span( + 3557..3559, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 3566..3573, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 3565..3566, + ), + }, + ), + span: Span( + 3566..3568, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 3567..3568, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 3571..3572, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 3579..3586, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 3578..3579, + ), + }, + ), + span: Span( + 3579..3581, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 3580..3581, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 3584..3585, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 3592..3599, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 3591..3592, + ), + }, + ), + span: Span( + 3592..3594, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 3593..3594, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 3597..3598, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 3605..3704, + ), + name: Ident { + sym: "to_string", + span: Span( + 3608..3617, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 3618..3619, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 3631..3645, + ), + name: Ident { + sym: "string", + span: Span( + 3635..3641, + ), + }, + init: Literal( + String( + "", + Span( + 3644..3645, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 3656..3679, + ), + name: Ident { + sym: "string", + span: Span( + 3660..3666, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 3669..3679, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 3669..3675, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 3678..3679, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 3696..3697, + ), + }, + ), + ), + Span( + 3689..3698, + ), + ), + ], + span: Span( + 3621..3704, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 3711..3734, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 3710..3711, + ), + }, + ), + span: Span( + 3711..3721, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 3712..3721, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 3724..3733, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 3740..3750, + ), + }, + ), + span: Span( + 3750..3752, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 3759..3762, + ), + }, + ), + span: Span( + 3762..3764, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 3437..3767, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 3769..4035, + ), + name: Ident { + sym: "owo", + span: Span( + 3772..3775, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 3784..3793, + ), + }, + ), + span: Span( + 3793..3795, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 3801..3811, + ), + }, + ), + span: Span( + 3811..3813, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 3819..3830, + ), + }, + ), + span: Span( + 3830..3832, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 3839..3858, + ), + name: Ident { + sym: "d", + span: Span( + 3843..3844, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 3847..3856, + ), + }, + ), + span: Span( + 3856..3858, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 3865..3983, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 3868..3873, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 3868..3869, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 3872..3873, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 3884..3894, + ), + }, + ), + span: Span( + 3894..3896, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 3874..3903, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 3909..3983, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 3912..3918, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 3912..3913, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 3917..3918, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 3929..3940, + ), + }, + ), + span: Span( + 3940..3942, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 3919..3949, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 3965..3974, + ), + }, + ), + span: Span( + 3974..3976, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 3955..3983, + ), + }, + Span( + 3950..3983, + ), + ), + ), + }, + Span( + 3904..3983, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 3989..4030, + ), + }, + ), + span: Span( + 4030..4032, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 3778..4035, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 4037..4313, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 4040..4081, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 4090..4114, + ), + name: Ident { + sym: "code", + span: Span( + 4094..4098, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 4101..4114, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 4121..4123, + ), + }, + ), + span: Span( + 4123..4129, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 4124..4129, + ), + }, + ), + }, + ), + span: Span( + 4129..4146, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 4130..4138, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 4141..4145, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 4152..4159, + ), + }, + ), + span: Span( + 4159..4165, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 4160..4165, + ), + }, + ), + }, + ), + span: Span( + 4165..4182, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 4166..4180, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 4188..4217, + ), + name: Ident { + sym: "program", + span: Span( + 4192..4199, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 4202..4204, + ), + }, + ), + span: Span( + 4204..4209, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 4205..4209, + ), + }, + ), + }, + ), + span: Span( + 4209..4217, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 4210..4215, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 4223..4256, + ), + name: Ident { + sym: "output", + span: Span( + 4227..4233, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 4236..4243, + ), + }, + ), + span: Span( + 4243..4248, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 4244..4248, + ), + }, + ), + }, + ), + span: Span( + 4248..4256, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 4249..4254, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 4263..4311, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 4266..4277, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 4266..4272, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 4276..4277, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 4295..4303, + ), + ), + ), + Span( + 4289..4305, + ), + ), + ], + span: Span( + 4279..4311, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 4084..4313, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 4354..4363, + ), + name: Ident { + sym: "x", + span: Span( + 4358..4359, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 4362..4363, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 4366..4374, + ), + }, + ), + span: Span( + 4374..4377, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 4375..4376, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 4379..4437, + ), + name: Ident { + sym: "main", + span: Span( + 4382..4386, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 4395..4405, + ), + }, + ), + span: Span( + 4405..4423, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 4406..4411, + ), + }, + ), + span: Span( + 4411..4413, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 4415..4420, + ), + }, + ), + span: Span( + 4420..4422, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 4429..4432, + ), + }, + ), + span: Span( + 4432..4434, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 4389..4437, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 4439..4520, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 4442..4452, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 4453..4454, + ), + }, + Ident { + sym: "b", + span: Span( + 4456..4457, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 4482..4511, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 4482..4483, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 4486..4511, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 4486..4487, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 4491..4511, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 4490..4491, + ), + }, + ), + span: Span( + 4491..4493, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 4492..4493, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 4496..4497, + ), + }, + ), + span: Span( + 4497..4503, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 4498..4503, + ), + }, + ), + }, + ), + span: Span( + 4503..4505, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 4505..4511, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 4506..4511, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 4465..4518, + ), + ), + ], + span: Span( + 4459..4520, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 4522..4861, + ), + name: Ident { + sym: "uwu", + span: Span( + 4525..4528, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 4537..4546, + ), + name: Ident { + sym: "a", + span: Span( + 4541..4542, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 4545..4546, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 4552..4561, + ), + name: Ident { + sym: "b", + span: Span( + 4556..4557, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 4560..4561, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 4567..4576, + ), + name: Ident { + sym: "c", + span: Span( + 4571..4572, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 4575..4576, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 4582..4591, + ), + name: Ident { + sym: "d", + span: Span( + 4586..4587, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 4590..4591, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 4598..4623, + ), + name: Ident { + sym: "x", + span: Span( + 4602..4603, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 4606..4623, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 4606..4607, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 4610..4623, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 4610..4611, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 4614..4623, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 4614..4615, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 4618..4623, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 4618..4619, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 4622..4623, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 4635..4636, + ), + }, + ), + Span( + 4629..4637, + ), + ), + Declaration( + Declaration { + span: Span( + 4643..4653, + ), + name: Ident { + sym: "y", + span: Span( + 4647..4648, + ), + }, + init: Literal( + Object( + Span( + 4651..4653, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 4660..4667, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 4659..4660, + ), + }, + ), + span: Span( + 4660..4662, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 4661..4662, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 4665..4666, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 4673..4680, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 4672..4673, + ), + }, + ), + span: Span( + 4673..4675, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 4674..4675, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 4678..4679, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 4686..4693, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 4685..4686, + ), + }, + ), + span: Span( + 4686..4688, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 4687..4688, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 4691..4692, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 4699..4798, + ), + name: Ident { + sym: "to_string", + span: Span( + 4702..4711, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 4712..4713, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 4725..4739, + ), + name: Ident { + sym: "string", + span: Span( + 4729..4735, + ), + }, + init: Literal( + String( + "", + Span( + 4738..4739, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 4750..4773, + ), + name: Ident { + sym: "string", + span: Span( + 4754..4760, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 4763..4773, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 4763..4769, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 4772..4773, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 4790..4791, + ), + }, + ), + ), + Span( + 4783..4792, + ), + ), + ], + span: Span( + 4715..4798, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 4805..4828, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 4804..4805, + ), + }, + ), + span: Span( + 4805..4815, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 4806..4815, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 4818..4827, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 4834..4844, + ), + }, + ), + span: Span( + 4844..4846, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 4853..4856, + ), + }, + ), + span: Span( + 4856..4858, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 4531..4861, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 4863..5129, + ), + name: Ident { + sym: "owo", + span: Span( + 4866..4869, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 4878..4887, + ), + }, + ), + span: Span( + 4887..4889, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 4895..4905, + ), + }, + ), + span: Span( + 4905..4907, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 4913..4924, + ), + }, + ), + span: Span( + 4924..4926, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 4933..4952, + ), + name: Ident { + sym: "d", + span: Span( + 4937..4938, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 4941..4950, + ), + }, + ), + span: Span( + 4950..4952, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 4959..5077, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 4962..4967, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 4962..4963, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 4966..4967, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 4978..4988, + ), + }, + ), + span: Span( + 4988..4990, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 4968..4997, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 5003..5077, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 5006..5012, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 5006..5007, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 5011..5012, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 5023..5034, + ), + }, + ), + span: Span( + 5034..5036, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 5013..5043, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 5059..5068, + ), + }, + ), + span: Span( + 5068..5070, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 5049..5077, + ), + }, + Span( + 5044..5077, + ), + ), + ), + }, + Span( + 4998..5077, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 5083..5124, + ), + }, + ), + span: Span( + 5124..5126, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 4872..5129, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 5131..5407, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 5134..5175, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 5184..5208, + ), + name: Ident { + sym: "code", + span: Span( + 5188..5192, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 5195..5208, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 5215..5217, + ), + }, + ), + span: Span( + 5217..5223, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 5218..5223, + ), + }, + ), + }, + ), + span: Span( + 5223..5240, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 5224..5232, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 5235..5239, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 5246..5253, + ), + }, + ), + span: Span( + 5253..5259, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 5254..5259, + ), + }, + ), + }, + ), + span: Span( + 5259..5276, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 5260..5274, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 5282..5311, + ), + name: Ident { + sym: "program", + span: Span( + 5286..5293, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 5296..5298, + ), + }, + ), + span: Span( + 5298..5303, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 5299..5303, + ), + }, + ), + }, + ), + span: Span( + 5303..5311, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 5304..5309, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 5317..5350, + ), + name: Ident { + sym: "output", + span: Span( + 5321..5327, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 5330..5337, + ), + }, + ), + span: Span( + 5337..5342, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 5338..5342, + ), + }, + ), + }, + ), + span: Span( + 5342..5350, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 5343..5348, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 5357..5405, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 5360..5371, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 5360..5366, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 5370..5371, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 5389..5397, + ), + ), + ), + Span( + 5383..5399, + ), + ), + ], + span: Span( + 5373..5405, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 5178..5407, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 5448..5457, + ), + name: Ident { + sym: "x", + span: Span( + 5452..5453, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 5456..5457, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 5460..5468, + ), + }, + ), + span: Span( + 5468..5471, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 5469..5470, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 5474..5532, + ), + name: Ident { + sym: "main", + span: Span( + 5477..5481, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 5490..5500, + ), + }, + ), + span: Span( + 5500..5518, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 5501..5506, + ), + }, + ), + span: Span( + 5506..5508, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 5510..5515, + ), + }, + ), + span: Span( + 5515..5517, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 5524..5527, + ), + }, + ), + span: Span( + 5527..5529, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 5484..5532, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 5534..5615, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 5537..5547, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 5548..5549, + ), + }, + Ident { + sym: "b", + span: Span( + 5551..5552, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 5577..5606, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 5577..5578, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 5581..5606, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 5581..5582, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 5586..5606, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 5585..5586, + ), + }, + ), + span: Span( + 5586..5588, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 5587..5588, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 5591..5592, + ), + }, + ), + span: Span( + 5592..5598, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 5593..5598, + ), + }, + ), + }, + ), + span: Span( + 5598..5600, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 5600..5606, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 5601..5606, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 5560..5613, + ), + ), + ], + span: Span( + 5554..5615, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 5617..5956, + ), + name: Ident { + sym: "uwu", + span: Span( + 5620..5623, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 5632..5641, + ), + name: Ident { + sym: "a", + span: Span( + 5636..5637, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 5640..5641, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 5647..5656, + ), + name: Ident { + sym: "b", + span: Span( + 5651..5652, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 5655..5656, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 5662..5671, + ), + name: Ident { + sym: "c", + span: Span( + 5666..5667, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 5670..5671, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 5677..5686, + ), + name: Ident { + sym: "d", + span: Span( + 5681..5682, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 5685..5686, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 5693..5718, + ), + name: Ident { + sym: "x", + span: Span( + 5697..5698, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 5701..5718, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 5701..5702, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 5705..5718, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 5705..5706, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 5709..5718, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 5709..5710, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 5713..5718, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 5713..5714, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 5717..5718, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 5730..5731, + ), + }, + ), + Span( + 5724..5732, + ), + ), + Declaration( + Declaration { + span: Span( + 5738..5748, + ), + name: Ident { + sym: "y", + span: Span( + 5742..5743, + ), + }, + init: Literal( + Object( + Span( + 5746..5748, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 5755..5762, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 5754..5755, + ), + }, + ), + span: Span( + 5755..5757, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 5756..5757, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 5760..5761, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 5768..5775, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 5767..5768, + ), + }, + ), + span: Span( + 5768..5770, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 5769..5770, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 5773..5774, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 5781..5788, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 5780..5781, + ), + }, + ), + span: Span( + 5781..5783, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 5782..5783, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 5786..5787, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 5794..5893, + ), + name: Ident { + sym: "to_string", + span: Span( + 5797..5806, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 5807..5808, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 5820..5834, + ), + name: Ident { + sym: "string", + span: Span( + 5824..5830, + ), + }, + init: Literal( + String( + "", + Span( + 5833..5834, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 5845..5868, + ), + name: Ident { + sym: "string", + span: Span( + 5849..5855, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 5858..5868, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 5858..5864, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 5867..5868, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 5885..5886, + ), + }, + ), + ), + Span( + 5878..5887, + ), + ), + ], + span: Span( + 5810..5893, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 5900..5923, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 5899..5900, + ), + }, + ), + span: Span( + 5900..5910, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 5901..5910, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 5913..5922, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 5929..5939, + ), + }, + ), + span: Span( + 5939..5941, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 5948..5951, + ), + }, + ), + span: Span( + 5951..5953, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 5626..5956, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 5958..6224, + ), + name: Ident { + sym: "owo", + span: Span( + 5961..5964, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 5973..5982, + ), + }, + ), + span: Span( + 5982..5984, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 5990..6000, + ), + }, + ), + span: Span( + 6000..6002, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 6008..6019, + ), + }, + ), + span: Span( + 6019..6021, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 6028..6047, + ), + name: Ident { + sym: "d", + span: Span( + 6032..6033, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 6036..6045, + ), + }, + ), + span: Span( + 6045..6047, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 6054..6172, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 6057..6062, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 6057..6058, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 6061..6062, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 6073..6083, + ), + }, + ), + span: Span( + 6083..6085, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 6063..6092, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 6098..6172, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 6101..6107, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 6101..6102, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 6106..6107, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 6118..6129, + ), + }, + ), + span: Span( + 6129..6131, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 6108..6138, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 6154..6163, + ), + }, + ), + span: Span( + 6163..6165, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 6144..6172, + ), + }, + Span( + 6139..6172, + ), + ), + ), + }, + Span( + 6093..6172, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 6178..6219, + ), + }, + ), + span: Span( + 6219..6221, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 5967..6224, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 6226..6502, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 6229..6270, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 6279..6303, + ), + name: Ident { + sym: "code", + span: Span( + 6283..6287, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 6290..6303, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 6310..6312, + ), + }, + ), + span: Span( + 6312..6318, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 6313..6318, + ), + }, + ), + }, + ), + span: Span( + 6318..6335, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 6319..6327, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 6330..6334, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 6341..6348, + ), + }, + ), + span: Span( + 6348..6354, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 6349..6354, + ), + }, + ), + }, + ), + span: Span( + 6354..6371, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 6355..6369, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 6377..6406, + ), + name: Ident { + sym: "program", + span: Span( + 6381..6388, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 6391..6393, + ), + }, + ), + span: Span( + 6393..6398, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 6394..6398, + ), + }, + ), + }, + ), + span: Span( + 6398..6406, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 6399..6404, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 6412..6445, + ), + name: Ident { + sym: "output", + span: Span( + 6416..6422, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 6425..6432, + ), + }, + ), + span: Span( + 6432..6437, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 6433..6437, + ), + }, + ), + }, + ), + span: Span( + 6437..6445, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 6438..6443, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 6452..6500, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 6455..6466, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 6455..6461, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 6465..6466, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 6484..6492, + ), + ), + ), + Span( + 6478..6494, + ), + ), + ], + span: Span( + 6468..6500, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 6273..6502, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 6543..6552, + ), + name: Ident { + sym: "x", + span: Span( + 6547..6548, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 6551..6552, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 6555..6563, + ), + }, + ), + span: Span( + 6563..6566, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 6564..6565, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 6569..6627, + ), + name: Ident { + sym: "main", + span: Span( + 6572..6576, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 6585..6595, + ), + }, + ), + span: Span( + 6595..6613, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 6596..6601, + ), + }, + ), + span: Span( + 6601..6603, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 6605..6610, + ), + }, + ), + span: Span( + 6610..6612, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 6619..6622, + ), + }, + ), + span: Span( + 6622..6624, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 6579..6627, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 6629..6710, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 6632..6642, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 6643..6644, + ), + }, + Ident { + sym: "b", + span: Span( + 6646..6647, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 6672..6701, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 6672..6673, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 6676..6701, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 6676..6677, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 6681..6701, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 6680..6681, + ), + }, + ), + span: Span( + 6681..6683, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 6682..6683, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 6686..6687, + ), + }, + ), + span: Span( + 6687..6693, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 6688..6693, + ), + }, + ), + }, + ), + span: Span( + 6693..6695, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 6695..6701, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 6696..6701, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 6655..6708, + ), + ), + ], + span: Span( + 6649..6710, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 6712..7051, + ), + name: Ident { + sym: "uwu", + span: Span( + 6715..6718, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 6727..6736, + ), + name: Ident { + sym: "a", + span: Span( + 6731..6732, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 6735..6736, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 6742..6751, + ), + name: Ident { + sym: "b", + span: Span( + 6746..6747, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 6750..6751, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 6757..6766, + ), + name: Ident { + sym: "c", + span: Span( + 6761..6762, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 6765..6766, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 6772..6781, + ), + name: Ident { + sym: "d", + span: Span( + 6776..6777, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 6780..6781, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 6788..6813, + ), + name: Ident { + sym: "x", + span: Span( + 6792..6793, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 6796..6813, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 6796..6797, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 6800..6813, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 6800..6801, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 6804..6813, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 6804..6805, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 6808..6813, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 6808..6809, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 6812..6813, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 6825..6826, + ), + }, + ), + Span( + 6819..6827, + ), + ), + Declaration( + Declaration { + span: Span( + 6833..6843, + ), + name: Ident { + sym: "y", + span: Span( + 6837..6838, + ), + }, + init: Literal( + Object( + Span( + 6841..6843, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 6850..6857, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 6849..6850, + ), + }, + ), + span: Span( + 6850..6852, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 6851..6852, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 6855..6856, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 6863..6870, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 6862..6863, + ), + }, + ), + span: Span( + 6863..6865, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 6864..6865, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 6868..6869, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 6876..6883, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 6875..6876, + ), + }, + ), + span: Span( + 6876..6878, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 6877..6878, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 6881..6882, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 6889..6988, + ), + name: Ident { + sym: "to_string", + span: Span( + 6892..6901, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 6902..6903, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 6915..6929, + ), + name: Ident { + sym: "string", + span: Span( + 6919..6925, + ), + }, + init: Literal( + String( + "", + Span( + 6928..6929, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 6940..6963, + ), + name: Ident { + sym: "string", + span: Span( + 6944..6950, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 6953..6963, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 6953..6959, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 6962..6963, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 6980..6981, + ), + }, + ), + ), + Span( + 6973..6982, + ), + ), + ], + span: Span( + 6905..6988, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 6995..7018, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 6994..6995, + ), + }, + ), + span: Span( + 6995..7005, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 6996..7005, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 7008..7017, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 7024..7034, + ), + }, + ), + span: Span( + 7034..7036, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 7043..7046, + ), + }, + ), + span: Span( + 7046..7048, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 6721..7051, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 7053..7319, + ), + name: Ident { + sym: "owo", + span: Span( + 7056..7059, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 7068..7077, + ), + }, + ), + span: Span( + 7077..7079, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 7085..7095, + ), + }, + ), + span: Span( + 7095..7097, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 7103..7114, + ), + }, + ), + span: Span( + 7114..7116, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 7123..7142, + ), + name: Ident { + sym: "d", + span: Span( + 7127..7128, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 7131..7140, + ), + }, + ), + span: Span( + 7140..7142, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 7149..7267, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 7152..7157, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 7152..7153, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 7156..7157, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 7168..7178, + ), + }, + ), + span: Span( + 7178..7180, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 7158..7187, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 7193..7267, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 7196..7202, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 7196..7197, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 7201..7202, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 7213..7224, + ), + }, + ), + span: Span( + 7224..7226, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 7203..7233, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 7249..7258, + ), + }, + ), + span: Span( + 7258..7260, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 7239..7267, + ), + }, + Span( + 7234..7267, + ), + ), + ), + }, + Span( + 7188..7267, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 7273..7314, + ), + }, + ), + span: Span( + 7314..7316, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 7062..7319, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 7321..7597, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 7324..7365, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 7374..7398, + ), + name: Ident { + sym: "code", + span: Span( + 7378..7382, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 7385..7398, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 7405..7407, + ), + }, + ), + span: Span( + 7407..7413, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 7408..7413, + ), + }, + ), + }, + ), + span: Span( + 7413..7430, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 7414..7422, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 7425..7429, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 7436..7443, + ), + }, + ), + span: Span( + 7443..7449, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 7444..7449, + ), + }, + ), + }, + ), + span: Span( + 7449..7466, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 7450..7464, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 7472..7501, + ), + name: Ident { + sym: "program", + span: Span( + 7476..7483, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 7486..7488, + ), + }, + ), + span: Span( + 7488..7493, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 7489..7493, + ), + }, + ), + }, + ), + span: Span( + 7493..7501, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 7494..7499, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 7507..7540, + ), + name: Ident { + sym: "output", + span: Span( + 7511..7517, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 7520..7527, + ), + }, + ), + span: Span( + 7527..7532, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 7528..7532, + ), + }, + ), + }, + ), + span: Span( + 7532..7540, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 7533..7538, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 7547..7595, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 7550..7561, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 7550..7556, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 7560..7561, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 7579..7587, + ), + ), + ), + Span( + 7573..7589, + ), + ), + ], + span: Span( + 7563..7595, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 7368..7597, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 7638..7647, + ), + name: Ident { + sym: "x", + span: Span( + 7642..7643, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 7646..7647, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 7650..7658, + ), + }, + ), + span: Span( + 7658..7661, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 7659..7660, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 7664..7722, + ), + name: Ident { + sym: "main", + span: Span( + 7667..7671, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 7680..7690, + ), + }, + ), + span: Span( + 7690..7708, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 7691..7696, + ), + }, + ), + span: Span( + 7696..7698, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 7700..7705, + ), + }, + ), + span: Span( + 7705..7707, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 7714..7717, + ), + }, + ), + span: Span( + 7717..7719, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 7674..7722, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 7724..7805, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 7727..7737, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 7738..7739, + ), + }, + Ident { + sym: "b", + span: Span( + 7741..7742, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 7767..7796, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 7767..7768, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 7771..7796, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 7771..7772, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 7776..7796, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 7775..7776, + ), + }, + ), + span: Span( + 7776..7778, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 7777..7778, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 7781..7782, + ), + }, + ), + span: Span( + 7782..7788, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 7783..7788, + ), + }, + ), + }, + ), + span: Span( + 7788..7790, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 7790..7796, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 7791..7796, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 7750..7803, + ), + ), + ], + span: Span( + 7744..7805, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 7807..8146, + ), + name: Ident { + sym: "uwu", + span: Span( + 7810..7813, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 7822..7831, + ), + name: Ident { + sym: "a", + span: Span( + 7826..7827, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 7830..7831, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 7837..7846, + ), + name: Ident { + sym: "b", + span: Span( + 7841..7842, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 7845..7846, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 7852..7861, + ), + name: Ident { + sym: "c", + span: Span( + 7856..7857, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 7860..7861, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 7867..7876, + ), + name: Ident { + sym: "d", + span: Span( + 7871..7872, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 7875..7876, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 7883..7908, + ), + name: Ident { + sym: "x", + span: Span( + 7887..7888, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 7891..7908, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 7891..7892, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 7895..7908, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 7895..7896, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 7899..7908, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 7899..7900, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 7903..7908, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 7903..7904, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 7907..7908, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 7920..7921, + ), + }, + ), + Span( + 7914..7922, + ), + ), + Declaration( + Declaration { + span: Span( + 7928..7938, + ), + name: Ident { + sym: "y", + span: Span( + 7932..7933, + ), + }, + init: Literal( + Object( + Span( + 7936..7938, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 7945..7952, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 7944..7945, + ), + }, + ), + span: Span( + 7945..7947, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 7946..7947, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 7950..7951, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 7958..7965, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 7957..7958, + ), + }, + ), + span: Span( + 7958..7960, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 7959..7960, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 7963..7964, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 7971..7978, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 7970..7971, + ), + }, + ), + span: Span( + 7971..7973, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 7972..7973, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 7976..7977, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 7984..8083, + ), + name: Ident { + sym: "to_string", + span: Span( + 7987..7996, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 7997..7998, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 8010..8024, + ), + name: Ident { + sym: "string", + span: Span( + 8014..8020, + ), + }, + init: Literal( + String( + "", + Span( + 8023..8024, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 8035..8058, + ), + name: Ident { + sym: "string", + span: Span( + 8039..8045, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 8048..8058, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 8048..8054, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 8057..8058, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 8075..8076, + ), + }, + ), + ), + Span( + 8068..8077, + ), + ), + ], + span: Span( + 8000..8083, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 8090..8113, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 8089..8090, + ), + }, + ), + span: Span( + 8090..8100, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 8091..8100, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 8103..8112, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 8119..8129, + ), + }, + ), + span: Span( + 8129..8131, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 8138..8141, + ), + }, + ), + span: Span( + 8141..8143, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 7816..8146, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 8148..8414, + ), + name: Ident { + sym: "owo", + span: Span( + 8151..8154, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 8163..8172, + ), + }, + ), + span: Span( + 8172..8174, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 8180..8190, + ), + }, + ), + span: Span( + 8190..8192, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 8198..8209, + ), + }, + ), + span: Span( + 8209..8211, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 8218..8237, + ), + name: Ident { + sym: "d", + span: Span( + 8222..8223, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 8226..8235, + ), + }, + ), + span: Span( + 8235..8237, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 8244..8362, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 8247..8252, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 8247..8248, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 8251..8252, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 8263..8273, + ), + }, + ), + span: Span( + 8273..8275, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 8253..8282, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 8288..8362, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 8291..8297, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 8291..8292, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 8296..8297, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 8308..8319, + ), + }, + ), + span: Span( + 8319..8321, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 8298..8328, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 8344..8353, + ), + }, + ), + span: Span( + 8353..8355, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 8334..8362, + ), + }, + Span( + 8329..8362, + ), + ), + ), + }, + Span( + 8283..8362, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 8368..8409, + ), + }, + ), + span: Span( + 8409..8411, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 8157..8414, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 8416..8692, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 8419..8460, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 8469..8493, + ), + name: Ident { + sym: "code", + span: Span( + 8473..8477, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 8480..8493, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 8500..8502, + ), + }, + ), + span: Span( + 8502..8508, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 8503..8508, + ), + }, + ), + }, + ), + span: Span( + 8508..8525, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 8509..8517, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 8520..8524, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 8531..8538, + ), + }, + ), + span: Span( + 8538..8544, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 8539..8544, + ), + }, + ), + }, + ), + span: Span( + 8544..8561, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 8545..8559, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 8567..8596, + ), + name: Ident { + sym: "program", + span: Span( + 8571..8578, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 8581..8583, + ), + }, + ), + span: Span( + 8583..8588, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 8584..8588, + ), + }, + ), + }, + ), + span: Span( + 8588..8596, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 8589..8594, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 8602..8635, + ), + name: Ident { + sym: "output", + span: Span( + 8606..8612, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 8615..8622, + ), + }, + ), + span: Span( + 8622..8627, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 8623..8627, + ), + }, + ), + }, + ), + span: Span( + 8627..8635, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 8628..8633, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 8642..8690, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 8645..8656, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 8645..8651, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 8655..8656, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 8674..8682, + ), + ), + ), + Span( + 8668..8684, + ), + ), + ], + span: Span( + 8658..8690, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 8463..8692, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 8733..8742, + ), + name: Ident { + sym: "x", + span: Span( + 8737..8738, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 8741..8742, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 8745..8753, + ), + }, + ), + span: Span( + 8753..8756, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 8754..8755, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 8758..8816, + ), + name: Ident { + sym: "main", + span: Span( + 8761..8765, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 8774..8784, + ), + }, + ), + span: Span( + 8784..8802, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 8785..8790, + ), + }, + ), + span: Span( + 8790..8792, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 8794..8799, + ), + }, + ), + span: Span( + 8799..8801, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 8808..8811, + ), + }, + ), + span: Span( + 8811..8813, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 8768..8816, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 8818..8899, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 8821..8831, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 8832..8833, + ), + }, + Ident { + sym: "b", + span: Span( + 8835..8836, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 8861..8890, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 8861..8862, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 8865..8890, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 8865..8866, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 8870..8890, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 8869..8870, + ), + }, + ), + span: Span( + 8870..8872, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 8871..8872, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 8875..8876, + ), + }, + ), + span: Span( + 8876..8882, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 8877..8882, + ), + }, + ), + }, + ), + span: Span( + 8882..8884, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 8884..8890, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 8885..8890, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 8844..8897, + ), + ), + ], + span: Span( + 8838..8899, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 8901..9240, + ), + name: Ident { + sym: "uwu", + span: Span( + 8904..8907, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 8916..8925, + ), + name: Ident { + sym: "a", + span: Span( + 8920..8921, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 8924..8925, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 8931..8940, + ), + name: Ident { + sym: "b", + span: Span( + 8935..8936, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 8939..8940, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 8946..8955, + ), + name: Ident { + sym: "c", + span: Span( + 8950..8951, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 8954..8955, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 8961..8970, + ), + name: Ident { + sym: "d", + span: Span( + 8965..8966, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 8969..8970, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 8977..9002, + ), + name: Ident { + sym: "x", + span: Span( + 8981..8982, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 8985..9002, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 8985..8986, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 8989..9002, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 8989..8990, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 8993..9002, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 8993..8994, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 8997..9002, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 8997..8998, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 9001..9002, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 9014..9015, + ), + }, + ), + Span( + 9008..9016, + ), + ), + Declaration( + Declaration { + span: Span( + 9022..9032, + ), + name: Ident { + sym: "y", + span: Span( + 9026..9027, + ), + }, + init: Literal( + Object( + Span( + 9030..9032, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 9039..9046, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 9038..9039, + ), + }, + ), + span: Span( + 9039..9041, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 9040..9041, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 9044..9045, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 9052..9059, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 9051..9052, + ), + }, + ), + span: Span( + 9052..9054, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 9053..9054, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 9057..9058, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 9065..9072, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 9064..9065, + ), + }, + ), + span: Span( + 9065..9067, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 9066..9067, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 9070..9071, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 9078..9177, + ), + name: Ident { + sym: "to_string", + span: Span( + 9081..9090, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 9091..9092, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 9104..9118, + ), + name: Ident { + sym: "string", + span: Span( + 9108..9114, + ), + }, + init: Literal( + String( + "", + Span( + 9117..9118, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 9129..9152, + ), + name: Ident { + sym: "string", + span: Span( + 9133..9139, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 9142..9152, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 9142..9148, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 9151..9152, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 9169..9170, + ), + }, + ), + ), + Span( + 9162..9171, + ), + ), + ], + span: Span( + 9094..9177, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 9184..9207, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 9183..9184, + ), + }, + ), + span: Span( + 9184..9194, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 9185..9194, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 9197..9206, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 9213..9223, + ), + }, + ), + span: Span( + 9223..9225, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 9232..9235, + ), + }, + ), + span: Span( + 9235..9237, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 8910..9240, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 9242..9508, + ), + name: Ident { + sym: "owo", + span: Span( + 9245..9248, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 9257..9266, + ), + }, + ), + span: Span( + 9266..9268, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 9274..9284, + ), + }, + ), + span: Span( + 9284..9286, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 9292..9303, + ), + }, + ), + span: Span( + 9303..9305, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 9312..9331, + ), + name: Ident { + sym: "d", + span: Span( + 9316..9317, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 9320..9329, + ), + }, + ), + span: Span( + 9329..9331, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 9338..9456, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 9341..9346, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 9341..9342, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 9345..9346, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 9357..9367, + ), + }, + ), + span: Span( + 9367..9369, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 9347..9376, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 9382..9456, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 9385..9391, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 9385..9386, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 9390..9391, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 9402..9413, + ), + }, + ), + span: Span( + 9413..9415, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 9392..9422, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 9438..9447, + ), + }, + ), + span: Span( + 9447..9449, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 9428..9456, + ), + }, + Span( + 9423..9456, + ), + ), + ), + }, + Span( + 9377..9456, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 9462..9503, + ), + }, + ), + span: Span( + 9503..9505, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 9251..9508, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 9510..9786, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 9513..9554, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 9563..9587, + ), + name: Ident { + sym: "code", + span: Span( + 9567..9571, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 9574..9587, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 9594..9596, + ), + }, + ), + span: Span( + 9596..9602, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 9597..9602, + ), + }, + ), + }, + ), + span: Span( + 9602..9619, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 9603..9611, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 9614..9618, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 9625..9632, + ), + }, + ), + span: Span( + 9632..9638, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 9633..9638, + ), + }, + ), + }, + ), + span: Span( + 9638..9655, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 9639..9653, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 9661..9690, + ), + name: Ident { + sym: "program", + span: Span( + 9665..9672, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 9675..9677, + ), + }, + ), + span: Span( + 9677..9682, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 9678..9682, + ), + }, + ), + }, + ), + span: Span( + 9682..9690, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 9683..9688, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 9696..9729, + ), + name: Ident { + sym: "output", + span: Span( + 9700..9706, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 9709..9716, + ), + }, + ), + span: Span( + 9716..9721, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 9717..9721, + ), + }, + ), + }, + ), + span: Span( + 9721..9729, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 9722..9727, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 9736..9784, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 9739..9750, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 9739..9745, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 9749..9750, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 9768..9776, + ), + ), + ), + Span( + 9762..9778, + ), + ), + ], + span: Span( + 9752..9784, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 9557..9786, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 9827..9836, + ), + name: Ident { + sym: "x", + span: Span( + 9831..9832, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 9835..9836, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 9839..9847, + ), + }, + ), + span: Span( + 9847..9850, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 9848..9849, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 9853..9911, + ), + name: Ident { + sym: "main", + span: Span( + 9856..9860, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 9869..9879, + ), + }, + ), + span: Span( + 9879..9897, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 9880..9885, + ), + }, + ), + span: Span( + 9885..9887, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 9889..9894, + ), + }, + ), + span: Span( + 9894..9896, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 9903..9906, + ), + }, + ), + span: Span( + 9906..9908, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 9863..9911, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 9913..9994, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 9916..9926, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 9927..9928, + ), + }, + Ident { + sym: "b", + span: Span( + 9930..9931, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 9956..9985, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 9956..9957, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 9960..9985, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 9960..9961, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 9965..9985, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 9964..9965, + ), + }, + ), + span: Span( + 9965..9967, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 9966..9967, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 9970..9971, + ), + }, + ), + span: Span( + 9971..9977, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 9972..9977, + ), + }, + ), + }, + ), + span: Span( + 9977..9979, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 9979..9985, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 9980..9985, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 9939..9992, + ), + ), + ], + span: Span( + 9933..9994, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 9996..10335, + ), + name: Ident { + sym: "uwu", + span: Span( + 9999..10002, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 10011..10020, + ), + name: Ident { + sym: "a", + span: Span( + 10015..10016, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 10019..10020, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 10026..10035, + ), + name: Ident { + sym: "b", + span: Span( + 10030..10031, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 10034..10035, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 10041..10050, + ), + name: Ident { + sym: "c", + span: Span( + 10045..10046, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 10049..10050, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 10056..10065, + ), + name: Ident { + sym: "d", + span: Span( + 10060..10061, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 10064..10065, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 10072..10097, + ), + name: Ident { + sym: "x", + span: Span( + 10076..10077, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 10080..10097, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 10080..10081, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 10084..10097, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 10084..10085, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 10088..10097, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 10088..10089, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 10092..10097, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 10092..10093, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 10096..10097, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 10109..10110, + ), + }, + ), + Span( + 10103..10111, + ), + ), + Declaration( + Declaration { + span: Span( + 10117..10127, + ), + name: Ident { + sym: "y", + span: Span( + 10121..10122, + ), + }, + init: Literal( + Object( + Span( + 10125..10127, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 10134..10141, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 10133..10134, + ), + }, + ), + span: Span( + 10134..10136, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 10135..10136, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 10139..10140, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 10147..10154, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 10146..10147, + ), + }, + ), + span: Span( + 10147..10149, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 10148..10149, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 10152..10153, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 10160..10167, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 10159..10160, + ), + }, + ), + span: Span( + 10160..10162, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 10161..10162, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 10165..10166, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 10173..10272, + ), + name: Ident { + sym: "to_string", + span: Span( + 10176..10185, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 10186..10187, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 10199..10213, + ), + name: Ident { + sym: "string", + span: Span( + 10203..10209, + ), + }, + init: Literal( + String( + "", + Span( + 10212..10213, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 10224..10247, + ), + name: Ident { + sym: "string", + span: Span( + 10228..10234, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 10237..10247, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 10237..10243, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 10246..10247, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 10264..10265, + ), + }, + ), + ), + Span( + 10257..10266, + ), + ), + ], + span: Span( + 10189..10272, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 10279..10302, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 10278..10279, + ), + }, + ), + span: Span( + 10279..10289, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 10280..10289, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 10292..10301, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 10308..10318, + ), + }, + ), + span: Span( + 10318..10320, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 10327..10330, + ), + }, + ), + span: Span( + 10330..10332, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 10005..10335, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 10337..10603, + ), + name: Ident { + sym: "owo", + span: Span( + 10340..10343, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 10352..10361, + ), + }, + ), + span: Span( + 10361..10363, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 10369..10379, + ), + }, + ), + span: Span( + 10379..10381, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 10387..10398, + ), + }, + ), + span: Span( + 10398..10400, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 10407..10426, + ), + name: Ident { + sym: "d", + span: Span( + 10411..10412, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 10415..10424, + ), + }, + ), + span: Span( + 10424..10426, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 10433..10551, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 10436..10441, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 10436..10437, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 10440..10441, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 10452..10462, + ), + }, + ), + span: Span( + 10462..10464, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 10442..10471, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 10477..10551, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 10480..10486, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 10480..10481, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 10485..10486, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 10497..10508, + ), + }, + ), + span: Span( + 10508..10510, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 10487..10517, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 10533..10542, + ), + }, + ), + span: Span( + 10542..10544, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 10523..10551, + ), + }, + Span( + 10518..10551, + ), + ), + ), + }, + Span( + 10472..10551, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 10557..10598, + ), + }, + ), + span: Span( + 10598..10600, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 10346..10603, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 10605..10881, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 10608..10649, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 10658..10682, + ), + name: Ident { + sym: "code", + span: Span( + 10662..10666, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 10669..10682, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 10689..10691, + ), + }, + ), + span: Span( + 10691..10697, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 10692..10697, + ), + }, + ), + }, + ), + span: Span( + 10697..10714, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 10698..10706, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 10709..10713, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 10720..10727, + ), + }, + ), + span: Span( + 10727..10733, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 10728..10733, + ), + }, + ), + }, + ), + span: Span( + 10733..10750, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 10734..10748, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 10756..10785, + ), + name: Ident { + sym: "program", + span: Span( + 10760..10767, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 10770..10772, + ), + }, + ), + span: Span( + 10772..10777, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 10773..10777, + ), + }, + ), + }, + ), + span: Span( + 10777..10785, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 10778..10783, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 10791..10824, + ), + name: Ident { + sym: "output", + span: Span( + 10795..10801, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 10804..10811, + ), + }, + ), + span: Span( + 10811..10816, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 10812..10816, + ), + }, + ), + }, + ), + span: Span( + 10816..10824, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 10817..10822, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 10831..10879, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 10834..10845, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 10834..10840, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 10844..10845, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 10863..10871, + ), + ), + ), + Span( + 10857..10873, + ), + ), + ], + span: Span( + 10847..10879, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 10652..10881, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 10922..10931, + ), + name: Ident { + sym: "x", + span: Span( + 10926..10927, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 10930..10931, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 10934..10942, + ), + }, + ), + span: Span( + 10942..10945, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 10943..10944, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 10948..11006, + ), + name: Ident { + sym: "main", + span: Span( + 10951..10955, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 10964..10974, + ), + }, + ), + span: Span( + 10974..10992, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 10975..10980, + ), + }, + ), + span: Span( + 10980..10982, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 10984..10989, + ), + }, + ), + span: Span( + 10989..10991, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 10998..11001, + ), + }, + ), + span: Span( + 11001..11003, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 10958..11006, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 11008..11089, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 11011..11021, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 11022..11023, + ), + }, + Ident { + sym: "b", + span: Span( + 11025..11026, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 11051..11080, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 11051..11052, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 11055..11080, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 11055..11056, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 11060..11080, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 11059..11060, + ), + }, + ), + span: Span( + 11060..11062, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 11061..11062, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 11065..11066, + ), + }, + ), + span: Span( + 11066..11072, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 11067..11072, + ), + }, + ), + }, + ), + span: Span( + 11072..11074, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 11074..11080, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 11075..11080, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 11034..11087, + ), + ), + ], + span: Span( + 11028..11089, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 11091..11430, + ), + name: Ident { + sym: "uwu", + span: Span( + 11094..11097, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 11106..11115, + ), + name: Ident { + sym: "a", + span: Span( + 11110..11111, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 11114..11115, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 11121..11130, + ), + name: Ident { + sym: "b", + span: Span( + 11125..11126, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 11129..11130, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 11136..11145, + ), + name: Ident { + sym: "c", + span: Span( + 11140..11141, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 11144..11145, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 11151..11160, + ), + name: Ident { + sym: "d", + span: Span( + 11155..11156, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 11159..11160, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 11167..11192, + ), + name: Ident { + sym: "x", + span: Span( + 11171..11172, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 11175..11192, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 11175..11176, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 11179..11192, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 11179..11180, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 11183..11192, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 11183..11184, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 11187..11192, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 11187..11188, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 11191..11192, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 11204..11205, + ), + }, + ), + Span( + 11198..11206, + ), + ), + Declaration( + Declaration { + span: Span( + 11212..11222, + ), + name: Ident { + sym: "y", + span: Span( + 11216..11217, + ), + }, + init: Literal( + Object( + Span( + 11220..11222, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 11229..11236, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 11228..11229, + ), + }, + ), + span: Span( + 11229..11231, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 11230..11231, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 11234..11235, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 11242..11249, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 11241..11242, + ), + }, + ), + span: Span( + 11242..11244, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 11243..11244, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 11247..11248, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 11255..11262, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 11254..11255, + ), + }, + ), + span: Span( + 11255..11257, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 11256..11257, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 11260..11261, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 11268..11367, + ), + name: Ident { + sym: "to_string", + span: Span( + 11271..11280, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 11281..11282, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 11294..11308, + ), + name: Ident { + sym: "string", + span: Span( + 11298..11304, + ), + }, + init: Literal( + String( + "", + Span( + 11307..11308, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 11319..11342, + ), + name: Ident { + sym: "string", + span: Span( + 11323..11329, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 11332..11342, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 11332..11338, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 11341..11342, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 11359..11360, + ), + }, + ), + ), + Span( + 11352..11361, + ), + ), + ], + span: Span( + 11284..11367, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 11374..11397, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 11373..11374, + ), + }, + ), + span: Span( + 11374..11384, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 11375..11384, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 11387..11396, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 11403..11413, + ), + }, + ), + span: Span( + 11413..11415, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 11422..11425, + ), + }, + ), + span: Span( + 11425..11427, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 11100..11430, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 11432..11698, + ), + name: Ident { + sym: "owo", + span: Span( + 11435..11438, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 11447..11456, + ), + }, + ), + span: Span( + 11456..11458, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 11464..11474, + ), + }, + ), + span: Span( + 11474..11476, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 11482..11493, + ), + }, + ), + span: Span( + 11493..11495, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 11502..11521, + ), + name: Ident { + sym: "d", + span: Span( + 11506..11507, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 11510..11519, + ), + }, + ), + span: Span( + 11519..11521, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 11528..11646, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 11531..11536, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 11531..11532, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 11535..11536, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 11547..11557, + ), + }, + ), + span: Span( + 11557..11559, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 11537..11566, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 11572..11646, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 11575..11581, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 11575..11576, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 11580..11581, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 11592..11603, + ), + }, + ), + span: Span( + 11603..11605, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 11582..11612, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 11628..11637, + ), + }, + ), + span: Span( + 11637..11639, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 11618..11646, + ), + }, + Span( + 11613..11646, + ), + ), + ), + }, + Span( + 11567..11646, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 11652..11693, + ), + }, + ), + span: Span( + 11693..11695, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 11441..11698, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 11700..11976, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 11703..11744, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 11753..11777, + ), + name: Ident { + sym: "code", + span: Span( + 11757..11761, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 11764..11777, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 11784..11786, + ), + }, + ), + span: Span( + 11786..11792, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 11787..11792, + ), + }, + ), + }, + ), + span: Span( + 11792..11809, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 11793..11801, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 11804..11808, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 11815..11822, + ), + }, + ), + span: Span( + 11822..11828, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 11823..11828, + ), + }, + ), + }, + ), + span: Span( + 11828..11845, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 11829..11843, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 11851..11880, + ), + name: Ident { + sym: "program", + span: Span( + 11855..11862, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 11865..11867, + ), + }, + ), + span: Span( + 11867..11872, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 11868..11872, + ), + }, + ), + }, + ), + span: Span( + 11872..11880, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 11873..11878, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 11886..11919, + ), + name: Ident { + sym: "output", + span: Span( + 11890..11896, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 11899..11906, + ), + }, + ), + span: Span( + 11906..11911, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 11907..11911, + ), + }, + ), + }, + ), + span: Span( + 11911..11919, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 11912..11917, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 11926..11974, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 11929..11940, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 11929..11935, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 11939..11940, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 11958..11966, + ), + ), + ), + Span( + 11952..11968, + ), + ), + ], + span: Span( + 11942..11974, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 11747..11976, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 12017..12026, + ), + name: Ident { + sym: "x", + span: Span( + 12021..12022, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 12025..12026, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 12029..12037, + ), + }, + ), + span: Span( + 12037..12040, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 12038..12039, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 12043..12101, + ), + name: Ident { + sym: "main", + span: Span( + 12046..12050, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 12059..12069, + ), + }, + ), + span: Span( + 12069..12087, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 12070..12075, + ), + }, + ), + span: Span( + 12075..12077, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 12079..12084, + ), + }, + ), + span: Span( + 12084..12086, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 12093..12096, + ), + }, + ), + span: Span( + 12096..12098, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 12053..12101, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 12103..12184, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 12106..12116, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 12117..12118, + ), + }, + Ident { + sym: "b", + span: Span( + 12120..12121, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 12146..12175, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 12146..12147, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 12150..12175, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 12150..12151, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 12155..12175, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 12154..12155, + ), + }, + ), + span: Span( + 12155..12157, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 12156..12157, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 12160..12161, + ), + }, + ), + span: Span( + 12161..12167, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 12162..12167, + ), + }, + ), + }, + ), + span: Span( + 12167..12169, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 12169..12175, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 12170..12175, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 12129..12182, + ), + ), + ], + span: Span( + 12123..12184, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 12186..12525, + ), + name: Ident { + sym: "uwu", + span: Span( + 12189..12192, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 12201..12210, + ), + name: Ident { + sym: "a", + span: Span( + 12205..12206, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 12209..12210, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 12216..12225, + ), + name: Ident { + sym: "b", + span: Span( + 12220..12221, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 12224..12225, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 12231..12240, + ), + name: Ident { + sym: "c", + span: Span( + 12235..12236, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 12239..12240, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 12246..12255, + ), + name: Ident { + sym: "d", + span: Span( + 12250..12251, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 12254..12255, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 12262..12287, + ), + name: Ident { + sym: "x", + span: Span( + 12266..12267, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 12270..12287, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 12270..12271, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 12274..12287, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 12274..12275, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 12278..12287, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 12278..12279, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 12282..12287, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 12282..12283, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 12286..12287, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 12299..12300, + ), + }, + ), + Span( + 12293..12301, + ), + ), + Declaration( + Declaration { + span: Span( + 12307..12317, + ), + name: Ident { + sym: "y", + span: Span( + 12311..12312, + ), + }, + init: Literal( + Object( + Span( + 12315..12317, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 12324..12331, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 12323..12324, + ), + }, + ), + span: Span( + 12324..12326, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 12325..12326, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 12329..12330, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 12337..12344, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 12336..12337, + ), + }, + ), + span: Span( + 12337..12339, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 12338..12339, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 12342..12343, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 12350..12357, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 12349..12350, + ), + }, + ), + span: Span( + 12350..12352, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 12351..12352, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 12355..12356, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 12363..12462, + ), + name: Ident { + sym: "to_string", + span: Span( + 12366..12375, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 12376..12377, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 12389..12403, + ), + name: Ident { + sym: "string", + span: Span( + 12393..12399, + ), + }, + init: Literal( + String( + "", + Span( + 12402..12403, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 12414..12437, + ), + name: Ident { + sym: "string", + span: Span( + 12418..12424, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 12427..12437, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 12427..12433, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 12436..12437, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 12454..12455, + ), + }, + ), + ), + Span( + 12447..12456, + ), + ), + ], + span: Span( + 12379..12462, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 12469..12492, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 12468..12469, + ), + }, + ), + span: Span( + 12469..12479, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 12470..12479, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 12482..12491, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 12498..12508, + ), + }, + ), + span: Span( + 12508..12510, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 12517..12520, + ), + }, + ), + span: Span( + 12520..12522, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 12195..12525, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 12527..12793, + ), + name: Ident { + sym: "owo", + span: Span( + 12530..12533, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 12542..12551, + ), + }, + ), + span: Span( + 12551..12553, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 12559..12569, + ), + }, + ), + span: Span( + 12569..12571, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 12577..12588, + ), + }, + ), + span: Span( + 12588..12590, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 12597..12616, + ), + name: Ident { + sym: "d", + span: Span( + 12601..12602, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 12605..12614, + ), + }, + ), + span: Span( + 12614..12616, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 12623..12741, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 12626..12631, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 12626..12627, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 12630..12631, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 12642..12652, + ), + }, + ), + span: Span( + 12652..12654, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 12632..12661, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 12667..12741, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 12670..12676, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 12670..12671, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 12675..12676, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 12687..12698, + ), + }, + ), + span: Span( + 12698..12700, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 12677..12707, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 12723..12732, + ), + }, + ), + span: Span( + 12732..12734, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 12713..12741, + ), + }, + Span( + 12708..12741, + ), + ), + ), + }, + Span( + 12662..12741, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 12747..12788, + ), + }, + ), + span: Span( + 12788..12790, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 12536..12793, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 12795..13071, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 12798..12839, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 12848..12872, + ), + name: Ident { + sym: "code", + span: Span( + 12852..12856, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 12859..12872, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 12879..12881, + ), + }, + ), + span: Span( + 12881..12887, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 12882..12887, + ), + }, + ), + }, + ), + span: Span( + 12887..12904, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 12888..12896, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 12899..12903, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 12910..12917, + ), + }, + ), + span: Span( + 12917..12923, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 12918..12923, + ), + }, + ), + }, + ), + span: Span( + 12923..12940, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 12924..12938, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 12946..12975, + ), + name: Ident { + sym: "program", + span: Span( + 12950..12957, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 12960..12962, + ), + }, + ), + span: Span( + 12962..12967, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 12963..12967, + ), + }, + ), + }, + ), + span: Span( + 12967..12975, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 12968..12973, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 12981..13014, + ), + name: Ident { + sym: "output", + span: Span( + 12985..12991, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 12994..13001, + ), + }, + ), + span: Span( + 13001..13006, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 13002..13006, + ), + }, + ), + }, + ), + span: Span( + 13006..13014, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 13007..13012, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 13021..13069, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 13024..13035, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 13024..13030, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 13034..13035, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 13053..13061, + ), + ), + ), + Span( + 13047..13063, + ), + ), + ], + span: Span( + 13037..13069, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 12842..13071, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 13112..13121, + ), + name: Ident { + sym: "x", + span: Span( + 13116..13117, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 13120..13121, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 13124..13132, + ), + }, + ), + span: Span( + 13132..13135, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 13133..13134, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 13137..13195, + ), + name: Ident { + sym: "main", + span: Span( + 13140..13144, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 13153..13163, + ), + }, + ), + span: Span( + 13163..13181, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 13164..13169, + ), + }, + ), + span: Span( + 13169..13171, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 13173..13178, + ), + }, + ), + span: Span( + 13178..13180, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 13187..13190, + ), + }, + ), + span: Span( + 13190..13192, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 13147..13195, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 13197..13278, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 13200..13210, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 13211..13212, + ), + }, + Ident { + sym: "b", + span: Span( + 13214..13215, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 13240..13269, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 13240..13241, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 13244..13269, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 13244..13245, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 13249..13269, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 13248..13249, + ), + }, + ), + span: Span( + 13249..13251, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 13250..13251, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 13254..13255, + ), + }, + ), + span: Span( + 13255..13261, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 13256..13261, + ), + }, + ), + }, + ), + span: Span( + 13261..13263, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 13263..13269, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 13264..13269, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 13223..13276, + ), + ), + ], + span: Span( + 13217..13278, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 13280..13619, + ), + name: Ident { + sym: "uwu", + span: Span( + 13283..13286, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 13295..13304, + ), + name: Ident { + sym: "a", + span: Span( + 13299..13300, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 13303..13304, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 13310..13319, + ), + name: Ident { + sym: "b", + span: Span( + 13314..13315, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 13318..13319, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 13325..13334, + ), + name: Ident { + sym: "c", + span: Span( + 13329..13330, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 13333..13334, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 13340..13349, + ), + name: Ident { + sym: "d", + span: Span( + 13344..13345, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 13348..13349, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 13356..13381, + ), + name: Ident { + sym: "x", + span: Span( + 13360..13361, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 13364..13381, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 13364..13365, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 13368..13381, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 13368..13369, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 13372..13381, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 13372..13373, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 13376..13381, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 13376..13377, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 13380..13381, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 13393..13394, + ), + }, + ), + Span( + 13387..13395, + ), + ), + Declaration( + Declaration { + span: Span( + 13401..13411, + ), + name: Ident { + sym: "y", + span: Span( + 13405..13406, + ), + }, + init: Literal( + Object( + Span( + 13409..13411, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 13418..13425, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 13417..13418, + ), + }, + ), + span: Span( + 13418..13420, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 13419..13420, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 13423..13424, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 13431..13438, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 13430..13431, + ), + }, + ), + span: Span( + 13431..13433, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 13432..13433, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 13436..13437, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 13444..13451, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 13443..13444, + ), + }, + ), + span: Span( + 13444..13446, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 13445..13446, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 13449..13450, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 13457..13556, + ), + name: Ident { + sym: "to_string", + span: Span( + 13460..13469, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 13470..13471, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 13483..13497, + ), + name: Ident { + sym: "string", + span: Span( + 13487..13493, + ), + }, + init: Literal( + String( + "", + Span( + 13496..13497, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 13508..13531, + ), + name: Ident { + sym: "string", + span: Span( + 13512..13518, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 13521..13531, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 13521..13527, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 13530..13531, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 13548..13549, + ), + }, + ), + ), + Span( + 13541..13550, + ), + ), + ], + span: Span( + 13473..13556, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 13563..13586, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 13562..13563, + ), + }, + ), + span: Span( + 13563..13573, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 13564..13573, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 13576..13585, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 13592..13602, + ), + }, + ), + span: Span( + 13602..13604, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 13611..13614, + ), + }, + ), + span: Span( + 13614..13616, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 13289..13619, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 13621..13887, + ), + name: Ident { + sym: "owo", + span: Span( + 13624..13627, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 13636..13645, + ), + }, + ), + span: Span( + 13645..13647, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 13653..13663, + ), + }, + ), + span: Span( + 13663..13665, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 13671..13682, + ), + }, + ), + span: Span( + 13682..13684, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 13691..13710, + ), + name: Ident { + sym: "d", + span: Span( + 13695..13696, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 13699..13708, + ), + }, + ), + span: Span( + 13708..13710, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 13717..13835, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 13720..13725, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 13720..13721, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 13724..13725, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 13736..13746, + ), + }, + ), + span: Span( + 13746..13748, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 13726..13755, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 13761..13835, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 13764..13770, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 13764..13765, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 13769..13770, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 13781..13792, + ), + }, + ), + span: Span( + 13792..13794, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 13771..13801, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 13817..13826, + ), + }, + ), + span: Span( + 13826..13828, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 13807..13835, + ), + }, + Span( + 13802..13835, + ), + ), + ), + }, + Span( + 13756..13835, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 13841..13882, + ), + }, + ), + span: Span( + 13882..13884, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 13630..13887, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 13889..14165, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 13892..13933, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 13942..13966, + ), + name: Ident { + sym: "code", + span: Span( + 13946..13950, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 13953..13966, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 13973..13975, + ), + }, + ), + span: Span( + 13975..13981, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 13976..13981, + ), + }, + ), + }, + ), + span: Span( + 13981..13998, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 13982..13990, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 13993..13997, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 14004..14011, + ), + }, + ), + span: Span( + 14011..14017, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 14012..14017, + ), + }, + ), + }, + ), + span: Span( + 14017..14034, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 14018..14032, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 14040..14069, + ), + name: Ident { + sym: "program", + span: Span( + 14044..14051, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 14054..14056, + ), + }, + ), + span: Span( + 14056..14061, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 14057..14061, + ), + }, + ), + }, + ), + span: Span( + 14061..14069, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 14062..14067, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 14075..14108, + ), + name: Ident { + sym: "output", + span: Span( + 14079..14085, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 14088..14095, + ), + }, + ), + span: Span( + 14095..14100, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 14096..14100, + ), + }, + ), + }, + ), + span: Span( + 14100..14108, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 14101..14106, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 14115..14163, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 14118..14129, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 14118..14124, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 14128..14129, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 14147..14155, + ), + ), + ), + Span( + 14141..14157, + ), + ), + ], + span: Span( + 14131..14163, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 13936..14165, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 14206..14215, + ), + name: Ident { + sym: "x", + span: Span( + 14210..14211, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 14214..14215, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 14218..14226, + ), + }, + ), + span: Span( + 14226..14229, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 14227..14228, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 14232..14290, + ), + name: Ident { + sym: "main", + span: Span( + 14235..14239, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 14248..14258, + ), + }, + ), + span: Span( + 14258..14276, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 14259..14264, + ), + }, + ), + span: Span( + 14264..14266, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 14268..14273, + ), + }, + ), + span: Span( + 14273..14275, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 14282..14285, + ), + }, + ), + span: Span( + 14285..14287, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 14242..14290, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 14292..14373, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 14295..14305, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 14306..14307, + ), + }, + Ident { + sym: "b", + span: Span( + 14309..14310, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 14335..14364, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 14335..14336, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 14339..14364, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 14339..14340, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 14344..14364, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 14343..14344, + ), + }, + ), + span: Span( + 14344..14346, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 14345..14346, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 14349..14350, + ), + }, + ), + span: Span( + 14350..14356, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 14351..14356, + ), + }, + ), + }, + ), + span: Span( + 14356..14358, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 14358..14364, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 14359..14364, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 14318..14371, + ), + ), + ], + span: Span( + 14312..14373, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 14375..14714, + ), + name: Ident { + sym: "uwu", + span: Span( + 14378..14381, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 14390..14399, + ), + name: Ident { + sym: "a", + span: Span( + 14394..14395, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 14398..14399, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 14405..14414, + ), + name: Ident { + sym: "b", + span: Span( + 14409..14410, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 14413..14414, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 14420..14429, + ), + name: Ident { + sym: "c", + span: Span( + 14424..14425, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 14428..14429, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 14435..14444, + ), + name: Ident { + sym: "d", + span: Span( + 14439..14440, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 14443..14444, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 14451..14476, + ), + name: Ident { + sym: "x", + span: Span( + 14455..14456, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 14459..14476, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 14459..14460, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 14463..14476, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 14463..14464, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 14467..14476, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 14467..14468, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 14471..14476, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 14471..14472, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 14475..14476, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 14488..14489, + ), + }, + ), + Span( + 14482..14490, + ), + ), + Declaration( + Declaration { + span: Span( + 14496..14506, + ), + name: Ident { + sym: "y", + span: Span( + 14500..14501, + ), + }, + init: Literal( + Object( + Span( + 14504..14506, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 14513..14520, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 14512..14513, + ), + }, + ), + span: Span( + 14513..14515, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 14514..14515, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 14518..14519, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 14526..14533, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 14525..14526, + ), + }, + ), + span: Span( + 14526..14528, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 14527..14528, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 14531..14532, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 14539..14546, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 14538..14539, + ), + }, + ), + span: Span( + 14539..14541, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 14540..14541, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 14544..14545, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 14552..14651, + ), + name: Ident { + sym: "to_string", + span: Span( + 14555..14564, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 14565..14566, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 14578..14592, + ), + name: Ident { + sym: "string", + span: Span( + 14582..14588, + ), + }, + init: Literal( + String( + "", + Span( + 14591..14592, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 14603..14626, + ), + name: Ident { + sym: "string", + span: Span( + 14607..14613, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 14616..14626, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 14616..14622, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 14625..14626, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 14643..14644, + ), + }, + ), + ), + Span( + 14636..14645, + ), + ), + ], + span: Span( + 14568..14651, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 14658..14681, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 14657..14658, + ), + }, + ), + span: Span( + 14658..14668, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 14659..14668, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 14671..14680, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 14687..14697, + ), + }, + ), + span: Span( + 14697..14699, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 14706..14709, + ), + }, + ), + span: Span( + 14709..14711, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 14384..14714, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 14716..14982, + ), + name: Ident { + sym: "owo", + span: Span( + 14719..14722, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 14731..14740, + ), + }, + ), + span: Span( + 14740..14742, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 14748..14758, + ), + }, + ), + span: Span( + 14758..14760, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 14766..14777, + ), + }, + ), + span: Span( + 14777..14779, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 14786..14805, + ), + name: Ident { + sym: "d", + span: Span( + 14790..14791, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 14794..14803, + ), + }, + ), + span: Span( + 14803..14805, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 14812..14930, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 14815..14820, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 14815..14816, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 14819..14820, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 14831..14841, + ), + }, + ), + span: Span( + 14841..14843, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 14821..14850, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 14856..14930, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 14859..14865, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 14859..14860, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 14864..14865, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 14876..14887, + ), + }, + ), + span: Span( + 14887..14889, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 14866..14896, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 14912..14921, + ), + }, + ), + span: Span( + 14921..14923, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 14902..14930, + ), + }, + Span( + 14897..14930, + ), + ), + ), + }, + Span( + 14851..14930, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 14936..14977, + ), + }, + ), + span: Span( + 14977..14979, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 14725..14982, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 14984..15260, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 14987..15028, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 15037..15061, + ), + name: Ident { + sym: "code", + span: Span( + 15041..15045, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 15048..15061, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 15068..15070, + ), + }, + ), + span: Span( + 15070..15076, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 15071..15076, + ), + }, + ), + }, + ), + span: Span( + 15076..15093, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 15077..15085, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 15088..15092, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 15099..15106, + ), + }, + ), + span: Span( + 15106..15112, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 15107..15112, + ), + }, + ), + }, + ), + span: Span( + 15112..15129, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 15113..15127, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 15135..15164, + ), + name: Ident { + sym: "program", + span: Span( + 15139..15146, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 15149..15151, + ), + }, + ), + span: Span( + 15151..15156, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 15152..15156, + ), + }, + ), + }, + ), + span: Span( + 15156..15164, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 15157..15162, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 15170..15203, + ), + name: Ident { + sym: "output", + span: Span( + 15174..15180, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 15183..15190, + ), + }, + ), + span: Span( + 15190..15195, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 15191..15195, + ), + }, + ), + }, + ), + span: Span( + 15195..15203, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 15196..15201, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 15210..15258, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 15213..15224, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 15213..15219, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 15223..15224, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 15242..15250, + ), + ), + ), + Span( + 15236..15252, + ), + ), + ], + span: Span( + 15226..15258, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 15031..15260, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 15301..15310, + ), + name: Ident { + sym: "x", + span: Span( + 15305..15306, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 15309..15310, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 15313..15321, + ), + }, + ), + span: Span( + 15321..15324, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 15322..15323, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 15327..15385, + ), + name: Ident { + sym: "main", + span: Span( + 15330..15334, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 15343..15353, + ), + }, + ), + span: Span( + 15353..15371, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 15354..15359, + ), + }, + ), + span: Span( + 15359..15361, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 15363..15368, + ), + }, + ), + span: Span( + 15368..15370, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 15377..15380, + ), + }, + ), + span: Span( + 15380..15382, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 15337..15385, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 15387..15468, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 15390..15400, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 15401..15402, + ), + }, + Ident { + sym: "b", + span: Span( + 15404..15405, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 15430..15459, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 15430..15431, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 15434..15459, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 15434..15435, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 15439..15459, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 15438..15439, + ), + }, + ), + span: Span( + 15439..15441, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 15440..15441, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 15444..15445, + ), + }, + ), + span: Span( + 15445..15451, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 15446..15451, + ), + }, + ), + }, + ), + span: Span( + 15451..15453, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 15453..15459, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 15454..15459, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 15413..15466, + ), + ), + ], + span: Span( + 15407..15468, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 15470..15809, + ), + name: Ident { + sym: "uwu", + span: Span( + 15473..15476, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 15485..15494, + ), + name: Ident { + sym: "a", + span: Span( + 15489..15490, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 15493..15494, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 15500..15509, + ), + name: Ident { + sym: "b", + span: Span( + 15504..15505, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 15508..15509, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 15515..15524, + ), + name: Ident { + sym: "c", + span: Span( + 15519..15520, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 15523..15524, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 15530..15539, + ), + name: Ident { + sym: "d", + span: Span( + 15534..15535, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 15538..15539, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 15546..15571, + ), + name: Ident { + sym: "x", + span: Span( + 15550..15551, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 15554..15571, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 15554..15555, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 15558..15571, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 15558..15559, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 15562..15571, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 15562..15563, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 15566..15571, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 15566..15567, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 15570..15571, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 15583..15584, + ), + }, + ), + Span( + 15577..15585, + ), + ), + Declaration( + Declaration { + span: Span( + 15591..15601, + ), + name: Ident { + sym: "y", + span: Span( + 15595..15596, + ), + }, + init: Literal( + Object( + Span( + 15599..15601, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 15608..15615, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 15607..15608, + ), + }, + ), + span: Span( + 15608..15610, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 15609..15610, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 15613..15614, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 15621..15628, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 15620..15621, + ), + }, + ), + span: Span( + 15621..15623, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 15622..15623, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 15626..15627, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 15634..15641, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 15633..15634, + ), + }, + ), + span: Span( + 15634..15636, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 15635..15636, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 15639..15640, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 15647..15746, + ), + name: Ident { + sym: "to_string", + span: Span( + 15650..15659, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 15660..15661, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 15673..15687, + ), + name: Ident { + sym: "string", + span: Span( + 15677..15683, + ), + }, + init: Literal( + String( + "", + Span( + 15686..15687, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 15698..15721, + ), + name: Ident { + sym: "string", + span: Span( + 15702..15708, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 15711..15721, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 15711..15717, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 15720..15721, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 15738..15739, + ), + }, + ), + ), + Span( + 15731..15740, + ), + ), + ], + span: Span( + 15663..15746, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 15753..15776, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 15752..15753, + ), + }, + ), + span: Span( + 15753..15763, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 15754..15763, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 15766..15775, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 15782..15792, + ), + }, + ), + span: Span( + 15792..15794, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 15801..15804, + ), + }, + ), + span: Span( + 15804..15806, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 15479..15809, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 15811..16077, + ), + name: Ident { + sym: "owo", + span: Span( + 15814..15817, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 15826..15835, + ), + }, + ), + span: Span( + 15835..15837, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 15843..15853, + ), + }, + ), + span: Span( + 15853..15855, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 15861..15872, + ), + }, + ), + span: Span( + 15872..15874, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 15881..15900, + ), + name: Ident { + sym: "d", + span: Span( + 15885..15886, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 15889..15898, + ), + }, + ), + span: Span( + 15898..15900, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 15907..16025, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 15910..15915, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 15910..15911, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 15914..15915, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 15926..15936, + ), + }, + ), + span: Span( + 15936..15938, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 15916..15945, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 15951..16025, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 15954..15960, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 15954..15955, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 15959..15960, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 15971..15982, + ), + }, + ), + span: Span( + 15982..15984, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 15961..15991, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 16007..16016, + ), + }, + ), + span: Span( + 16016..16018, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 15997..16025, + ), + }, + Span( + 15992..16025, + ), + ), + ), + }, + Span( + 15946..16025, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 16031..16072, + ), + }, + ), + span: Span( + 16072..16074, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 15820..16077, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 16079..16355, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 16082..16123, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 16132..16156, + ), + name: Ident { + sym: "code", + span: Span( + 16136..16140, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 16143..16156, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 16163..16165, + ), + }, + ), + span: Span( + 16165..16171, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 16166..16171, + ), + }, + ), + }, + ), + span: Span( + 16171..16188, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 16172..16180, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 16183..16187, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 16194..16201, + ), + }, + ), + span: Span( + 16201..16207, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 16202..16207, + ), + }, + ), + }, + ), + span: Span( + 16207..16224, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 16208..16222, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 16230..16259, + ), + name: Ident { + sym: "program", + span: Span( + 16234..16241, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 16244..16246, + ), + }, + ), + span: Span( + 16246..16251, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 16247..16251, + ), + }, + ), + }, + ), + span: Span( + 16251..16259, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 16252..16257, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 16265..16298, + ), + name: Ident { + sym: "output", + span: Span( + 16269..16275, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 16278..16285, + ), + }, + ), + span: Span( + 16285..16290, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 16286..16290, + ), + }, + ), + }, + ), + span: Span( + 16290..16298, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 16291..16296, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 16305..16353, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 16308..16319, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 16308..16314, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 16318..16319, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 16337..16345, + ), + ), + ), + Span( + 16331..16347, + ), + ), + ], + span: Span( + 16321..16353, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 16126..16355, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 16396..16405, + ), + name: Ident { + sym: "x", + span: Span( + 16400..16401, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 16404..16405, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 16408..16416, + ), + }, + ), + span: Span( + 16416..16419, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 16417..16418, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 16422..16480, + ), + name: Ident { + sym: "main", + span: Span( + 16425..16429, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 16438..16448, + ), + }, + ), + span: Span( + 16448..16466, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 16449..16454, + ), + }, + ), + span: Span( + 16454..16456, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 16458..16463, + ), + }, + ), + span: Span( + 16463..16465, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 16472..16475, + ), + }, + ), + span: Span( + 16475..16477, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 16432..16480, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 16482..16563, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 16485..16495, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 16496..16497, + ), + }, + Ident { + sym: "b", + span: Span( + 16499..16500, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 16525..16554, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 16525..16526, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 16529..16554, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 16529..16530, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 16534..16554, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 16533..16534, + ), + }, + ), + span: Span( + 16534..16536, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 16535..16536, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 16539..16540, + ), + }, + ), + span: Span( + 16540..16546, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 16541..16546, + ), + }, + ), + }, + ), + span: Span( + 16546..16548, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 16548..16554, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 16549..16554, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 16508..16561, + ), + ), + ], + span: Span( + 16502..16563, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 16565..16904, + ), + name: Ident { + sym: "uwu", + span: Span( + 16568..16571, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 16580..16589, + ), + name: Ident { + sym: "a", + span: Span( + 16584..16585, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 16588..16589, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 16595..16604, + ), + name: Ident { + sym: "b", + span: Span( + 16599..16600, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 16603..16604, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 16610..16619, + ), + name: Ident { + sym: "c", + span: Span( + 16614..16615, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 16618..16619, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 16625..16634, + ), + name: Ident { + sym: "d", + span: Span( + 16629..16630, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 16633..16634, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 16641..16666, + ), + name: Ident { + sym: "x", + span: Span( + 16645..16646, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 16649..16666, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 16649..16650, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 16653..16666, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 16653..16654, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 16657..16666, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 16657..16658, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 16661..16666, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 16661..16662, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 16665..16666, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 16678..16679, + ), + }, + ), + Span( + 16672..16680, + ), + ), + Declaration( + Declaration { + span: Span( + 16686..16696, + ), + name: Ident { + sym: "y", + span: Span( + 16690..16691, + ), + }, + init: Literal( + Object( + Span( + 16694..16696, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 16703..16710, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 16702..16703, + ), + }, + ), + span: Span( + 16703..16705, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 16704..16705, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 16708..16709, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 16716..16723, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 16715..16716, + ), + }, + ), + span: Span( + 16716..16718, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 16717..16718, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 16721..16722, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 16729..16736, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 16728..16729, + ), + }, + ), + span: Span( + 16729..16731, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 16730..16731, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 16734..16735, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 16742..16841, + ), + name: Ident { + sym: "to_string", + span: Span( + 16745..16754, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 16755..16756, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 16768..16782, + ), + name: Ident { + sym: "string", + span: Span( + 16772..16778, + ), + }, + init: Literal( + String( + "", + Span( + 16781..16782, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 16793..16816, + ), + name: Ident { + sym: "string", + span: Span( + 16797..16803, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 16806..16816, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 16806..16812, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 16815..16816, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 16833..16834, + ), + }, + ), + ), + Span( + 16826..16835, + ), + ), + ], + span: Span( + 16758..16841, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 16848..16871, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 16847..16848, + ), + }, + ), + span: Span( + 16848..16858, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 16849..16858, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 16861..16870, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 16877..16887, + ), + }, + ), + span: Span( + 16887..16889, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 16896..16899, + ), + }, + ), + span: Span( + 16899..16901, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 16574..16904, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 16906..17172, + ), + name: Ident { + sym: "owo", + span: Span( + 16909..16912, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 16921..16930, + ), + }, + ), + span: Span( + 16930..16932, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 16938..16948, + ), + }, + ), + span: Span( + 16948..16950, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 16956..16967, + ), + }, + ), + span: Span( + 16967..16969, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 16976..16995, + ), + name: Ident { + sym: "d", + span: Span( + 16980..16981, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 16984..16993, + ), + }, + ), + span: Span( + 16993..16995, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 17002..17120, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 17005..17010, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 17005..17006, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 17009..17010, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 17021..17031, + ), + }, + ), + span: Span( + 17031..17033, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 17011..17040, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 17046..17120, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 17049..17055, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 17049..17050, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 17054..17055, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 17066..17077, + ), + }, + ), + span: Span( + 17077..17079, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 17056..17086, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 17102..17111, + ), + }, + ), + span: Span( + 17111..17113, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 17092..17120, + ), + }, + Span( + 17087..17120, + ), + ), + ), + }, + Span( + 17041..17120, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 17126..17167, + ), + }, + ), + span: Span( + 17167..17169, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 16915..17172, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 17174..17450, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 17177..17218, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 17227..17251, + ), + name: Ident { + sym: "code", + span: Span( + 17231..17235, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 17238..17251, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 17258..17260, + ), + }, + ), + span: Span( + 17260..17266, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 17261..17266, + ), + }, + ), + }, + ), + span: Span( + 17266..17283, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 17267..17275, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 17278..17282, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 17289..17296, + ), + }, + ), + span: Span( + 17296..17302, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 17297..17302, + ), + }, + ), + }, + ), + span: Span( + 17302..17319, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 17303..17317, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 17325..17354, + ), + name: Ident { + sym: "program", + span: Span( + 17329..17336, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 17339..17341, + ), + }, + ), + span: Span( + 17341..17346, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 17342..17346, + ), + }, + ), + }, + ), + span: Span( + 17346..17354, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 17347..17352, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 17360..17393, + ), + name: Ident { + sym: "output", + span: Span( + 17364..17370, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 17373..17380, + ), + }, + ), + span: Span( + 17380..17385, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 17381..17385, + ), + }, + ), + }, + ), + span: Span( + 17385..17393, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 17386..17391, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 17400..17448, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 17403..17414, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 17403..17409, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 17413..17414, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 17432..17440, + ), + ), + ), + Span( + 17426..17442, + ), + ), + ], + span: Span( + 17416..17448, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 17221..17450, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 17491..17500, + ), + name: Ident { + sym: "x", + span: Span( + 17495..17496, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 17499..17500, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 17503..17511, + ), + }, + ), + span: Span( + 17511..17514, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 17512..17513, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 17516..17574, + ), + name: Ident { + sym: "main", + span: Span( + 17519..17523, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 17532..17542, + ), + }, + ), + span: Span( + 17542..17560, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 17543..17548, + ), + }, + ), + span: Span( + 17548..17550, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 17552..17557, + ), + }, + ), + span: Span( + 17557..17559, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 17566..17569, + ), + }, + ), + span: Span( + 17569..17571, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 17526..17574, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 17576..17657, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 17579..17589, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 17590..17591, + ), + }, + Ident { + sym: "b", + span: Span( + 17593..17594, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 17619..17648, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 17619..17620, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 17623..17648, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 17623..17624, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 17628..17648, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 17627..17628, + ), + }, + ), + span: Span( + 17628..17630, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 17629..17630, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 17633..17634, + ), + }, + ), + span: Span( + 17634..17640, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 17635..17640, + ), + }, + ), + }, + ), + span: Span( + 17640..17642, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 17642..17648, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 17643..17648, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 17602..17655, + ), + ), + ], + span: Span( + 17596..17657, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 17659..17998, + ), + name: Ident { + sym: "uwu", + span: Span( + 17662..17665, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 17674..17683, + ), + name: Ident { + sym: "a", + span: Span( + 17678..17679, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 17682..17683, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 17689..17698, + ), + name: Ident { + sym: "b", + span: Span( + 17693..17694, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 17697..17698, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 17704..17713, + ), + name: Ident { + sym: "c", + span: Span( + 17708..17709, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 17712..17713, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 17719..17728, + ), + name: Ident { + sym: "d", + span: Span( + 17723..17724, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 17727..17728, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 17735..17760, + ), + name: Ident { + sym: "x", + span: Span( + 17739..17740, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 17743..17760, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 17743..17744, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 17747..17760, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 17747..17748, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 17751..17760, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 17751..17752, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 17755..17760, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 17755..17756, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 17759..17760, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 17772..17773, + ), + }, + ), + Span( + 17766..17774, + ), + ), + Declaration( + Declaration { + span: Span( + 17780..17790, + ), + name: Ident { + sym: "y", + span: Span( + 17784..17785, + ), + }, + init: Literal( + Object( + Span( + 17788..17790, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 17797..17804, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 17796..17797, + ), + }, + ), + span: Span( + 17797..17799, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 17798..17799, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 17802..17803, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 17810..17817, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 17809..17810, + ), + }, + ), + span: Span( + 17810..17812, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 17811..17812, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 17815..17816, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 17823..17830, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 17822..17823, + ), + }, + ), + span: Span( + 17823..17825, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 17824..17825, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 17828..17829, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 17836..17935, + ), + name: Ident { + sym: "to_string", + span: Span( + 17839..17848, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 17849..17850, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 17862..17876, + ), + name: Ident { + sym: "string", + span: Span( + 17866..17872, + ), + }, + init: Literal( + String( + "", + Span( + 17875..17876, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 17887..17910, + ), + name: Ident { + sym: "string", + span: Span( + 17891..17897, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 17900..17910, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 17900..17906, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 17909..17910, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 17927..17928, + ), + }, + ), + ), + Span( + 17920..17929, + ), + ), + ], + span: Span( + 17852..17935, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 17942..17965, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 17941..17942, + ), + }, + ), + span: Span( + 17942..17952, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 17943..17952, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 17955..17964, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 17971..17981, + ), + }, + ), + span: Span( + 17981..17983, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 17990..17993, + ), + }, + ), + span: Span( + 17993..17995, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 17668..17998, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 18000..18266, + ), + name: Ident { + sym: "owo", + span: Span( + 18003..18006, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 18015..18024, + ), + }, + ), + span: Span( + 18024..18026, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 18032..18042, + ), + }, + ), + span: Span( + 18042..18044, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 18050..18061, + ), + }, + ), + span: Span( + 18061..18063, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 18070..18089, + ), + name: Ident { + sym: "d", + span: Span( + 18074..18075, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 18078..18087, + ), + }, + ), + span: Span( + 18087..18089, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 18096..18214, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 18099..18104, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 18099..18100, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 18103..18104, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 18115..18125, + ), + }, + ), + span: Span( + 18125..18127, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 18105..18134, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 18140..18214, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 18143..18149, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 18143..18144, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 18148..18149, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 18160..18171, + ), + }, + ), + span: Span( + 18171..18173, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 18150..18180, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 18196..18205, + ), + }, + ), + span: Span( + 18205..18207, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 18186..18214, + ), + }, + Span( + 18181..18214, + ), + ), + ), + }, + Span( + 18135..18214, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 18220..18261, + ), + }, + ), + span: Span( + 18261..18263, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 18009..18266, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 18268..18544, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 18271..18312, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 18321..18345, + ), + name: Ident { + sym: "code", + span: Span( + 18325..18329, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 18332..18345, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 18352..18354, + ), + }, + ), + span: Span( + 18354..18360, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 18355..18360, + ), + }, + ), + }, + ), + span: Span( + 18360..18377, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 18361..18369, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 18372..18376, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 18383..18390, + ), + }, + ), + span: Span( + 18390..18396, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 18391..18396, + ), + }, + ), + }, + ), + span: Span( + 18396..18413, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 18397..18411, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 18419..18448, + ), + name: Ident { + sym: "program", + span: Span( + 18423..18430, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 18433..18435, + ), + }, + ), + span: Span( + 18435..18440, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 18436..18440, + ), + }, + ), + }, + ), + span: Span( + 18440..18448, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 18441..18446, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 18454..18487, + ), + name: Ident { + sym: "output", + span: Span( + 18458..18464, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 18467..18474, + ), + }, + ), + span: Span( + 18474..18479, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 18475..18479, + ), + }, + ), + }, + ), + span: Span( + 18479..18487, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 18480..18485, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 18494..18542, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 18497..18508, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 18497..18503, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 18507..18508, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 18526..18534, + ), + ), + ), + Span( + 18520..18536, + ), + ), + ], + span: Span( + 18510..18542, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 18315..18544, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 18585..18594, + ), + name: Ident { + sym: "x", + span: Span( + 18589..18590, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 18593..18594, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 18597..18605, + ), + }, + ), + span: Span( + 18605..18608, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 18606..18607, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 18611..18669, + ), + name: Ident { + sym: "main", + span: Span( + 18614..18618, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 18627..18637, + ), + }, + ), + span: Span( + 18637..18655, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 18638..18643, + ), + }, + ), + span: Span( + 18643..18645, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 18647..18652, + ), + }, + ), + span: Span( + 18652..18654, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 18661..18664, + ), + }, + ), + span: Span( + 18664..18666, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 18621..18669, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 18671..18752, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 18674..18684, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 18685..18686, + ), + }, + Ident { + sym: "b", + span: Span( + 18688..18689, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 18714..18743, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 18714..18715, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 18718..18743, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 18718..18719, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 18723..18743, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 18722..18723, + ), + }, + ), + span: Span( + 18723..18725, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 18724..18725, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 18728..18729, + ), + }, + ), + span: Span( + 18729..18735, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 18730..18735, + ), + }, + ), + }, + ), + span: Span( + 18735..18737, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 18737..18743, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 18738..18743, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 18697..18750, + ), + ), + ], + span: Span( + 18691..18752, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 18754..19093, + ), + name: Ident { + sym: "uwu", + span: Span( + 18757..18760, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 18769..18778, + ), + name: Ident { + sym: "a", + span: Span( + 18773..18774, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 18777..18778, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 18784..18793, + ), + name: Ident { + sym: "b", + span: Span( + 18788..18789, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 18792..18793, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 18799..18808, + ), + name: Ident { + sym: "c", + span: Span( + 18803..18804, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 18807..18808, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 18814..18823, + ), + name: Ident { + sym: "d", + span: Span( + 18818..18819, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 18822..18823, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 18830..18855, + ), + name: Ident { + sym: "x", + span: Span( + 18834..18835, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 18838..18855, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 18838..18839, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 18842..18855, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 18842..18843, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 18846..18855, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 18846..18847, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 18850..18855, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 18850..18851, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 18854..18855, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 18867..18868, + ), + }, + ), + Span( + 18861..18869, + ), + ), + Declaration( + Declaration { + span: Span( + 18875..18885, + ), + name: Ident { + sym: "y", + span: Span( + 18879..18880, + ), + }, + init: Literal( + Object( + Span( + 18883..18885, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 18892..18899, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 18891..18892, + ), + }, + ), + span: Span( + 18892..18894, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 18893..18894, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 18897..18898, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 18905..18912, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 18904..18905, + ), + }, + ), + span: Span( + 18905..18907, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 18906..18907, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 18910..18911, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 18918..18925, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 18917..18918, + ), + }, + ), + span: Span( + 18918..18920, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 18919..18920, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 18923..18924, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 18931..19030, + ), + name: Ident { + sym: "to_string", + span: Span( + 18934..18943, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 18944..18945, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 18957..18971, + ), + name: Ident { + sym: "string", + span: Span( + 18961..18967, + ), + }, + init: Literal( + String( + "", + Span( + 18970..18971, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 18982..19005, + ), + name: Ident { + sym: "string", + span: Span( + 18986..18992, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 18995..19005, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 18995..19001, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 19004..19005, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 19022..19023, + ), + }, + ), + ), + Span( + 19015..19024, + ), + ), + ], + span: Span( + 18947..19030, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 19037..19060, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 19036..19037, + ), + }, + ), + span: Span( + 19037..19047, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 19038..19047, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 19050..19059, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 19066..19076, + ), + }, + ), + span: Span( + 19076..19078, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 19085..19088, + ), + }, + ), + span: Span( + 19088..19090, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 18763..19093, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 19095..19361, + ), + name: Ident { + sym: "owo", + span: Span( + 19098..19101, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 19110..19119, + ), + }, + ), + span: Span( + 19119..19121, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 19127..19137, + ), + }, + ), + span: Span( + 19137..19139, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 19145..19156, + ), + }, + ), + span: Span( + 19156..19158, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 19165..19184, + ), + name: Ident { + sym: "d", + span: Span( + 19169..19170, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 19173..19182, + ), + }, + ), + span: Span( + 19182..19184, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 19191..19309, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 19194..19199, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 19194..19195, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 19198..19199, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 19210..19220, + ), + }, + ), + span: Span( + 19220..19222, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 19200..19229, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 19235..19309, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 19238..19244, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 19238..19239, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 19243..19244, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 19255..19266, + ), + }, + ), + span: Span( + 19266..19268, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 19245..19275, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 19291..19300, + ), + }, + ), + span: Span( + 19300..19302, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 19281..19309, + ), + }, + Span( + 19276..19309, + ), + ), + ), + }, + Span( + 19230..19309, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 19315..19356, + ), + }, + ), + span: Span( + 19356..19358, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 19104..19361, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 19363..19639, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 19366..19407, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 19416..19440, + ), + name: Ident { + sym: "code", + span: Span( + 19420..19424, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 19427..19440, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 19447..19449, + ), + }, + ), + span: Span( + 19449..19455, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 19450..19455, + ), + }, + ), + }, + ), + span: Span( + 19455..19472, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 19456..19464, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 19467..19471, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 19478..19485, + ), + }, + ), + span: Span( + 19485..19491, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 19486..19491, + ), + }, + ), + }, + ), + span: Span( + 19491..19508, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 19492..19506, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 19514..19543, + ), + name: Ident { + sym: "program", + span: Span( + 19518..19525, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 19528..19530, + ), + }, + ), + span: Span( + 19530..19535, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 19531..19535, + ), + }, + ), + }, + ), + span: Span( + 19535..19543, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 19536..19541, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 19549..19582, + ), + name: Ident { + sym: "output", + span: Span( + 19553..19559, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 19562..19569, + ), + }, + ), + span: Span( + 19569..19574, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 19570..19574, + ), + }, + ), + }, + ), + span: Span( + 19574..19582, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 19575..19580, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 19589..19637, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 19592..19603, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 19592..19598, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 19602..19603, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 19621..19629, + ), + ), + ), + Span( + 19615..19631, + ), + ), + ], + span: Span( + 19605..19637, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 19410..19639, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 19680..19689, + ), + name: Ident { + sym: "x", + span: Span( + 19684..19685, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 19688..19689, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 19692..19700, + ), + }, + ), + span: Span( + 19700..19703, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 19701..19702, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 19706..19764, + ), + name: Ident { + sym: "main", + span: Span( + 19709..19713, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 19722..19732, + ), + }, + ), + span: Span( + 19732..19750, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 19733..19738, + ), + }, + ), + span: Span( + 19738..19740, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 19742..19747, + ), + }, + ), + span: Span( + 19747..19749, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 19756..19759, + ), + }, + ), + span: Span( + 19759..19761, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 19716..19764, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 19766..19847, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 19769..19779, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 19780..19781, + ), + }, + Ident { + sym: "b", + span: Span( + 19783..19784, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 19809..19838, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 19809..19810, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 19813..19838, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 19813..19814, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 19818..19838, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 19817..19818, + ), + }, + ), + span: Span( + 19818..19820, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 19819..19820, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 19823..19824, + ), + }, + ), + span: Span( + 19824..19830, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 19825..19830, + ), + }, + ), + }, + ), + span: Span( + 19830..19832, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 19832..19838, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 19833..19838, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 19792..19845, + ), + ), + ], + span: Span( + 19786..19847, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 19849..20188, + ), + name: Ident { + sym: "uwu", + span: Span( + 19852..19855, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 19864..19873, + ), + name: Ident { + sym: "a", + span: Span( + 19868..19869, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 19872..19873, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 19879..19888, + ), + name: Ident { + sym: "b", + span: Span( + 19883..19884, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 19887..19888, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 19894..19903, + ), + name: Ident { + sym: "c", + span: Span( + 19898..19899, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 19902..19903, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 19909..19918, + ), + name: Ident { + sym: "d", + span: Span( + 19913..19914, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 19917..19918, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 19925..19950, + ), + name: Ident { + sym: "x", + span: Span( + 19929..19930, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 19933..19950, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 19933..19934, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 19937..19950, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 19937..19938, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 19941..19950, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 19941..19942, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 19945..19950, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 19945..19946, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 19949..19950, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 19962..19963, + ), + }, + ), + Span( + 19956..19964, + ), + ), + Declaration( + Declaration { + span: Span( + 19970..19980, + ), + name: Ident { + sym: "y", + span: Span( + 19974..19975, + ), + }, + init: Literal( + Object( + Span( + 19978..19980, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 19987..19994, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 19986..19987, + ), + }, + ), + span: Span( + 19987..19989, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 19988..19989, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 19992..19993, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 20000..20007, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 19999..20000, + ), + }, + ), + span: Span( + 20000..20002, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 20001..20002, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 20005..20006, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 20013..20020, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 20012..20013, + ), + }, + ), + span: Span( + 20013..20015, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 20014..20015, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 20018..20019, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 20026..20125, + ), + name: Ident { + sym: "to_string", + span: Span( + 20029..20038, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 20039..20040, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 20052..20066, + ), + name: Ident { + sym: "string", + span: Span( + 20056..20062, + ), + }, + init: Literal( + String( + "", + Span( + 20065..20066, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 20077..20100, + ), + name: Ident { + sym: "string", + span: Span( + 20081..20087, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 20090..20100, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 20090..20096, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 20099..20100, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 20117..20118, + ), + }, + ), + ), + Span( + 20110..20119, + ), + ), + ], + span: Span( + 20042..20125, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 20132..20155, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 20131..20132, + ), + }, + ), + span: Span( + 20132..20142, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 20133..20142, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 20145..20154, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 20161..20171, + ), + }, + ), + span: Span( + 20171..20173, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 20180..20183, + ), + }, + ), + span: Span( + 20183..20185, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 19858..20188, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 20190..20456, + ), + name: Ident { + sym: "owo", + span: Span( + 20193..20196, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 20205..20214, + ), + }, + ), + span: Span( + 20214..20216, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 20222..20232, + ), + }, + ), + span: Span( + 20232..20234, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 20240..20251, + ), + }, + ), + span: Span( + 20251..20253, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 20260..20279, + ), + name: Ident { + sym: "d", + span: Span( + 20264..20265, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 20268..20277, + ), + }, + ), + span: Span( + 20277..20279, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 20286..20404, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 20289..20294, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 20289..20290, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 20293..20294, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 20305..20315, + ), + }, + ), + span: Span( + 20315..20317, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 20295..20324, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 20330..20404, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 20333..20339, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 20333..20334, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 20338..20339, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 20350..20361, + ), + }, + ), + span: Span( + 20361..20363, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 20340..20370, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 20386..20395, + ), + }, + ), + span: Span( + 20395..20397, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 20376..20404, + ), + }, + Span( + 20371..20404, + ), + ), + ), + }, + Span( + 20325..20404, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 20410..20451, + ), + }, + ), + span: Span( + 20451..20453, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 20199..20456, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 20458..20734, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 20461..20502, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 20511..20535, + ), + name: Ident { + sym: "code", + span: Span( + 20515..20519, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 20522..20535, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 20542..20544, + ), + }, + ), + span: Span( + 20544..20550, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 20545..20550, + ), + }, + ), + }, + ), + span: Span( + 20550..20567, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 20551..20559, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 20562..20566, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 20573..20580, + ), + }, + ), + span: Span( + 20580..20586, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 20581..20586, + ), + }, + ), + }, + ), + span: Span( + 20586..20603, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 20587..20601, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 20609..20638, + ), + name: Ident { + sym: "program", + span: Span( + 20613..20620, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 20623..20625, + ), + }, + ), + span: Span( + 20625..20630, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 20626..20630, + ), + }, + ), + }, + ), + span: Span( + 20630..20638, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 20631..20636, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 20644..20677, + ), + name: Ident { + sym: "output", + span: Span( + 20648..20654, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 20657..20664, + ), + }, + ), + span: Span( + 20664..20669, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 20665..20669, + ), + }, + ), + }, + ), + span: Span( + 20669..20677, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 20670..20675, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 20684..20732, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 20687..20698, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 20687..20693, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 20697..20698, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 20716..20724, + ), + ), + ), + Span( + 20710..20726, + ), + ), + ], + span: Span( + 20700..20732, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 20505..20734, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 20775..20784, + ), + name: Ident { + sym: "x", + span: Span( + 20779..20780, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 20783..20784, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 20787..20795, + ), + }, + ), + span: Span( + 20795..20798, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 20796..20797, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 20801..20859, + ), + name: Ident { + sym: "main", + span: Span( + 20804..20808, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 20817..20827, + ), + }, + ), + span: Span( + 20827..20845, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 20828..20833, + ), + }, + ), + span: Span( + 20833..20835, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 20837..20842, + ), + }, + ), + span: Span( + 20842..20844, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 20851..20854, + ), + }, + ), + span: Span( + 20854..20856, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 20811..20859, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 20861..20942, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 20864..20874, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 20875..20876, + ), + }, + Ident { + sym: "b", + span: Span( + 20878..20879, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 20904..20933, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 20904..20905, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 20908..20933, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 20908..20909, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 20913..20933, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 20912..20913, + ), + }, + ), + span: Span( + 20913..20915, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 20914..20915, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 20918..20919, + ), + }, + ), + span: Span( + 20919..20925, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 20920..20925, + ), + }, + ), + }, + ), + span: Span( + 20925..20927, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 20927..20933, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 20928..20933, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 20887..20940, + ), + ), + ], + span: Span( + 20881..20942, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 20944..21283, + ), + name: Ident { + sym: "uwu", + span: Span( + 20947..20950, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 20959..20968, + ), + name: Ident { + sym: "a", + span: Span( + 20963..20964, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 20967..20968, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 20974..20983, + ), + name: Ident { + sym: "b", + span: Span( + 20978..20979, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 20982..20983, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 20989..20998, + ), + name: Ident { + sym: "c", + span: Span( + 20993..20994, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 20997..20998, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 21004..21013, + ), + name: Ident { + sym: "d", + span: Span( + 21008..21009, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 21012..21013, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 21020..21045, + ), + name: Ident { + sym: "x", + span: Span( + 21024..21025, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 21028..21045, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 21028..21029, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 21032..21045, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 21032..21033, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 21036..21045, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 21036..21037, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 21040..21045, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 21040..21041, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 21044..21045, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 21057..21058, + ), + }, + ), + Span( + 21051..21059, + ), + ), + Declaration( + Declaration { + span: Span( + 21065..21075, + ), + name: Ident { + sym: "y", + span: Span( + 21069..21070, + ), + }, + init: Literal( + Object( + Span( + 21073..21075, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 21082..21089, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 21081..21082, + ), + }, + ), + span: Span( + 21082..21084, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 21083..21084, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 21087..21088, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 21095..21102, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 21094..21095, + ), + }, + ), + span: Span( + 21095..21097, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 21096..21097, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 21100..21101, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 21108..21115, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 21107..21108, + ), + }, + ), + span: Span( + 21108..21110, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 21109..21110, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 21113..21114, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 21121..21220, + ), + name: Ident { + sym: "to_string", + span: Span( + 21124..21133, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 21134..21135, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 21147..21161, + ), + name: Ident { + sym: "string", + span: Span( + 21151..21157, + ), + }, + init: Literal( + String( + "", + Span( + 21160..21161, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 21172..21195, + ), + name: Ident { + sym: "string", + span: Span( + 21176..21182, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 21185..21195, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 21185..21191, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 21194..21195, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 21212..21213, + ), + }, + ), + ), + Span( + 21205..21214, + ), + ), + ], + span: Span( + 21137..21220, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 21227..21250, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 21226..21227, + ), + }, + ), + span: Span( + 21227..21237, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 21228..21237, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 21240..21249, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 21256..21266, + ), + }, + ), + span: Span( + 21266..21268, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 21275..21278, + ), + }, + ), + span: Span( + 21278..21280, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 20953..21283, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 21285..21551, + ), + name: Ident { + sym: "owo", + span: Span( + 21288..21291, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 21300..21309, + ), + }, + ), + span: Span( + 21309..21311, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 21317..21327, + ), + }, + ), + span: Span( + 21327..21329, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 21335..21346, + ), + }, + ), + span: Span( + 21346..21348, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 21355..21374, + ), + name: Ident { + sym: "d", + span: Span( + 21359..21360, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 21363..21372, + ), + }, + ), + span: Span( + 21372..21374, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 21381..21499, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 21384..21389, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 21384..21385, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 21388..21389, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 21400..21410, + ), + }, + ), + span: Span( + 21410..21412, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 21390..21419, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 21425..21499, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 21428..21434, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 21428..21429, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 21433..21434, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 21445..21456, + ), + }, + ), + span: Span( + 21456..21458, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 21435..21465, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 21481..21490, + ), + }, + ), + span: Span( + 21490..21492, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 21471..21499, + ), + }, + Span( + 21466..21499, + ), + ), + ), + }, + Span( + 21420..21499, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 21505..21546, + ), + }, + ), + span: Span( + 21546..21548, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 21294..21551, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 21553..21829, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 21556..21597, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 21606..21630, + ), + name: Ident { + sym: "code", + span: Span( + 21610..21614, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 21617..21630, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 21637..21639, + ), + }, + ), + span: Span( + 21639..21645, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 21640..21645, + ), + }, + ), + }, + ), + span: Span( + 21645..21662, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 21646..21654, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 21657..21661, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 21668..21675, + ), + }, + ), + span: Span( + 21675..21681, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 21676..21681, + ), + }, + ), + }, + ), + span: Span( + 21681..21698, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 21682..21696, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 21704..21733, + ), + name: Ident { + sym: "program", + span: Span( + 21708..21715, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 21718..21720, + ), + }, + ), + span: Span( + 21720..21725, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 21721..21725, + ), + }, + ), + }, + ), + span: Span( + 21725..21733, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 21726..21731, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 21739..21772, + ), + name: Ident { + sym: "output", + span: Span( + 21743..21749, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 21752..21759, + ), + }, + ), + span: Span( + 21759..21764, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 21760..21764, + ), + }, + ), + }, + ), + span: Span( + 21764..21772, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 21765..21770, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 21779..21827, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 21782..21793, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 21782..21788, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 21792..21793, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 21811..21819, + ), + ), + ), + Span( + 21805..21821, + ), + ), + ], + span: Span( + 21795..21827, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 21600..21829, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 21870..21879, + ), + name: Ident { + sym: "x", + span: Span( + 21874..21875, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 21878..21879, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 21882..21890, + ), + }, + ), + span: Span( + 21890..21893, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 21891..21892, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 21895..21953, + ), + name: Ident { + sym: "main", + span: Span( + 21898..21902, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 21911..21921, + ), + }, + ), + span: Span( + 21921..21939, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 21922..21927, + ), + }, + ), + span: Span( + 21927..21929, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 21931..21936, + ), + }, + ), + span: Span( + 21936..21938, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 21945..21948, + ), + }, + ), + span: Span( + 21948..21950, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 21905..21953, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 21955..22036, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 21958..21968, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 21969..21970, + ), + }, + Ident { + sym: "b", + span: Span( + 21972..21973, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 21998..22027, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 21998..21999, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 22002..22027, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 22002..22003, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 22007..22027, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 22006..22007, + ), + }, + ), + span: Span( + 22007..22009, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 22008..22009, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 22012..22013, + ), + }, + ), + span: Span( + 22013..22019, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 22014..22019, + ), + }, + ), + }, + ), + span: Span( + 22019..22021, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 22021..22027, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 22022..22027, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 21981..22034, + ), + ), + ], + span: Span( + 21975..22036, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 22038..22377, + ), + name: Ident { + sym: "uwu", + span: Span( + 22041..22044, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 22053..22062, + ), + name: Ident { + sym: "a", + span: Span( + 22057..22058, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 22061..22062, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 22068..22077, + ), + name: Ident { + sym: "b", + span: Span( + 22072..22073, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 22076..22077, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 22083..22092, + ), + name: Ident { + sym: "c", + span: Span( + 22087..22088, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 22091..22092, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 22098..22107, + ), + name: Ident { + sym: "d", + span: Span( + 22102..22103, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 22106..22107, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 22114..22139, + ), + name: Ident { + sym: "x", + span: Span( + 22118..22119, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 22122..22139, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 22122..22123, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 22126..22139, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 22126..22127, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 22130..22139, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 22130..22131, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 22134..22139, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 22134..22135, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 22138..22139, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 22151..22152, + ), + }, + ), + Span( + 22145..22153, + ), + ), + Declaration( + Declaration { + span: Span( + 22159..22169, + ), + name: Ident { + sym: "y", + span: Span( + 22163..22164, + ), + }, + init: Literal( + Object( + Span( + 22167..22169, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 22176..22183, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 22175..22176, + ), + }, + ), + span: Span( + 22176..22178, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 22177..22178, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 22181..22182, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 22189..22196, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 22188..22189, + ), + }, + ), + span: Span( + 22189..22191, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 22190..22191, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 22194..22195, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 22202..22209, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 22201..22202, + ), + }, + ), + span: Span( + 22202..22204, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 22203..22204, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 22207..22208, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 22215..22314, + ), + name: Ident { + sym: "to_string", + span: Span( + 22218..22227, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 22228..22229, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 22241..22255, + ), + name: Ident { + sym: "string", + span: Span( + 22245..22251, + ), + }, + init: Literal( + String( + "", + Span( + 22254..22255, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 22266..22289, + ), + name: Ident { + sym: "string", + span: Span( + 22270..22276, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 22279..22289, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 22279..22285, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 22288..22289, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 22306..22307, + ), + }, + ), + ), + Span( + 22299..22308, + ), + ), + ], + span: Span( + 22231..22314, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 22321..22344, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 22320..22321, + ), + }, + ), + span: Span( + 22321..22331, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 22322..22331, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 22334..22343, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 22350..22360, + ), + }, + ), + span: Span( + 22360..22362, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 22369..22372, + ), + }, + ), + span: Span( + 22372..22374, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 22047..22377, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 22379..22645, + ), + name: Ident { + sym: "owo", + span: Span( + 22382..22385, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 22394..22403, + ), + }, + ), + span: Span( + 22403..22405, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 22411..22421, + ), + }, + ), + span: Span( + 22421..22423, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 22429..22440, + ), + }, + ), + span: Span( + 22440..22442, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 22449..22468, + ), + name: Ident { + sym: "d", + span: Span( + 22453..22454, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 22457..22466, + ), + }, + ), + span: Span( + 22466..22468, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 22475..22593, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 22478..22483, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 22478..22479, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 22482..22483, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 22494..22504, + ), + }, + ), + span: Span( + 22504..22506, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 22484..22513, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 22519..22593, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 22522..22528, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 22522..22523, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 22527..22528, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 22539..22550, + ), + }, + ), + span: Span( + 22550..22552, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 22529..22559, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 22575..22584, + ), + }, + ), + span: Span( + 22584..22586, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 22565..22593, + ), + }, + Span( + 22560..22593, + ), + ), + ), + }, + Span( + 22514..22593, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 22599..22640, + ), + }, + ), + span: Span( + 22640..22642, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 22388..22645, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 22647..22923, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 22650..22691, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 22700..22724, + ), + name: Ident { + sym: "code", + span: Span( + 22704..22708, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 22711..22724, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 22731..22733, + ), + }, + ), + span: Span( + 22733..22739, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 22734..22739, + ), + }, + ), + }, + ), + span: Span( + 22739..22756, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 22740..22748, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 22751..22755, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 22762..22769, + ), + }, + ), + span: Span( + 22769..22775, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 22770..22775, + ), + }, + ), + }, + ), + span: Span( + 22775..22792, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 22776..22790, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 22798..22827, + ), + name: Ident { + sym: "program", + span: Span( + 22802..22809, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 22812..22814, + ), + }, + ), + span: Span( + 22814..22819, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 22815..22819, + ), + }, + ), + }, + ), + span: Span( + 22819..22827, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 22820..22825, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 22833..22866, + ), + name: Ident { + sym: "output", + span: Span( + 22837..22843, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 22846..22853, + ), + }, + ), + span: Span( + 22853..22858, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 22854..22858, + ), + }, + ), + }, + ), + span: Span( + 22858..22866, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 22859..22864, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 22873..22921, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 22876..22887, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 22876..22882, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 22886..22887, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 22905..22913, + ), + ), + ), + Span( + 22899..22915, + ), + ), + ], + span: Span( + 22889..22921, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 22694..22923, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 22964..22973, + ), + name: Ident { + sym: "x", + span: Span( + 22968..22969, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 22972..22973, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 22976..22984, + ), + }, + ), + span: Span( + 22984..22987, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 22985..22986, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 22990..23048, + ), + name: Ident { + sym: "main", + span: Span( + 22993..22997, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 23006..23016, + ), + }, + ), + span: Span( + 23016..23034, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 23017..23022, + ), + }, + ), + span: Span( + 23022..23024, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 23026..23031, + ), + }, + ), + span: Span( + 23031..23033, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 23040..23043, + ), + }, + ), + span: Span( + 23043..23045, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 23000..23048, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 23050..23131, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 23053..23063, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 23064..23065, + ), + }, + Ident { + sym: "b", + span: Span( + 23067..23068, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 23093..23122, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 23093..23094, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 23097..23122, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 23097..23098, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 23102..23122, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 23101..23102, + ), + }, + ), + span: Span( + 23102..23104, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 23103..23104, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 23107..23108, + ), + }, + ), + span: Span( + 23108..23114, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 23109..23114, + ), + }, + ), + }, + ), + span: Span( + 23114..23116, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 23116..23122, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 23117..23122, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 23076..23129, + ), + ), + ], + span: Span( + 23070..23131, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 23133..23472, + ), + name: Ident { + sym: "uwu", + span: Span( + 23136..23139, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 23148..23157, + ), + name: Ident { + sym: "a", + span: Span( + 23152..23153, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 23156..23157, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 23163..23172, + ), + name: Ident { + sym: "b", + span: Span( + 23167..23168, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 23171..23172, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 23178..23187, + ), + name: Ident { + sym: "c", + span: Span( + 23182..23183, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 23186..23187, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 23193..23202, + ), + name: Ident { + sym: "d", + span: Span( + 23197..23198, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 23201..23202, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 23209..23234, + ), + name: Ident { + sym: "x", + span: Span( + 23213..23214, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 23217..23234, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 23217..23218, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 23221..23234, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 23221..23222, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 23225..23234, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 23225..23226, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 23229..23234, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 23229..23230, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 23233..23234, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 23246..23247, + ), + }, + ), + Span( + 23240..23248, + ), + ), + Declaration( + Declaration { + span: Span( + 23254..23264, + ), + name: Ident { + sym: "y", + span: Span( + 23258..23259, + ), + }, + init: Literal( + Object( + Span( + 23262..23264, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 23271..23278, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 23270..23271, + ), + }, + ), + span: Span( + 23271..23273, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 23272..23273, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 23276..23277, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 23284..23291, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 23283..23284, + ), + }, + ), + span: Span( + 23284..23286, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 23285..23286, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 23289..23290, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 23297..23304, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 23296..23297, + ), + }, + ), + span: Span( + 23297..23299, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 23298..23299, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 23302..23303, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 23310..23409, + ), + name: Ident { + sym: "to_string", + span: Span( + 23313..23322, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 23323..23324, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 23336..23350, + ), + name: Ident { + sym: "string", + span: Span( + 23340..23346, + ), + }, + init: Literal( + String( + "", + Span( + 23349..23350, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 23361..23384, + ), + name: Ident { + sym: "string", + span: Span( + 23365..23371, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 23374..23384, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 23374..23380, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 23383..23384, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 23401..23402, + ), + }, + ), + ), + Span( + 23394..23403, + ), + ), + ], + span: Span( + 23326..23409, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 23416..23439, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 23415..23416, + ), + }, + ), + span: Span( + 23416..23426, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 23417..23426, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 23429..23438, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 23445..23455, + ), + }, + ), + span: Span( + 23455..23457, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 23464..23467, + ), + }, + ), + span: Span( + 23467..23469, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 23142..23472, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 23474..23740, + ), + name: Ident { + sym: "owo", + span: Span( + 23477..23480, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 23489..23498, + ), + }, + ), + span: Span( + 23498..23500, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 23506..23516, + ), + }, + ), + span: Span( + 23516..23518, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 23524..23535, + ), + }, + ), + span: Span( + 23535..23537, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 23544..23563, + ), + name: Ident { + sym: "d", + span: Span( + 23548..23549, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 23552..23561, + ), + }, + ), + span: Span( + 23561..23563, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 23570..23688, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 23573..23578, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 23573..23574, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 23577..23578, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 23589..23599, + ), + }, + ), + span: Span( + 23599..23601, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 23579..23608, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 23614..23688, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 23617..23623, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 23617..23618, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 23622..23623, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 23634..23645, + ), + }, + ), + span: Span( + 23645..23647, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 23624..23654, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 23670..23679, + ), + }, + ), + span: Span( + 23679..23681, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 23660..23688, + ), + }, + Span( + 23655..23688, + ), + ), + ), + }, + Span( + 23609..23688, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 23694..23735, + ), + }, + ), + span: Span( + 23735..23737, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 23483..23740, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 23742..24018, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 23745..23786, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 23795..23819, + ), + name: Ident { + sym: "code", + span: Span( + 23799..23803, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 23806..23819, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 23826..23828, + ), + }, + ), + span: Span( + 23828..23834, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 23829..23834, + ), + }, + ), + }, + ), + span: Span( + 23834..23851, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 23835..23843, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 23846..23850, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 23857..23864, + ), + }, + ), + span: Span( + 23864..23870, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 23865..23870, + ), + }, + ), + }, + ), + span: Span( + 23870..23887, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 23871..23885, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 23893..23922, + ), + name: Ident { + sym: "program", + span: Span( + 23897..23904, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 23907..23909, + ), + }, + ), + span: Span( + 23909..23914, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 23910..23914, + ), + }, + ), + }, + ), + span: Span( + 23914..23922, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 23915..23920, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 23928..23961, + ), + name: Ident { + sym: "output", + span: Span( + 23932..23938, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 23941..23948, + ), + }, + ), + span: Span( + 23948..23953, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 23949..23953, + ), + }, + ), + }, + ), + span: Span( + 23953..23961, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 23954..23959, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 23968..24016, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 23971..23982, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 23971..23977, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 23981..23982, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 24000..24008, + ), + ), + ), + Span( + 23994..24010, + ), + ), + ], + span: Span( + 23984..24016, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 23789..24018, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 24059..24068, + ), + name: Ident { + sym: "x", + span: Span( + 24063..24064, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 24067..24068, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 24071..24079, + ), + }, + ), + span: Span( + 24079..24082, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 24080..24081, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 24085..24143, + ), + name: Ident { + sym: "main", + span: Span( + 24088..24092, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 24101..24111, + ), + }, + ), + span: Span( + 24111..24129, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 24112..24117, + ), + }, + ), + span: Span( + 24117..24119, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 24121..24126, + ), + }, + ), + span: Span( + 24126..24128, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 24135..24138, + ), + }, + ), + span: Span( + 24138..24140, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 24095..24143, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 24145..24226, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 24148..24158, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 24159..24160, + ), + }, + Ident { + sym: "b", + span: Span( + 24162..24163, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 24188..24217, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 24188..24189, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 24192..24217, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 24192..24193, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 24197..24217, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 24196..24197, + ), + }, + ), + span: Span( + 24197..24199, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 24198..24199, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 24202..24203, + ), + }, + ), + span: Span( + 24203..24209, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 24204..24209, + ), + }, + ), + }, + ), + span: Span( + 24209..24211, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 24211..24217, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 24212..24217, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 24171..24224, + ), + ), + ], + span: Span( + 24165..24226, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 24228..24567, + ), + name: Ident { + sym: "uwu", + span: Span( + 24231..24234, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 24243..24252, + ), + name: Ident { + sym: "a", + span: Span( + 24247..24248, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 24251..24252, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 24258..24267, + ), + name: Ident { + sym: "b", + span: Span( + 24262..24263, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 24266..24267, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 24273..24282, + ), + name: Ident { + sym: "c", + span: Span( + 24277..24278, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 24281..24282, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 24288..24297, + ), + name: Ident { + sym: "d", + span: Span( + 24292..24293, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 24296..24297, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 24304..24329, + ), + name: Ident { + sym: "x", + span: Span( + 24308..24309, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 24312..24329, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 24312..24313, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 24316..24329, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 24316..24317, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 24320..24329, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 24320..24321, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 24324..24329, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 24324..24325, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 24328..24329, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 24341..24342, + ), + }, + ), + Span( + 24335..24343, + ), + ), + Declaration( + Declaration { + span: Span( + 24349..24359, + ), + name: Ident { + sym: "y", + span: Span( + 24353..24354, + ), + }, + init: Literal( + Object( + Span( + 24357..24359, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 24366..24373, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 24365..24366, + ), + }, + ), + span: Span( + 24366..24368, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 24367..24368, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 24371..24372, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 24379..24386, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 24378..24379, + ), + }, + ), + span: Span( + 24379..24381, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 24380..24381, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 24384..24385, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 24392..24399, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 24391..24392, + ), + }, + ), + span: Span( + 24392..24394, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 24393..24394, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 24397..24398, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 24405..24504, + ), + name: Ident { + sym: "to_string", + span: Span( + 24408..24417, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 24418..24419, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 24431..24445, + ), + name: Ident { + sym: "string", + span: Span( + 24435..24441, + ), + }, + init: Literal( + String( + "", + Span( + 24444..24445, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 24456..24479, + ), + name: Ident { + sym: "string", + span: Span( + 24460..24466, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 24469..24479, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 24469..24475, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 24478..24479, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 24496..24497, + ), + }, + ), + ), + Span( + 24489..24498, + ), + ), + ], + span: Span( + 24421..24504, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 24511..24534, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 24510..24511, + ), + }, + ), + span: Span( + 24511..24521, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 24512..24521, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 24524..24533, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 24540..24550, + ), + }, + ), + span: Span( + 24550..24552, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 24559..24562, + ), + }, + ), + span: Span( + 24562..24564, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 24237..24567, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 24569..24835, + ), + name: Ident { + sym: "owo", + span: Span( + 24572..24575, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 24584..24593, + ), + }, + ), + span: Span( + 24593..24595, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 24601..24611, + ), + }, + ), + span: Span( + 24611..24613, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 24619..24630, + ), + }, + ), + span: Span( + 24630..24632, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 24639..24658, + ), + name: Ident { + sym: "d", + span: Span( + 24643..24644, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 24647..24656, + ), + }, + ), + span: Span( + 24656..24658, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 24665..24783, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 24668..24673, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 24668..24669, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 24672..24673, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 24684..24694, + ), + }, + ), + span: Span( + 24694..24696, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 24674..24703, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 24709..24783, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 24712..24718, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 24712..24713, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 24717..24718, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 24729..24740, + ), + }, + ), + span: Span( + 24740..24742, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 24719..24749, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 24765..24774, + ), + }, + ), + span: Span( + 24774..24776, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 24755..24783, + ), + }, + Span( + 24750..24783, + ), + ), + ), + }, + Span( + 24704..24783, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 24789..24830, + ), + }, + ), + span: Span( + 24830..24832, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 24578..24835, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 24837..25113, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 24840..24881, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 24890..24914, + ), + name: Ident { + sym: "code", + span: Span( + 24894..24898, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 24901..24914, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 24921..24923, + ), + }, + ), + span: Span( + 24923..24929, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 24924..24929, + ), + }, + ), + }, + ), + span: Span( + 24929..24946, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 24930..24938, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 24941..24945, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 24952..24959, + ), + }, + ), + span: Span( + 24959..24965, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 24960..24965, + ), + }, + ), + }, + ), + span: Span( + 24965..24982, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 24966..24980, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 24988..25017, + ), + name: Ident { + sym: "program", + span: Span( + 24992..24999, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 25002..25004, + ), + }, + ), + span: Span( + 25004..25009, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 25005..25009, + ), + }, + ), + }, + ), + span: Span( + 25009..25017, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 25010..25015, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 25023..25056, + ), + name: Ident { + sym: "output", + span: Span( + 25027..25033, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 25036..25043, + ), + }, + ), + span: Span( + 25043..25048, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 25044..25048, + ), + }, + ), + }, + ), + span: Span( + 25048..25056, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 25049..25054, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 25063..25111, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 25066..25077, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 25066..25072, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 25076..25077, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 25095..25103, + ), + ), + ), + Span( + 25089..25105, + ), + ), + ], + span: Span( + 25079..25111, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 24884..25113, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 25154..25163, + ), + name: Ident { + sym: "x", + span: Span( + 25158..25159, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 25162..25163, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 25166..25174, + ), + }, + ), + span: Span( + 25174..25177, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 25175..25176, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 25180..25238, + ), + name: Ident { + sym: "main", + span: Span( + 25183..25187, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 25196..25206, + ), + }, + ), + span: Span( + 25206..25224, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 25207..25212, + ), + }, + ), + span: Span( + 25212..25214, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 25216..25221, + ), + }, + ), + span: Span( + 25221..25223, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 25230..25233, + ), + }, + ), + span: Span( + 25233..25235, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 25190..25238, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 25240..25321, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 25243..25253, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 25254..25255, + ), + }, + Ident { + sym: "b", + span: Span( + 25257..25258, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 25283..25312, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 25283..25284, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 25287..25312, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 25287..25288, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 25292..25312, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 25291..25292, + ), + }, + ), + span: Span( + 25292..25294, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 25293..25294, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 25297..25298, + ), + }, + ), + span: Span( + 25298..25304, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 25299..25304, + ), + }, + ), + }, + ), + span: Span( + 25304..25306, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 25306..25312, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 25307..25312, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 25266..25319, + ), + ), + ], + span: Span( + 25260..25321, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 25323..25662, + ), + name: Ident { + sym: "uwu", + span: Span( + 25326..25329, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 25338..25347, + ), + name: Ident { + sym: "a", + span: Span( + 25342..25343, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 25346..25347, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 25353..25362, + ), + name: Ident { + sym: "b", + span: Span( + 25357..25358, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 25361..25362, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 25368..25377, + ), + name: Ident { + sym: "c", + span: Span( + 25372..25373, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 25376..25377, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 25383..25392, + ), + name: Ident { + sym: "d", + span: Span( + 25387..25388, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 25391..25392, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 25399..25424, + ), + name: Ident { + sym: "x", + span: Span( + 25403..25404, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 25407..25424, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 25407..25408, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 25411..25424, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 25411..25412, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 25415..25424, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 25415..25416, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 25419..25424, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 25419..25420, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 25423..25424, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 25436..25437, + ), + }, + ), + Span( + 25430..25438, + ), + ), + Declaration( + Declaration { + span: Span( + 25444..25454, + ), + name: Ident { + sym: "y", + span: Span( + 25448..25449, + ), + }, + init: Literal( + Object( + Span( + 25452..25454, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 25461..25468, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 25460..25461, + ), + }, + ), + span: Span( + 25461..25463, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 25462..25463, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 25466..25467, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 25474..25481, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 25473..25474, + ), + }, + ), + span: Span( + 25474..25476, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 25475..25476, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 25479..25480, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 25487..25494, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 25486..25487, + ), + }, + ), + span: Span( + 25487..25489, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 25488..25489, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 25492..25493, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 25500..25599, + ), + name: Ident { + sym: "to_string", + span: Span( + 25503..25512, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 25513..25514, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 25526..25540, + ), + name: Ident { + sym: "string", + span: Span( + 25530..25536, + ), + }, + init: Literal( + String( + "", + Span( + 25539..25540, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 25551..25574, + ), + name: Ident { + sym: "string", + span: Span( + 25555..25561, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 25564..25574, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 25564..25570, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 25573..25574, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 25591..25592, + ), + }, + ), + ), + Span( + 25584..25593, + ), + ), + ], + span: Span( + 25516..25599, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 25606..25629, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 25605..25606, + ), + }, + ), + span: Span( + 25606..25616, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 25607..25616, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 25619..25628, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 25635..25645, + ), + }, + ), + span: Span( + 25645..25647, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 25654..25657, + ), + }, + ), + span: Span( + 25657..25659, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 25332..25662, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 25664..25930, + ), + name: Ident { + sym: "owo", + span: Span( + 25667..25670, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 25679..25688, + ), + }, + ), + span: Span( + 25688..25690, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 25696..25706, + ), + }, + ), + span: Span( + 25706..25708, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 25714..25725, + ), + }, + ), + span: Span( + 25725..25727, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 25734..25753, + ), + name: Ident { + sym: "d", + span: Span( + 25738..25739, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 25742..25751, + ), + }, + ), + span: Span( + 25751..25753, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 25760..25878, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 25763..25768, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 25763..25764, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 25767..25768, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 25779..25789, + ), + }, + ), + span: Span( + 25789..25791, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 25769..25798, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 25804..25878, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 25807..25813, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 25807..25808, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 25812..25813, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 25824..25835, + ), + }, + ), + span: Span( + 25835..25837, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 25814..25844, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 25860..25869, + ), + }, + ), + span: Span( + 25869..25871, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 25850..25878, + ), + }, + Span( + 25845..25878, + ), + ), + ), + }, + Span( + 25799..25878, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 25884..25925, + ), + }, + ), + span: Span( + 25925..25927, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 25673..25930, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 25932..26208, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 25935..25976, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 25985..26009, + ), + name: Ident { + sym: "code", + span: Span( + 25989..25993, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 25996..26009, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 26016..26018, + ), + }, + ), + span: Span( + 26018..26024, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 26019..26024, + ), + }, + ), + }, + ), + span: Span( + 26024..26041, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 26025..26033, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 26036..26040, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 26047..26054, + ), + }, + ), + span: Span( + 26054..26060, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 26055..26060, + ), + }, + ), + }, + ), + span: Span( + 26060..26077, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 26061..26075, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 26083..26112, + ), + name: Ident { + sym: "program", + span: Span( + 26087..26094, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 26097..26099, + ), + }, + ), + span: Span( + 26099..26104, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 26100..26104, + ), + }, + ), + }, + ), + span: Span( + 26104..26112, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 26105..26110, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 26118..26151, + ), + name: Ident { + sym: "output", + span: Span( + 26122..26128, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 26131..26138, + ), + }, + ), + span: Span( + 26138..26143, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 26139..26143, + ), + }, + ), + }, + ), + span: Span( + 26143..26151, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 26144..26149, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 26158..26206, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 26161..26172, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 26161..26167, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 26171..26172, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 26190..26198, + ), + ), + ), + Span( + 26184..26200, + ), + ), + ], + span: Span( + 26174..26206, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 25979..26208, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 26249..26258, + ), + name: Ident { + sym: "x", + span: Span( + 26253..26254, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 26257..26258, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 26261..26269, + ), + }, + ), + span: Span( + 26269..26272, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 26270..26271, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 26274..26332, + ), + name: Ident { + sym: "main", + span: Span( + 26277..26281, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 26290..26300, + ), + }, + ), + span: Span( + 26300..26318, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 26301..26306, + ), + }, + ), + span: Span( + 26306..26308, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 26310..26315, + ), + }, + ), + span: Span( + 26315..26317, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 26324..26327, + ), + }, + ), + span: Span( + 26327..26329, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 26284..26332, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 26334..26415, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 26337..26347, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 26348..26349, + ), + }, + Ident { + sym: "b", + span: Span( + 26351..26352, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 26377..26406, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 26377..26378, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 26381..26406, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 26381..26382, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 26386..26406, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 26385..26386, + ), + }, + ), + span: Span( + 26386..26388, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 26387..26388, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 26391..26392, + ), + }, + ), + span: Span( + 26392..26398, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 26393..26398, + ), + }, + ), + }, + ), + span: Span( + 26398..26400, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 26400..26406, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 26401..26406, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 26360..26413, + ), + ), + ], + span: Span( + 26354..26415, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 26417..26756, + ), + name: Ident { + sym: "uwu", + span: Span( + 26420..26423, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 26432..26441, + ), + name: Ident { + sym: "a", + span: Span( + 26436..26437, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 26440..26441, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 26447..26456, + ), + name: Ident { + sym: "b", + span: Span( + 26451..26452, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 26455..26456, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 26462..26471, + ), + name: Ident { + sym: "c", + span: Span( + 26466..26467, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 26470..26471, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 26477..26486, + ), + name: Ident { + sym: "d", + span: Span( + 26481..26482, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 26485..26486, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 26493..26518, + ), + name: Ident { + sym: "x", + span: Span( + 26497..26498, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 26501..26518, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 26501..26502, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 26505..26518, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 26505..26506, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 26509..26518, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 26509..26510, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 26513..26518, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 26513..26514, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 26517..26518, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 26530..26531, + ), + }, + ), + Span( + 26524..26532, + ), + ), + Declaration( + Declaration { + span: Span( + 26538..26548, + ), + name: Ident { + sym: "y", + span: Span( + 26542..26543, + ), + }, + init: Literal( + Object( + Span( + 26546..26548, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 26555..26562, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 26554..26555, + ), + }, + ), + span: Span( + 26555..26557, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 26556..26557, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 26560..26561, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 26568..26575, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 26567..26568, + ), + }, + ), + span: Span( + 26568..26570, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 26569..26570, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 26573..26574, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 26581..26588, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 26580..26581, + ), + }, + ), + span: Span( + 26581..26583, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 26582..26583, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 26586..26587, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 26594..26693, + ), + name: Ident { + sym: "to_string", + span: Span( + 26597..26606, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 26607..26608, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 26620..26634, + ), + name: Ident { + sym: "string", + span: Span( + 26624..26630, + ), + }, + init: Literal( + String( + "", + Span( + 26633..26634, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 26645..26668, + ), + name: Ident { + sym: "string", + span: Span( + 26649..26655, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 26658..26668, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 26658..26664, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 26667..26668, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 26685..26686, + ), + }, + ), + ), + Span( + 26678..26687, + ), + ), + ], + span: Span( + 26610..26693, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 26700..26723, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 26699..26700, + ), + }, + ), + span: Span( + 26700..26710, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 26701..26710, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 26713..26722, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 26729..26739, + ), + }, + ), + span: Span( + 26739..26741, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 26748..26751, + ), + }, + ), + span: Span( + 26751..26753, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 26426..26756, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 26758..27024, + ), + name: Ident { + sym: "owo", + span: Span( + 26761..26764, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 26773..26782, + ), + }, + ), + span: Span( + 26782..26784, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 26790..26800, + ), + }, + ), + span: Span( + 26800..26802, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 26808..26819, + ), + }, + ), + span: Span( + 26819..26821, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 26828..26847, + ), + name: Ident { + sym: "d", + span: Span( + 26832..26833, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 26836..26845, + ), + }, + ), + span: Span( + 26845..26847, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 26854..26972, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 26857..26862, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 26857..26858, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 26861..26862, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 26873..26883, + ), + }, + ), + span: Span( + 26883..26885, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 26863..26892, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 26898..26972, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 26901..26907, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 26901..26902, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 26906..26907, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 26918..26929, + ), + }, + ), + span: Span( + 26929..26931, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 26908..26938, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 26954..26963, + ), + }, + ), + span: Span( + 26963..26965, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 26944..26972, + ), + }, + Span( + 26939..26972, + ), + ), + ), + }, + Span( + 26893..26972, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 26978..27019, + ), + }, + ), + span: Span( + 27019..27021, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 26767..27024, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 27026..27302, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 27029..27070, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 27079..27103, + ), + name: Ident { + sym: "code", + span: Span( + 27083..27087, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 27090..27103, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 27110..27112, + ), + }, + ), + span: Span( + 27112..27118, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 27113..27118, + ), + }, + ), + }, + ), + span: Span( + 27118..27135, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 27119..27127, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 27130..27134, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 27141..27148, + ), + }, + ), + span: Span( + 27148..27154, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 27149..27154, + ), + }, + ), + }, + ), + span: Span( + 27154..27171, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 27155..27169, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 27177..27206, + ), + name: Ident { + sym: "program", + span: Span( + 27181..27188, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 27191..27193, + ), + }, + ), + span: Span( + 27193..27198, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 27194..27198, + ), + }, + ), + }, + ), + span: Span( + 27198..27206, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 27199..27204, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 27212..27245, + ), + name: Ident { + sym: "output", + span: Span( + 27216..27222, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 27225..27232, + ), + }, + ), + span: Span( + 27232..27237, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 27233..27237, + ), + }, + ), + }, + ), + span: Span( + 27237..27245, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 27238..27243, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 27252..27300, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 27255..27266, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 27255..27261, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 27265..27266, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 27284..27292, + ), + ), + ), + Span( + 27278..27294, + ), + ), + ], + span: Span( + 27268..27300, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 27073..27302, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 27343..27352, + ), + name: Ident { + sym: "x", + span: Span( + 27347..27348, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 27351..27352, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 27355..27363, + ), + }, + ), + span: Span( + 27363..27366, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 27364..27365, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 27369..27427, + ), + name: Ident { + sym: "main", + span: Span( + 27372..27376, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 27385..27395, + ), + }, + ), + span: Span( + 27395..27413, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 27396..27401, + ), + }, + ), + span: Span( + 27401..27403, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 27405..27410, + ), + }, + ), + span: Span( + 27410..27412, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 27419..27422, + ), + }, + ), + span: Span( + 27422..27424, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 27379..27427, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 27429..27510, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 27432..27442, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 27443..27444, + ), + }, + Ident { + sym: "b", + span: Span( + 27446..27447, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 27472..27501, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 27472..27473, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 27476..27501, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 27476..27477, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 27481..27501, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 27480..27481, + ), + }, + ), + span: Span( + 27481..27483, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 27482..27483, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 27486..27487, + ), + }, + ), + span: Span( + 27487..27493, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 27488..27493, + ), + }, + ), + }, + ), + span: Span( + 27493..27495, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 27495..27501, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 27496..27501, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 27455..27508, + ), + ), + ], + span: Span( + 27449..27510, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 27512..27851, + ), + name: Ident { + sym: "uwu", + span: Span( + 27515..27518, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 27527..27536, + ), + name: Ident { + sym: "a", + span: Span( + 27531..27532, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 27535..27536, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 27542..27551, + ), + name: Ident { + sym: "b", + span: Span( + 27546..27547, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 27550..27551, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 27557..27566, + ), + name: Ident { + sym: "c", + span: Span( + 27561..27562, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 27565..27566, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 27572..27581, + ), + name: Ident { + sym: "d", + span: Span( + 27576..27577, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 27580..27581, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 27588..27613, + ), + name: Ident { + sym: "x", + span: Span( + 27592..27593, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 27596..27613, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 27596..27597, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 27600..27613, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 27600..27601, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 27604..27613, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 27604..27605, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 27608..27613, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 27608..27609, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 27612..27613, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 27625..27626, + ), + }, + ), + Span( + 27619..27627, + ), + ), + Declaration( + Declaration { + span: Span( + 27633..27643, + ), + name: Ident { + sym: "y", + span: Span( + 27637..27638, + ), + }, + init: Literal( + Object( + Span( + 27641..27643, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 27650..27657, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 27649..27650, + ), + }, + ), + span: Span( + 27650..27652, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 27651..27652, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 27655..27656, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 27663..27670, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 27662..27663, + ), + }, + ), + span: Span( + 27663..27665, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 27664..27665, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 27668..27669, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 27676..27683, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 27675..27676, + ), + }, + ), + span: Span( + 27676..27678, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 27677..27678, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 27681..27682, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 27689..27788, + ), + name: Ident { + sym: "to_string", + span: Span( + 27692..27701, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 27702..27703, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 27715..27729, + ), + name: Ident { + sym: "string", + span: Span( + 27719..27725, + ), + }, + init: Literal( + String( + "", + Span( + 27728..27729, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 27740..27763, + ), + name: Ident { + sym: "string", + span: Span( + 27744..27750, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 27753..27763, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 27753..27759, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 27762..27763, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 27780..27781, + ), + }, + ), + ), + Span( + 27773..27782, + ), + ), + ], + span: Span( + 27705..27788, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 27795..27818, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 27794..27795, + ), + }, + ), + span: Span( + 27795..27805, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 27796..27805, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 27808..27817, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 27824..27834, + ), + }, + ), + span: Span( + 27834..27836, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 27843..27846, + ), + }, + ), + span: Span( + 27846..27848, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 27521..27851, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 27853..28119, + ), + name: Ident { + sym: "owo", + span: Span( + 27856..27859, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 27868..27877, + ), + }, + ), + span: Span( + 27877..27879, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 27885..27895, + ), + }, + ), + span: Span( + 27895..27897, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 27903..27914, + ), + }, + ), + span: Span( + 27914..27916, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 27923..27942, + ), + name: Ident { + sym: "d", + span: Span( + 27927..27928, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 27931..27940, + ), + }, + ), + span: Span( + 27940..27942, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 27949..28067, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 27952..27957, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 27952..27953, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 27956..27957, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 27968..27978, + ), + }, + ), + span: Span( + 27978..27980, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 27958..27987, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 27993..28067, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 27996..28002, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 27996..27997, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 28001..28002, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 28013..28024, + ), + }, + ), + span: Span( + 28024..28026, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 28003..28033, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 28049..28058, + ), + }, + ), + span: Span( + 28058..28060, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 28039..28067, + ), + }, + Span( + 28034..28067, + ), + ), + ), + }, + Span( + 27988..28067, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 28073..28114, + ), + }, + ), + span: Span( + 28114..28116, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 27862..28119, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 28121..28397, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 28124..28165, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 28174..28198, + ), + name: Ident { + sym: "code", + span: Span( + 28178..28182, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 28185..28198, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 28205..28207, + ), + }, + ), + span: Span( + 28207..28213, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 28208..28213, + ), + }, + ), + }, + ), + span: Span( + 28213..28230, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 28214..28222, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 28225..28229, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 28236..28243, + ), + }, + ), + span: Span( + 28243..28249, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 28244..28249, + ), + }, + ), + }, + ), + span: Span( + 28249..28266, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 28250..28264, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 28272..28301, + ), + name: Ident { + sym: "program", + span: Span( + 28276..28283, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 28286..28288, + ), + }, + ), + span: Span( + 28288..28293, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 28289..28293, + ), + }, + ), + }, + ), + span: Span( + 28293..28301, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 28294..28299, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 28307..28340, + ), + name: Ident { + sym: "output", + span: Span( + 28311..28317, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 28320..28327, + ), + }, + ), + span: Span( + 28327..28332, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 28328..28332, + ), + }, + ), + }, + ), + span: Span( + 28332..28340, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 28333..28338, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 28347..28395, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 28350..28361, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 28350..28356, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 28360..28361, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 28379..28387, + ), + ), + ), + Span( + 28373..28389, + ), + ), + ], + span: Span( + 28363..28395, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 28168..28397, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 28438..28447, + ), + name: Ident { + sym: "x", + span: Span( + 28442..28443, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 28446..28447, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 28450..28458, + ), + }, + ), + span: Span( + 28458..28461, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 28459..28460, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 28464..28522, + ), + name: Ident { + sym: "main", + span: Span( + 28467..28471, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 28480..28490, + ), + }, + ), + span: Span( + 28490..28508, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 28491..28496, + ), + }, + ), + span: Span( + 28496..28498, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 28500..28505, + ), + }, + ), + span: Span( + 28505..28507, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 28514..28517, + ), + }, + ), + span: Span( + 28517..28519, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 28474..28522, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 28524..28605, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 28527..28537, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 28538..28539, + ), + }, + Ident { + sym: "b", + span: Span( + 28541..28542, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 28567..28596, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 28567..28568, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 28571..28596, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 28571..28572, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 28576..28596, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 28575..28576, + ), + }, + ), + span: Span( + 28576..28578, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 28577..28578, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 28581..28582, + ), + }, + ), + span: Span( + 28582..28588, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 28583..28588, + ), + }, + ), + }, + ), + span: Span( + 28588..28590, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 28590..28596, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 28591..28596, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 28550..28603, + ), + ), + ], + span: Span( + 28544..28605, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 28607..28946, + ), + name: Ident { + sym: "uwu", + span: Span( + 28610..28613, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 28622..28631, + ), + name: Ident { + sym: "a", + span: Span( + 28626..28627, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 28630..28631, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 28637..28646, + ), + name: Ident { + sym: "b", + span: Span( + 28641..28642, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 28645..28646, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 28652..28661, + ), + name: Ident { + sym: "c", + span: Span( + 28656..28657, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 28660..28661, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 28667..28676, + ), + name: Ident { + sym: "d", + span: Span( + 28671..28672, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 28675..28676, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 28683..28708, + ), + name: Ident { + sym: "x", + span: Span( + 28687..28688, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 28691..28708, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 28691..28692, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 28695..28708, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 28695..28696, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 28699..28708, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 28699..28700, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 28703..28708, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 28703..28704, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 28707..28708, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 28720..28721, + ), + }, + ), + Span( + 28714..28722, + ), + ), + Declaration( + Declaration { + span: Span( + 28728..28738, + ), + name: Ident { + sym: "y", + span: Span( + 28732..28733, + ), + }, + init: Literal( + Object( + Span( + 28736..28738, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 28745..28752, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 28744..28745, + ), + }, + ), + span: Span( + 28745..28747, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 28746..28747, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 28750..28751, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 28758..28765, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 28757..28758, + ), + }, + ), + span: Span( + 28758..28760, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 28759..28760, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 28763..28764, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 28771..28778, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 28770..28771, + ), + }, + ), + span: Span( + 28771..28773, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 28772..28773, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 28776..28777, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 28784..28883, + ), + name: Ident { + sym: "to_string", + span: Span( + 28787..28796, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 28797..28798, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 28810..28824, + ), + name: Ident { + sym: "string", + span: Span( + 28814..28820, + ), + }, + init: Literal( + String( + "", + Span( + 28823..28824, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 28835..28858, + ), + name: Ident { + sym: "string", + span: Span( + 28839..28845, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 28848..28858, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 28848..28854, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 28857..28858, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 28875..28876, + ), + }, + ), + ), + Span( + 28868..28877, + ), + ), + ], + span: Span( + 28800..28883, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 28890..28913, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 28889..28890, + ), + }, + ), + span: Span( + 28890..28900, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 28891..28900, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 28903..28912, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 28919..28929, + ), + }, + ), + span: Span( + 28929..28931, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 28938..28941, + ), + }, + ), + span: Span( + 28941..28943, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 28616..28946, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 28948..29214, + ), + name: Ident { + sym: "owo", + span: Span( + 28951..28954, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 28963..28972, + ), + }, + ), + span: Span( + 28972..28974, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 28980..28990, + ), + }, + ), + span: Span( + 28990..28992, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 28998..29009, + ), + }, + ), + span: Span( + 29009..29011, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 29018..29037, + ), + name: Ident { + sym: "d", + span: Span( + 29022..29023, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 29026..29035, + ), + }, + ), + span: Span( + 29035..29037, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 29044..29162, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 29047..29052, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 29047..29048, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 29051..29052, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 29063..29073, + ), + }, + ), + span: Span( + 29073..29075, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 29053..29082, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 29088..29162, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 29091..29097, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 29091..29092, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 29096..29097, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 29108..29119, + ), + }, + ), + span: Span( + 29119..29121, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 29098..29128, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 29144..29153, + ), + }, + ), + span: Span( + 29153..29155, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 29134..29162, + ), + }, + Span( + 29129..29162, + ), + ), + ), + }, + Span( + 29083..29162, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 29168..29209, + ), + }, + ), + span: Span( + 29209..29211, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 28957..29214, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 29216..29492, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 29219..29260, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 29269..29293, + ), + name: Ident { + sym: "code", + span: Span( + 29273..29277, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 29280..29293, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 29300..29302, + ), + }, + ), + span: Span( + 29302..29308, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 29303..29308, + ), + }, + ), + }, + ), + span: Span( + 29308..29325, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 29309..29317, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 29320..29324, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 29331..29338, + ), + }, + ), + span: Span( + 29338..29344, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 29339..29344, + ), + }, + ), + }, + ), + span: Span( + 29344..29361, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 29345..29359, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 29367..29396, + ), + name: Ident { + sym: "program", + span: Span( + 29371..29378, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 29381..29383, + ), + }, + ), + span: Span( + 29383..29388, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 29384..29388, + ), + }, + ), + }, + ), + span: Span( + 29388..29396, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 29389..29394, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 29402..29435, + ), + name: Ident { + sym: "output", + span: Span( + 29406..29412, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 29415..29422, + ), + }, + ), + span: Span( + 29422..29427, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 29423..29427, + ), + }, + ), + }, + ), + span: Span( + 29427..29435, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 29428..29433, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 29442..29490, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 29445..29456, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 29445..29451, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 29455..29456, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 29474..29482, + ), + ), + ), + Span( + 29468..29484, + ), + ), + ], + span: Span( + 29458..29490, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 29263..29492, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 29533..29542, + ), + name: Ident { + sym: "x", + span: Span( + 29537..29538, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 29541..29542, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 29545..29553, + ), + }, + ), + span: Span( + 29553..29556, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 29554..29555, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 29559..29617, + ), + name: Ident { + sym: "main", + span: Span( + 29562..29566, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 29575..29585, + ), + }, + ), + span: Span( + 29585..29603, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 29586..29591, + ), + }, + ), + span: Span( + 29591..29593, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 29595..29600, + ), + }, + ), + span: Span( + 29600..29602, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 29609..29612, + ), + }, + ), + span: Span( + 29612..29614, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 29569..29617, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 29619..29700, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 29622..29632, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 29633..29634, + ), + }, + Ident { + sym: "b", + span: Span( + 29636..29637, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 29662..29691, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 29662..29663, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 29666..29691, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 29666..29667, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 29671..29691, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 29670..29671, + ), + }, + ), + span: Span( + 29671..29673, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 29672..29673, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 29676..29677, + ), + }, + ), + span: Span( + 29677..29683, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 29678..29683, + ), + }, + ), + }, + ), + span: Span( + 29683..29685, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 29685..29691, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 29686..29691, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 29645..29698, + ), + ), + ], + span: Span( + 29639..29700, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 29702..30041, + ), + name: Ident { + sym: "uwu", + span: Span( + 29705..29708, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 29717..29726, + ), + name: Ident { + sym: "a", + span: Span( + 29721..29722, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 29725..29726, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 29732..29741, + ), + name: Ident { + sym: "b", + span: Span( + 29736..29737, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 29740..29741, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 29747..29756, + ), + name: Ident { + sym: "c", + span: Span( + 29751..29752, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 29755..29756, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 29762..29771, + ), + name: Ident { + sym: "d", + span: Span( + 29766..29767, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 29770..29771, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 29778..29803, + ), + name: Ident { + sym: "x", + span: Span( + 29782..29783, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 29786..29803, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 29786..29787, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 29790..29803, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 29790..29791, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 29794..29803, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 29794..29795, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 29798..29803, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 29798..29799, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 29802..29803, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 29815..29816, + ), + }, + ), + Span( + 29809..29817, + ), + ), + Declaration( + Declaration { + span: Span( + 29823..29833, + ), + name: Ident { + sym: "y", + span: Span( + 29827..29828, + ), + }, + init: Literal( + Object( + Span( + 29831..29833, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 29840..29847, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 29839..29840, + ), + }, + ), + span: Span( + 29840..29842, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 29841..29842, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 29845..29846, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 29853..29860, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 29852..29853, + ), + }, + ), + span: Span( + 29853..29855, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 29854..29855, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 29858..29859, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 29866..29873, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 29865..29866, + ), + }, + ), + span: Span( + 29866..29868, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 29867..29868, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 29871..29872, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 29879..29978, + ), + name: Ident { + sym: "to_string", + span: Span( + 29882..29891, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 29892..29893, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 29905..29919, + ), + name: Ident { + sym: "string", + span: Span( + 29909..29915, + ), + }, + init: Literal( + String( + "", + Span( + 29918..29919, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 29930..29953, + ), + name: Ident { + sym: "string", + span: Span( + 29934..29940, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 29943..29953, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 29943..29949, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 29952..29953, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 29970..29971, + ), + }, + ), + ), + Span( + 29963..29972, + ), + ), + ], + span: Span( + 29895..29978, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 29985..30008, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 29984..29985, + ), + }, + ), + span: Span( + 29985..29995, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 29986..29995, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 29998..30007, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 30014..30024, + ), + }, + ), + span: Span( + 30024..30026, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 30033..30036, + ), + }, + ), + span: Span( + 30036..30038, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 29711..30041, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 30043..30309, + ), + name: Ident { + sym: "owo", + span: Span( + 30046..30049, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 30058..30067, + ), + }, + ), + span: Span( + 30067..30069, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 30075..30085, + ), + }, + ), + span: Span( + 30085..30087, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 30093..30104, + ), + }, + ), + span: Span( + 30104..30106, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 30113..30132, + ), + name: Ident { + sym: "d", + span: Span( + 30117..30118, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 30121..30130, + ), + }, + ), + span: Span( + 30130..30132, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 30139..30257, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 30142..30147, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 30142..30143, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 30146..30147, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 30158..30168, + ), + }, + ), + span: Span( + 30168..30170, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 30148..30177, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 30183..30257, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 30186..30192, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 30186..30187, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 30191..30192, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 30203..30214, + ), + }, + ), + span: Span( + 30214..30216, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 30193..30223, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 30239..30248, + ), + }, + ), + span: Span( + 30248..30250, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 30229..30257, + ), + }, + Span( + 30224..30257, + ), + ), + ), + }, + Span( + 30178..30257, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 30263..30304, + ), + }, + ), + span: Span( + 30304..30306, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 30052..30309, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 30311..30587, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 30314..30355, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 30364..30388, + ), + name: Ident { + sym: "code", + span: Span( + 30368..30372, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 30375..30388, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 30395..30397, + ), + }, + ), + span: Span( + 30397..30403, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 30398..30403, + ), + }, + ), + }, + ), + span: Span( + 30403..30420, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 30404..30412, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 30415..30419, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 30426..30433, + ), + }, + ), + span: Span( + 30433..30439, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 30434..30439, + ), + }, + ), + }, + ), + span: Span( + 30439..30456, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 30440..30454, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 30462..30491, + ), + name: Ident { + sym: "program", + span: Span( + 30466..30473, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 30476..30478, + ), + }, + ), + span: Span( + 30478..30483, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 30479..30483, + ), + }, + ), + }, + ), + span: Span( + 30483..30491, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 30484..30489, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 30497..30530, + ), + name: Ident { + sym: "output", + span: Span( + 30501..30507, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 30510..30517, + ), + }, + ), + span: Span( + 30517..30522, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 30518..30522, + ), + }, + ), + }, + ), + span: Span( + 30522..30530, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 30523..30528, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 30537..30585, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 30540..30551, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 30540..30546, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 30550..30551, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 30569..30577, + ), + ), + ), + Span( + 30563..30579, + ), + ), + ], + span: Span( + 30553..30585, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 30358..30587, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 30628..30637, + ), + name: Ident { + sym: "x", + span: Span( + 30632..30633, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 30636..30637, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 30640..30648, + ), + }, + ), + span: Span( + 30648..30651, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 30649..30650, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 30653..30711, + ), + name: Ident { + sym: "main", + span: Span( + 30656..30660, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 30669..30679, + ), + }, + ), + span: Span( + 30679..30697, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 30680..30685, + ), + }, + ), + span: Span( + 30685..30687, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 30689..30694, + ), + }, + ), + span: Span( + 30694..30696, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 30703..30706, + ), + }, + ), + span: Span( + 30706..30708, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 30663..30711, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 30713..30794, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 30716..30726, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 30727..30728, + ), + }, + Ident { + sym: "b", + span: Span( + 30730..30731, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 30756..30785, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 30756..30757, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 30760..30785, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 30760..30761, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 30765..30785, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 30764..30765, + ), + }, + ), + span: Span( + 30765..30767, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 30766..30767, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 30770..30771, + ), + }, + ), + span: Span( + 30771..30777, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 30772..30777, + ), + }, + ), + }, + ), + span: Span( + 30777..30779, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 30779..30785, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 30780..30785, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 30739..30792, + ), + ), + ], + span: Span( + 30733..30794, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 30796..31135, + ), + name: Ident { + sym: "uwu", + span: Span( + 30799..30802, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 30811..30820, + ), + name: Ident { + sym: "a", + span: Span( + 30815..30816, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 30819..30820, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 30826..30835, + ), + name: Ident { + sym: "b", + span: Span( + 30830..30831, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 30834..30835, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 30841..30850, + ), + name: Ident { + sym: "c", + span: Span( + 30845..30846, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 30849..30850, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 30856..30865, + ), + name: Ident { + sym: "d", + span: Span( + 30860..30861, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 30864..30865, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 30872..30897, + ), + name: Ident { + sym: "x", + span: Span( + 30876..30877, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 30880..30897, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 30880..30881, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 30884..30897, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 30884..30885, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 30888..30897, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 30888..30889, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 30892..30897, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 30892..30893, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 30896..30897, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 30909..30910, + ), + }, + ), + Span( + 30903..30911, + ), + ), + Declaration( + Declaration { + span: Span( + 30917..30927, + ), + name: Ident { + sym: "y", + span: Span( + 30921..30922, + ), + }, + init: Literal( + Object( + Span( + 30925..30927, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 30934..30941, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 30933..30934, + ), + }, + ), + span: Span( + 30934..30936, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 30935..30936, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 30939..30940, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 30947..30954, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 30946..30947, + ), + }, + ), + span: Span( + 30947..30949, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 30948..30949, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 30952..30953, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 30960..30967, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 30959..30960, + ), + }, + ), + span: Span( + 30960..30962, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 30961..30962, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 30965..30966, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 30973..31072, + ), + name: Ident { + sym: "to_string", + span: Span( + 30976..30985, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 30986..30987, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 30999..31013, + ), + name: Ident { + sym: "string", + span: Span( + 31003..31009, + ), + }, + init: Literal( + String( + "", + Span( + 31012..31013, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 31024..31047, + ), + name: Ident { + sym: "string", + span: Span( + 31028..31034, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 31037..31047, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 31037..31043, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 31046..31047, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 31064..31065, + ), + }, + ), + ), + Span( + 31057..31066, + ), + ), + ], + span: Span( + 30989..31072, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 31079..31102, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 31078..31079, + ), + }, + ), + span: Span( + 31079..31089, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 31080..31089, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 31092..31101, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 31108..31118, + ), + }, + ), + span: Span( + 31118..31120, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 31127..31130, + ), + }, + ), + span: Span( + 31130..31132, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 30805..31135, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 31137..31403, + ), + name: Ident { + sym: "owo", + span: Span( + 31140..31143, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 31152..31161, + ), + }, + ), + span: Span( + 31161..31163, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 31169..31179, + ), + }, + ), + span: Span( + 31179..31181, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 31187..31198, + ), + }, + ), + span: Span( + 31198..31200, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 31207..31226, + ), + name: Ident { + sym: "d", + span: Span( + 31211..31212, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 31215..31224, + ), + }, + ), + span: Span( + 31224..31226, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 31233..31351, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 31236..31241, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 31236..31237, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 31240..31241, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 31252..31262, + ), + }, + ), + span: Span( + 31262..31264, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 31242..31271, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 31277..31351, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 31280..31286, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 31280..31281, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 31285..31286, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 31297..31308, + ), + }, + ), + span: Span( + 31308..31310, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 31287..31317, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 31333..31342, + ), + }, + ), + span: Span( + 31342..31344, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 31323..31351, + ), + }, + Span( + 31318..31351, + ), + ), + ), + }, + Span( + 31272..31351, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 31357..31398, + ), + }, + ), + span: Span( + 31398..31400, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 31146..31403, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 31405..31681, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 31408..31449, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 31458..31482, + ), + name: Ident { + sym: "code", + span: Span( + 31462..31466, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 31469..31482, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 31489..31491, + ), + }, + ), + span: Span( + 31491..31497, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 31492..31497, + ), + }, + ), + }, + ), + span: Span( + 31497..31514, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 31498..31506, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 31509..31513, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 31520..31527, + ), + }, + ), + span: Span( + 31527..31533, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 31528..31533, + ), + }, + ), + }, + ), + span: Span( + 31533..31550, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 31534..31548, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 31556..31585, + ), + name: Ident { + sym: "program", + span: Span( + 31560..31567, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 31570..31572, + ), + }, + ), + span: Span( + 31572..31577, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 31573..31577, + ), + }, + ), + }, + ), + span: Span( + 31577..31585, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 31578..31583, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 31591..31624, + ), + name: Ident { + sym: "output", + span: Span( + 31595..31601, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 31604..31611, + ), + }, + ), + span: Span( + 31611..31616, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 31612..31616, + ), + }, + ), + }, + ), + span: Span( + 31616..31624, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 31617..31622, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 31631..31679, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 31634..31645, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 31634..31640, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 31644..31645, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 31663..31671, + ), + ), + ), + Span( + 31657..31673, + ), + ), + ], + span: Span( + 31647..31679, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 31452..31681, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 31722..31731, + ), + name: Ident { + sym: "x", + span: Span( + 31726..31727, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 31730..31731, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 31734..31742, + ), + }, + ), + span: Span( + 31742..31745, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 31743..31744, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 31748..31806, + ), + name: Ident { + sym: "main", + span: Span( + 31751..31755, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 31764..31774, + ), + }, + ), + span: Span( + 31774..31792, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 31775..31780, + ), + }, + ), + span: Span( + 31780..31782, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 31784..31789, + ), + }, + ), + span: Span( + 31789..31791, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 31798..31801, + ), + }, + ), + span: Span( + 31801..31803, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 31758..31806, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 31808..31889, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 31811..31821, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 31822..31823, + ), + }, + Ident { + sym: "b", + span: Span( + 31825..31826, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 31851..31880, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 31851..31852, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 31855..31880, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 31855..31856, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 31860..31880, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 31859..31860, + ), + }, + ), + span: Span( + 31860..31862, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 31861..31862, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 31865..31866, + ), + }, + ), + span: Span( + 31866..31872, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 31867..31872, + ), + }, + ), + }, + ), + span: Span( + 31872..31874, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 31874..31880, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 31875..31880, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 31834..31887, + ), + ), + ], + span: Span( + 31828..31889, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 31891..32230, + ), + name: Ident { + sym: "uwu", + span: Span( + 31894..31897, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 31906..31915, + ), + name: Ident { + sym: "a", + span: Span( + 31910..31911, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 31914..31915, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 31921..31930, + ), + name: Ident { + sym: "b", + span: Span( + 31925..31926, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 31929..31930, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 31936..31945, + ), + name: Ident { + sym: "c", + span: Span( + 31940..31941, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 31944..31945, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 31951..31960, + ), + name: Ident { + sym: "d", + span: Span( + 31955..31956, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 31959..31960, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 31967..31992, + ), + name: Ident { + sym: "x", + span: Span( + 31971..31972, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 31975..31992, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 31975..31976, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 31979..31992, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 31979..31980, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 31983..31992, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 31983..31984, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 31987..31992, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 31987..31988, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 31991..31992, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 32004..32005, + ), + }, + ), + Span( + 31998..32006, + ), + ), + Declaration( + Declaration { + span: Span( + 32012..32022, + ), + name: Ident { + sym: "y", + span: Span( + 32016..32017, + ), + }, + init: Literal( + Object( + Span( + 32020..32022, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 32029..32036, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 32028..32029, + ), + }, + ), + span: Span( + 32029..32031, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 32030..32031, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 32034..32035, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 32042..32049, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 32041..32042, + ), + }, + ), + span: Span( + 32042..32044, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 32043..32044, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 32047..32048, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 32055..32062, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 32054..32055, + ), + }, + ), + span: Span( + 32055..32057, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 32056..32057, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 32060..32061, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 32068..32167, + ), + name: Ident { + sym: "to_string", + span: Span( + 32071..32080, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 32081..32082, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 32094..32108, + ), + name: Ident { + sym: "string", + span: Span( + 32098..32104, + ), + }, + init: Literal( + String( + "", + Span( + 32107..32108, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 32119..32142, + ), + name: Ident { + sym: "string", + span: Span( + 32123..32129, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 32132..32142, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 32132..32138, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 32141..32142, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 32159..32160, + ), + }, + ), + ), + Span( + 32152..32161, + ), + ), + ], + span: Span( + 32084..32167, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 32174..32197, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 32173..32174, + ), + }, + ), + span: Span( + 32174..32184, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 32175..32184, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 32187..32196, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 32203..32213, + ), + }, + ), + span: Span( + 32213..32215, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 32222..32225, + ), + }, + ), + span: Span( + 32225..32227, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 31900..32230, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 32232..32498, + ), + name: Ident { + sym: "owo", + span: Span( + 32235..32238, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 32247..32256, + ), + }, + ), + span: Span( + 32256..32258, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 32264..32274, + ), + }, + ), + span: Span( + 32274..32276, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 32282..32293, + ), + }, + ), + span: Span( + 32293..32295, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 32302..32321, + ), + name: Ident { + sym: "d", + span: Span( + 32306..32307, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 32310..32319, + ), + }, + ), + span: Span( + 32319..32321, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 32328..32446, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 32331..32336, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 32331..32332, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 32335..32336, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 32347..32357, + ), + }, + ), + span: Span( + 32357..32359, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 32337..32366, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 32372..32446, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 32375..32381, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 32375..32376, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 32380..32381, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 32392..32403, + ), + }, + ), + span: Span( + 32403..32405, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 32382..32412, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 32428..32437, + ), + }, + ), + span: Span( + 32437..32439, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 32418..32446, + ), + }, + Span( + 32413..32446, + ), + ), + ), + }, + Span( + 32367..32446, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 32452..32493, + ), + }, + ), + span: Span( + 32493..32495, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 32241..32498, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 32500..32776, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 32503..32544, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 32553..32577, + ), + name: Ident { + sym: "code", + span: Span( + 32557..32561, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 32564..32577, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 32584..32586, + ), + }, + ), + span: Span( + 32586..32592, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 32587..32592, + ), + }, + ), + }, + ), + span: Span( + 32592..32609, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 32593..32601, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 32604..32608, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 32615..32622, + ), + }, + ), + span: Span( + 32622..32628, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 32623..32628, + ), + }, + ), + }, + ), + span: Span( + 32628..32645, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 32629..32643, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 32651..32680, + ), + name: Ident { + sym: "program", + span: Span( + 32655..32662, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 32665..32667, + ), + }, + ), + span: Span( + 32667..32672, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 32668..32672, + ), + }, + ), + }, + ), + span: Span( + 32672..32680, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 32673..32678, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 32686..32719, + ), + name: Ident { + sym: "output", + span: Span( + 32690..32696, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 32699..32706, + ), + }, + ), + span: Span( + 32706..32711, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 32707..32711, + ), + }, + ), + }, + ), + span: Span( + 32711..32719, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 32712..32717, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 32726..32774, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 32729..32740, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 32729..32735, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 32739..32740, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 32758..32766, + ), + ), + ), + Span( + 32752..32768, + ), + ), + ], + span: Span( + 32742..32774, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 32547..32776, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 32817..32826, + ), + name: Ident { + sym: "x", + span: Span( + 32821..32822, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 32825..32826, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 32829..32837, + ), + }, + ), + span: Span( + 32837..32840, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 32838..32839, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 32843..32901, + ), + name: Ident { + sym: "main", + span: Span( + 32846..32850, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 32859..32869, + ), + }, + ), + span: Span( + 32869..32887, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 32870..32875, + ), + }, + ), + span: Span( + 32875..32877, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 32879..32884, + ), + }, + ), + span: Span( + 32884..32886, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 32893..32896, + ), + }, + ), + span: Span( + 32896..32898, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 32853..32901, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 32903..32984, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 32906..32916, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 32917..32918, + ), + }, + Ident { + sym: "b", + span: Span( + 32920..32921, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 32946..32975, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 32946..32947, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 32950..32975, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 32950..32951, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 32955..32975, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 32954..32955, + ), + }, + ), + span: Span( + 32955..32957, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 32956..32957, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 32960..32961, + ), + }, + ), + span: Span( + 32961..32967, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 32962..32967, + ), + }, + ), + }, + ), + span: Span( + 32967..32969, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 32969..32975, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 32970..32975, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 32929..32982, + ), + ), + ], + span: Span( + 32923..32984, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 32986..33325, + ), + name: Ident { + sym: "uwu", + span: Span( + 32989..32992, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 33001..33010, + ), + name: Ident { + sym: "a", + span: Span( + 33005..33006, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 33009..33010, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 33016..33025, + ), + name: Ident { + sym: "b", + span: Span( + 33020..33021, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 33024..33025, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 33031..33040, + ), + name: Ident { + sym: "c", + span: Span( + 33035..33036, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 33039..33040, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 33046..33055, + ), + name: Ident { + sym: "d", + span: Span( + 33050..33051, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 33054..33055, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 33062..33087, + ), + name: Ident { + sym: "x", + span: Span( + 33066..33067, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 33070..33087, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 33070..33071, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 33074..33087, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 33074..33075, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 33078..33087, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 33078..33079, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 33082..33087, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 33082..33083, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 33086..33087, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 33099..33100, + ), + }, + ), + Span( + 33093..33101, + ), + ), + Declaration( + Declaration { + span: Span( + 33107..33117, + ), + name: Ident { + sym: "y", + span: Span( + 33111..33112, + ), + }, + init: Literal( + Object( + Span( + 33115..33117, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 33124..33131, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 33123..33124, + ), + }, + ), + span: Span( + 33124..33126, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 33125..33126, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 33129..33130, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 33137..33144, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 33136..33137, + ), + }, + ), + span: Span( + 33137..33139, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 33138..33139, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 33142..33143, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 33150..33157, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 33149..33150, + ), + }, + ), + span: Span( + 33150..33152, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 33151..33152, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 33155..33156, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 33163..33262, + ), + name: Ident { + sym: "to_string", + span: Span( + 33166..33175, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 33176..33177, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 33189..33203, + ), + name: Ident { + sym: "string", + span: Span( + 33193..33199, + ), + }, + init: Literal( + String( + "", + Span( + 33202..33203, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 33214..33237, + ), + name: Ident { + sym: "string", + span: Span( + 33218..33224, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 33227..33237, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 33227..33233, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 33236..33237, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 33254..33255, + ), + }, + ), + ), + Span( + 33247..33256, + ), + ), + ], + span: Span( + 33179..33262, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 33269..33292, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 33268..33269, + ), + }, + ), + span: Span( + 33269..33279, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 33270..33279, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 33282..33291, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 33298..33308, + ), + }, + ), + span: Span( + 33308..33310, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 33317..33320, + ), + }, + ), + span: Span( + 33320..33322, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 32995..33325, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 33327..33593, + ), + name: Ident { + sym: "owo", + span: Span( + 33330..33333, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 33342..33351, + ), + }, + ), + span: Span( + 33351..33353, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 33359..33369, + ), + }, + ), + span: Span( + 33369..33371, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 33377..33388, + ), + }, + ), + span: Span( + 33388..33390, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 33397..33416, + ), + name: Ident { + sym: "d", + span: Span( + 33401..33402, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 33405..33414, + ), + }, + ), + span: Span( + 33414..33416, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 33423..33541, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 33426..33431, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 33426..33427, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 33430..33431, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 33442..33452, + ), + }, + ), + span: Span( + 33452..33454, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 33432..33461, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 33467..33541, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 33470..33476, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 33470..33471, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 33475..33476, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 33487..33498, + ), + }, + ), + span: Span( + 33498..33500, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 33477..33507, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 33523..33532, + ), + }, + ), + span: Span( + 33532..33534, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 33513..33541, + ), + }, + Span( + 33508..33541, + ), + ), + ), + }, + Span( + 33462..33541, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 33547..33588, + ), + }, + ), + span: Span( + 33588..33590, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 33336..33593, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 33595..33871, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 33598..33639, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 33648..33672, + ), + name: Ident { + sym: "code", + span: Span( + 33652..33656, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 33659..33672, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 33679..33681, + ), + }, + ), + span: Span( + 33681..33687, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 33682..33687, + ), + }, + ), + }, + ), + span: Span( + 33687..33704, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 33688..33696, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 33699..33703, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 33710..33717, + ), + }, + ), + span: Span( + 33717..33723, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 33718..33723, + ), + }, + ), + }, + ), + span: Span( + 33723..33740, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 33724..33738, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 33746..33775, + ), + name: Ident { + sym: "program", + span: Span( + 33750..33757, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 33760..33762, + ), + }, + ), + span: Span( + 33762..33767, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 33763..33767, + ), + }, + ), + }, + ), + span: Span( + 33767..33775, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 33768..33773, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 33781..33814, + ), + name: Ident { + sym: "output", + span: Span( + 33785..33791, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 33794..33801, + ), + }, + ), + span: Span( + 33801..33806, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 33802..33806, + ), + }, + ), + }, + ), + span: Span( + 33806..33814, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 33807..33812, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 33821..33869, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 33824..33835, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 33824..33830, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 33834..33835, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 33853..33861, + ), + ), + ), + Span( + 33847..33863, + ), + ), + ], + span: Span( + 33837..33869, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 33642..33871, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 33912..33921, + ), + name: Ident { + sym: "x", + span: Span( + 33916..33917, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 33920..33921, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 33924..33932, + ), + }, + ), + span: Span( + 33932..33935, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 33933..33934, + ), + }, + ), + ], + ), + }, + ), + ), + FnDecl( + FnDecl { + span: Span( + 33938..33996, + ), + name: Ident { + sym: "main", + span: Span( + 33941..33945, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "cool_stuff", + span: Span( + 33954..33964, + ), + }, + ), + span: Span( + 33964..33982, + ), + kind: Fn( + [ + Call( + Call { + callee: Ident( + Ident { + sym: "get_a", + span: Span( + 33965..33970, + ), + }, + ), + span: Span( + 33970..33972, + ), + kind: Fn( + [], + ), + }, + ), + Call( + Call { + callee: Ident( + Ident { + sym: "get_b", + span: Span( + 33974..33979, + ), + }, + ), + span: Span( + 33979..33981, + ), + kind: Fn( + [], + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "uwu", + span: Span( + 33988..33991, + ), + }, + ), + span: Span( + 33991..33993, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 33948..33996, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 33998..34079, + ), + name: Ident { + sym: "cool_stuff", + span: Span( + 34001..34011, + ), + }, + params: [ + Ident { + sym: "a", + span: Span( + 34012..34013, + ), + }, + Ident { + sym: "b", + span: Span( + 34015..34016, + ), + }, + ], + body: Block { + stmts: [ + Return( + Some( + BinaryOp( + BinaryOp { + span: Span( + 34041..34070, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 34041..34042, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 34045..34070, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 34045..34046, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 34050..34070, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "a", + span: Span( + 34049..34050, + ), + }, + ), + span: Span( + 34050..34052, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 34051..34052, + ), + }, + ), + }, + ), + rhs: Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "b", + span: Span( + 34055..34056, + ), + }, + ), + span: Span( + 34056..34062, + ), + kind: Field( + Ident { + sym: "hello", + span: Span( + 34057..34062, + ), + }, + ), + }, + ), + span: Span( + 34062..34064, + ), + kind: Fn( + [], + ), + }, + ), + span: Span( + 34064..34070, + ), + kind: Field( + Ident { + sym: "world", + span: Span( + 34065..34070, + ), + }, + ), + }, + ), + kind: Mul, + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + ), + Span( + 34024..34077, + ), + ), + ], + span: Span( + 34018..34079, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 34081..34420, + ), + name: Ident { + sym: "uwu", + span: Span( + 34084..34087, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 34096..34105, + ), + name: Ident { + sym: "a", + span: Span( + 34100..34101, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 34104..34105, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 34111..34120, + ), + name: Ident { + sym: "b", + span: Span( + 34115..34116, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 34119..34120, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 34126..34135, + ), + name: Ident { + sym: "c", + span: Span( + 34130..34131, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 34134..34135, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 34141..34150, + ), + name: Ident { + sym: "d", + span: Span( + 34145..34146, + ), + }, + init: Literal( + Number( + 6.0, + Span( + 34149..34150, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 34157..34182, + ), + name: Ident { + sym: "x", + span: Span( + 34161..34162, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 34165..34182, + ), + lhs: Ident( + Ident { + sym: "a", + span: Span( + 34165..34166, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 34169..34182, + ), + lhs: Ident( + Ident { + sym: "c", + span: Span( + 34169..34170, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 34173..34182, + ), + lhs: Ident( + Ident { + sym: "b", + span: Span( + 34173..34174, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span( + 34177..34182, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 34177..34178, + ), + }, + ), + rhs: Ident( + Ident { + sym: "d", + span: Span( + 34181..34182, + ), + }, + ), + kind: Div, + }, + ), + kind: Add, + }, + ), + kind: Sub, + }, + ), + kind: Add, + }, + ), + }, + ), + Print( + Ident( + Ident { + sym: "x", + span: Span( + 34194..34195, + ), + }, + ), + Span( + 34188..34196, + ), + ), + Declaration( + Declaration { + span: Span( + 34202..34212, + ), + name: Ident { + sym: "y", + span: Span( + 34206..34207, + ), + }, + init: Literal( + Object( + Span( + 34210..34212, + ), + ), + ), + }, + ), + Assignment( + Assignment { + span: Span( + 34219..34226, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 34218..34219, + ), + }, + ), + span: Span( + 34219..34221, + ), + kind: Field( + Ident { + sym: "a", + span: Span( + 34220..34221, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "a", + span: Span( + 34224..34225, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 34232..34239, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 34231..34232, + ), + }, + ), + span: Span( + 34232..34234, + ), + kind: Field( + Ident { + sym: "b", + span: Span( + 34233..34234, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "b", + span: Span( + 34237..34238, + ), + }, + ), + }, + ), + Assignment( + Assignment { + span: Span( + 34245..34252, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 34244..34245, + ), + }, + ), + span: Span( + 34245..34247, + ), + kind: Field( + Ident { + sym: "c", + span: Span( + 34246..34247, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "c", + span: Span( + 34250..34251, + ), + }, + ), + }, + ), + FnDecl( + FnDecl { + span: Span( + 34258..34357, + ), + name: Ident { + sym: "to_string", + span: Span( + 34261..34270, + ), + }, + params: [ + Ident { + sym: "y", + span: Span( + 34271..34272, + ), + }, + ], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 34284..34298, + ), + name: Ident { + sym: "string", + span: Span( + 34288..34294, + ), + }, + init: Literal( + String( + "", + Span( + 34297..34298, + ), + ), + ), + }, + ), + Declaration( + Declaration { + span: Span( + 34309..34332, + ), + name: Ident { + sym: "string", + span: Span( + 34313..34319, + ), + }, + init: BinaryOp( + BinaryOp { + span: Span( + 34322..34332, + ), + lhs: Ident( + Ident { + sym: "string", + span: Span( + 34322..34328, + ), + }, + ), + rhs: Ident( + Ident { + sym: "y", + span: Span( + 34331..34332, + ), + }, + ), + kind: Add, + }, + ), + }, + ), + Return( + Some( + Ident( + Ident { + sym: "y", + span: Span( + 34349..34350, + ), + }, + ), + ), + Span( + 34342..34351, + ), + ), + ], + span: Span( + 34274..34357, + ), + }, + }, + ), + Assignment( + Assignment { + span: Span( + 34364..34387, + ), + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "y", + span: Span( + 34363..34364, + ), + }, + ), + span: Span( + 34364..34374, + ), + kind: Field( + Ident { + sym: "to_string", + span: Span( + 34365..34374, + ), + }, + ), + }, + ), + rhs: Ident( + Ident { + sym: "to_string", + span: Span( + 34377..34386, + ), + }, + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "more_magic", + span: Span( + 34393..34403, + ), + }, + ), + span: Span( + 34403..34405, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "owo", + span: Span( + 34412..34415, + ), + }, + ), + span: Span( + 34415..34417, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 34090..34420, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 34422..34688, + ), + name: Ident { + sym: "owo", + span: Span( + 34425..34428, + ), + }, + params: [], + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 34437..34446, + ), + }, + ), + span: Span( + 34446..34448, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 34454..34464, + ), + }, + ), + span: Span( + 34464..34466, + ), + kind: Fn( + [], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 34472..34483, + ), + }, + ), + span: Span( + 34483..34485, + ), + kind: Fn( + [], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 34492..34511, + ), + name: Ident { + sym: "d", + span: Span( + 34496..34497, + ), + }, + init: Call( + Call { + callee: Ident( + Ident { + sym: "direction", + span: Span( + 34500..34509, + ), + }, + ), + span: Span( + 34509..34511, + ), + kind: Fn( + [], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 34518..34636, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 34521..34526, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 34521..34522, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 34525..34526, + ), + ), + ), + kind: Less, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_right", + span: Span( + 34537..34547, + ), + }, + ), + span: Span( + 34547..34549, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 34527..34556, + ), + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span( + 34562..34636, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 34565..34571, + ), + lhs: Ident( + Ident { + sym: "d", + span: Span( + 34565..34566, + ), + }, + ), + rhs: Literal( + Number( + 0.0, + Span( + 34570..34571, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_center", + span: Span( + 34582..34593, + ), + }, + ), + span: Span( + 34593..34595, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 34572..34602, + ), + }, + else_part: Some( + Else( + Block { + stmts: [ + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "turn_left", + span: Span( + 34618..34627, + ), + }, + ), + span: Span( + 34627..34629, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 34608..34636, + ), + }, + Span( + 34603..34636, + ), + ), + ), + }, + Span( + 34557..34636, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 34642..34683, + ), + }, + ), + span: Span( + 34683..34685, + ), + kind: Fn( + [], + ), + }, + ), + ), + ], + span: Span( + 34431..34688, + ), + }, + }, + ), + FnDecl( + FnDecl { + span: Span( + 34690..34966, + ), + name: Ident { + sym: "really_long_function_name_wow_its_so_long", + span: Span( + 34693..34734, + ), + }, + params: [], + body: Block { + stmts: [ + Declaration( + Declaration { + span: Span( + 34743..34767, + ), + name: Ident { + sym: "code", + span: Span( + 34747..34751, + ), + }, + init: Literal( + String( + "fn main() {}", + Span( + 34754..34767, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 34774..34776, + ), + }, + ), + span: Span( + 34776..34782, + ), + kind: Field( + Ident { + sym: "write", + span: Span( + 34777..34782, + ), + }, + ), + }, + ), + span: Span( + 34782..34799, + ), + kind: Fn( + [ + Literal( + String( + "main.rs", + Span( + 34783..34791, + ), + ), + ), + Ident( + Ident { + sym: "code", + span: Span( + 34794..34798, + ), + }, + ), + ], + ), + }, + ), + ), + Expr( + Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 34805..34812, + ), + }, + ), + span: Span( + 34812..34818, + ), + kind: Field( + Ident { + sym: "spawn", + span: Span( + 34813..34818, + ), + }, + ), + }, + ), + span: Span( + 34818..34835, + ), + kind: Fn( + [ + Literal( + String( + "rustc main.rs", + Span( + 34819..34833, + ), + ), + ), + ], + ), + }, + ), + ), + Declaration( + Declaration { + span: Span( + 34841..34870, + ), + name: Ident { + sym: "program", + span: Span( + 34845..34852, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "fs", + span: Span( + 34855..34857, + ), + }, + ), + span: Span( + 34857..34862, + ), + kind: Field( + Ident { + sym: "read", + span: Span( + 34858..34862, + ), + }, + ), + }, + ), + span: Span( + 34862..34870, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 34863..34868, + ), + ), + ), + ], + ), + }, + ), + }, + ), + Declaration( + Declaration { + span: Span( + 34876..34909, + ), + name: Ident { + sym: "output", + span: Span( + 34880..34886, + ), + }, + init: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "command", + span: Span( + 34889..34896, + ), + }, + ), + span: Span( + 34896..34901, + ), + kind: Field( + Ident { + sym: "exec", + span: Span( + 34897..34901, + ), + }, + ), + }, + ), + span: Span( + 34901..34909, + ), + kind: Fn( + [ + Literal( + String( + "main", + Span( + 34902..34907, + ), + ), + ), + ], + ), + }, + ), + }, + ), + If( + IfStmt { + span: Span( + 34916..34964, + ), + cond: BinaryOp( + BinaryOp { + span: Span( + 34919..34930, + ), + lhs: Ident( + Ident { + sym: "output", + span: Span( + 34919..34925, + ), + }, + ), + rhs: Literal( + String( + "", + Span( + 34929..34930, + ), + ), + ), + kind: Equal, + }, + ), + body: Block { + stmts: [ + Print( + Literal( + String( + "correct", + Span( + 34948..34956, + ), + ), + ), + Span( + 34942..34958, + ), + ), + ], + span: Span( + 34932..34964, + ), + }, + else_part: None, + }, + ), + ], + span: Span( + 34737..34966, + ), + }, + }, + ), + Declaration( + Declaration { + span: Span( + 35007..35016, + ), + name: Ident { + sym: "x", + span: Span( + 35011..35012, + ), + }, + init: Literal( + Number( + 5.0, + Span( + 35015..35016, + ), + ), + ), + }, + ), + Expr( + Call( + Call { + callee: Ident( + Ident { + sym: "frobnify", + span: Span( + 35019..35027, + ), + }, + ), + span: Span( + 35027..35030, + ), + kind: Fn( + [ + Ident( + Ident { + sym: "x", + span: Span( + 35028..35029, + ), + }, + ), + ], + ), + }, + ), + ), + ], + span: Span( + 0..0, + ), + }, +) diff --git a/src/syntax/parse/test.rs b/src/syntax/parse/test.rs index 4faaeb1..7e936c7 100644 --- a/src/syntax/parse/test.rs +++ b/src/syntax/parse/test.rs @@ -6,7 +6,7 @@ use bumpalo::Bump; use prelude::*; -use crate::{errors::Span, parse::Parser, RtAlloc}; +use crate::{errors::Span, parse::Parser, Lexer, RtAlloc}; mod prelude { pub(super) use super::{parser, rt, test_literal_bin_op, test_number_literal, token}; @@ -31,7 +31,7 @@ fn rt() -> RtAlloc { unsafe { RtAlloc::new() } } -fn parser(tokens: std::vec::Vec, alloc: &Bump) -> Parser> +fn parser(tokens: Vec, alloc: &Bump) -> Parser> where { Parser { tokens: tokens.into_iter().peekable(), @@ -799,3 +799,13 @@ mod primary { assert!(expr.is_err()); } } + +#[test] +fn benchfile_parses() { + let code = include_str!("../../../benches/benchfile.dil"); + let mut rt_alloc = unsafe { RtAlloc::new() }; + let alloc = Bump::new(); + let lexer = Lexer::new(code, &mut rt_alloc); + let program = super::parse(lexer, &alloc); + insta::assert_debug_snapshot!(program); +}