diff --git a/.circleci/config.yml b/.circleci/config.yml index 9be4d7199a..2dcc4f14ca 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -46,7 +46,7 @@ commands: jobs: check-style: docker: - - image: cimg/rust:1.56.1 + - image: cimg/rust:1.59.0 resource_class: xlarge steps: - checkout @@ -61,7 +61,7 @@ jobs: clippy: docker: - - image: cimg/rust:1.56.1 + - image: cimg/rust:1.59.0 resource_class: xlarge steps: - checkout @@ -76,7 +76,7 @@ jobs: # code-cov: # docker: - # - image: cimg/rust:1.56.1 + # - image: cimg/rust:1.59.0 # resource_class: xlarge # environment: # RUSTC_BOOTSTRAP: 1 @@ -118,7 +118,7 @@ jobs: leo-executable: docker: - - image: cimg/rust:1.56.1 + - image: cimg/rust:1.59.0 resource_class: xlarge steps: - checkout @@ -136,7 +136,7 @@ jobs: # # leo-new: # docker: -# - image: cimg/rust:1.56.1 +# - image: cimg/rust:1.59.0 # resource_class: xlarge # steps: # - attach_workspace: @@ -149,7 +149,7 @@ jobs: # # leo-init: # docker: -# - image: cimg/rust:1.56.1 +# - image: cimg/rust:1.59.0 # resource_class: xlarge # steps: # - attach_workspace: @@ -162,7 +162,7 @@ jobs: # # leo-clean: # docker: -# - image: cimg/rust:1.56.1 +# - image: cimg/rust:1.59.0 # resource_class: xlarge # steps: # - attach_workspace: @@ -175,7 +175,7 @@ jobs: # # leo-setup: # docker: -# - image: cimg/rust:1.56.1 +# - image: cimg/rust:1.59.0 # resource_class: xlarge # steps: # - attach_workspace: @@ -188,7 +188,7 @@ jobs: # leo-add-remove: # docker: - # - image: cimg/rust:1.56.1 + # - image: cimg/rust:1.59.0 # resource_class: xlarge # steps: # - attach_workspace: @@ -202,7 +202,7 @@ jobs: # todo (collin): uncomment after compiler refactor # leo-check-constraints: # docker: -# - image: cimg/rust:1.56.1 +# - image: cimg/rust:1.59.0 # resource_class: xlarge # steps: # - attach_workspace: @@ -215,7 +215,7 @@ jobs: # # leo-login-logout: # docker: -# - image: cimg/rust:1.56.1 +# - image: cimg/rust:1.59.0 # resource_class: xlarge # steps: # - attach_workspace: @@ -228,7 +228,7 @@ jobs: # # leo-clone: # docker: -# - image: cimg/rust:1.56.1 +# - image: cimg/rust:1.59.0 # resource_class: xlarge # steps: # - attach_workspace: @@ -241,7 +241,7 @@ jobs: # # leo-publish: # docker: -# - image: cimg/rust:1.56.1 +# - image: cimg/rust:1.59.0 # resource_class: xlarge # steps: # - attach_workspace: diff --git a/.gitignore b/.gitignore index d01b74f25d..0a00a31434 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ /tmp/ **.idea/ *.DS_Store +.vscode **/process.yml diff --git a/Cargo.lock b/Cargo.lock index a27e21af4e..6229e1be32 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1801,9 +1801,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.9" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f242f1488a539a79bac6dbe7c8609ae43b7914b7736210f239a37cccb32525" +checksum = "46a1f7aa4f35e5e8b4160449f51afc758f0ce6454315a9fa7d0d113e958c41eb" dependencies = [ "base64", "bytes", @@ -2665,9 +2665,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winreg" -version = "0.7.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" dependencies = [ "winapi 0.3.9", ] diff --git a/Cargo.toml b/Cargo.toml index d660bbb009..9eee984c34 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -82,7 +82,7 @@ version = "0.8" version = "0.6.3" [dependencies.reqwest] -version = "0.11.9" +version = "0.11.10" features = [ "blocking", "json", "multipart" ] [dependencies.self_update] diff --git a/compiler/ast-passes/src/canonicalization/canonicalizer.rs b/compiler/ast-passes/src/canonicalization/canonicalizer.rs index 58260fbb95..87d2efde05 100644 --- a/compiler/ast-passes/src/canonicalization/canonicalizer.rs +++ b/compiler/ast-passes/src/canonicalization/canonicalizer.rs @@ -442,7 +442,7 @@ impl Canonicalizer { match &console_function_call.function { ConsoleFunction::Error(_) => ConsoleFunction::Error(console_args), ConsoleFunction::Log(_) => ConsoleFunction::Log(console_args), - _ => unimplemented!(), // impossible + _ => unimplemented!(), } } }; diff --git a/compiler/parser/examples/input_parser.rs b/compiler/parser/examples/input_parser.rs index 6cc6661bcd..23da6f59e6 100644 --- a/compiler/parser/examples/input_parser.rs +++ b/compiler/parser/examples/input_parser.rs @@ -48,8 +48,8 @@ fn main() -> Result<(), String> { let input_tree = create_session_if_not_set_then(|_| { Handler::with(|handler| { let input = - leo_parser::parse_program_inputs(&handler, input_string.clone(), opt.input_path.to_str().unwrap())?; - Ok(input.to_json_string()?) + leo_parser::parse_program_inputs(handler, input_string.clone(), opt.input_path.to_str().unwrap())?; + input.to_json_string() }) .map_err(|e| e.to_string()) })?; diff --git a/compiler/parser/examples/parser.rs b/compiler/parser/examples/parser.rs index 3f040aba69..d9757a04f9 100644 --- a/compiler/parser/examples/parser.rs +++ b/compiler/parser/examples/parser.rs @@ -47,7 +47,7 @@ fn main() -> Result<(), String> { // Parses the Leo file constructing an ast which is then serialized. let serialized_leo_tree = create_session_if_not_set_then(|_| { Handler::with(|h| { - let ast = leo_parser::parse_ast(&h, opt.input_path.to_str().unwrap(), &code)?; + let ast = leo_parser::parse_ast(h, opt.input_path.to_str().unwrap(), &code)?; let json = Ast::to_json_string(&ast)?; println!("{}", json); Ok(json) diff --git a/compiler/parser/src/parser/context.rs b/compiler/parser/src/parser/context.rs index 44431a8d0a..55abbf3ba0 100644 --- a/compiler/parser/src/parser/context.rs +++ b/compiler/parser/src/parser/context.rs @@ -165,21 +165,15 @@ impl<'a> ParserContext<'a> { /// the next token is not a [`GroupCoordinate`]. /// fn peek_group_coordinate(&self, i: &mut usize) -> Option { - if *i < 1 { - return None; - } - let token = self.tokens.get(*i - 1)?; - *i -= 1; + *i = i.checked_sub(1)?; + let token = self.tokens.get(*i)?; Some(match &token.token { Token::Add => GroupCoordinate::SignHigh, - Token::Minus if *i > 0 => match self.tokens.get(*i - 1) { + Token::Minus => match self.tokens.get(i.checked_sub(1)?) { Some(SpannedToken { token: Token::Int(value), span, }) => { - if *i < 1 { - return None; - } *i -= 1; GroupCoordinate::Number(format!("-{}", value), span.clone()) } @@ -212,57 +206,41 @@ impl<'a> ParserContext<'a> { /// pub fn eat_group_partial(&mut self) -> Option> { let mut i = self.tokens.len(); - if i < 1 { - return None; - } - let start_span = self.tokens.get(i - 1)?.span.clone(); + let start_span = self.tokens.get(i.checked_sub(1)?)?.span.clone(); let first = self.peek_group_coordinate(&mut i)?; - if i < 1 { + i = i.checked_sub(1)?; + if !matches!( + self.tokens.get(i), + Some(SpannedToken { + token: Token::Comma, + .. + }) + ) { return None; } - match self.tokens.get(i - 1) { - Some(SpannedToken { - token: Token::Comma, .. - }) => { - i -= 1; - } - _ => { - return None; - } - } + let second = self.peek_group_coordinate(&mut i)?; - if i < 1 { + i = i.checked_sub(1)?; + let right_paren_span = if let Some(SpannedToken { + token: Token::RightParen, + span, + }) = self.tokens.get(i) + { + span.clone() + } else { return None; - } - let right_paren_span; - match self.tokens.get(i - 1) { - Some(SpannedToken { - token: Token::RightParen, - span, - }) => { - right_paren_span = span.clone(); - i -= 1; - } - _ => { - return None; - } - } - if i < 1 { + }; + + i = i.checked_sub(1)?; + let end_span = if let Some(SpannedToken { + token: Token::Group, + span, + }) = self.tokens.get(i) + { + span.clone() + } else { return None; - } - let end_span; - match self.tokens.get(i - 1) { - Some(SpannedToken { - token: Token::Group, - span, - }) => { - end_span = span.clone(); - i -= 1; - } - _ => { - return None; - } - } + }; self.tokens.drain(i..); if let Err(e) = assert_no_whitespace( diff --git a/docs/grammar/README.md b/docs/grammar/README.md index 1cf8c4e392..b9934a9b39 100644 --- a/docs/grammar/README.md +++ b/docs/grammar/README.md @@ -63,7 +63,7 @@ e.g. ``, usable as last resort in the definiens of a nonterminal. While BNF allows arbitrary terminals, -ABNF uses only natural numbers as terminals, +ABNF uses only natural numbers (i.e. non-negative integers) as terminals, and denotes them via: (i) binary, decimal, or hexadecimal sequences, e.g. `%b1.11.1010`, `%d1.3.10`, and `%x.1.3.A` @@ -888,11 +888,12 @@ is a token, as defined by the following rule. token = keyword / identifier / atomic-literal + / numeral / annotation-name / symbol ``` -Go to: _[annotation-name](#user-content-annotation-name), [atomic-literal](#user-content-atomic-literal), [identifier](#user-content-identifier), [keyword](#user-content-keyword), [symbol](#user-content-symbol)_; +Go to: _[annotation-name](#user-content-annotation-name), [atomic-literal](#user-content-atomic-literal), [identifier](#user-content-identifier), [keyword](#user-content-keyword), [numeral](#user-content-numeral), [symbol](#user-content-symbol)_; Tokens, comments, and whitespace are lexemes, i.e. lexical units. diff --git a/docs/grammar/abnf-grammar.txt b/docs/grammar/abnf-grammar.txt index 67e9512fa9..a9090600bb 100644 --- a/docs/grammar/abnf-grammar.txt +++ b/docs/grammar/abnf-grammar.txt @@ -588,6 +588,7 @@ symbol = "!" / "&" / "&&" / "||" token = keyword / identifier / atomic-literal + / numeral / annotation-name / symbol diff --git a/leo/package/src/root/manifest.rs b/leo/package/src/root/manifest.rs index c72624bc96..b58e5fceec 100644 --- a/leo/package/src/root/manifest.rs +++ b/leo/package/src/root/manifest.rs @@ -195,7 +195,7 @@ impl TryFrom<&Path> for Manifest { if line.starts_with("remote") { let remote = line .split('=') // Split the line as 'remote' = '"{author}/{package_name}"' - .collect::>()[1]; // Fetch just '"{author}/{package_name}"' + .nth(1).unwrap(); // Fetch just '"{author}/{package_name}"' old_remote_format = Some(remote); // Retain the old remote format if the `manifest_refactor_remote` is not enabled @@ -238,8 +238,8 @@ impl TryFrom<&Path> for Manifest { // Fetch the author from the old remote. let remote_author = old_remote .split('/') // Split the old remote as '"{author}' and '{package_name}"' - .collect::>()[0] // Fetch just the '"{author}' - .replace(&['\"', ' '][..], ""); // Remove the quotes from the author string + .next().unwrap() // Fetch just the '"{author}' + .replace(&['\"', ' '], ""); // Remove the quotes from the author string // Construct the new remote section. let new_remote = format!( diff --git a/leo/span/src/span.rs b/leo/span/src/span.rs index 912d2203e9..b5754b013d 100644 --- a/leo/span/src/span.rs +++ b/leo/span/src/span.rs @@ -88,7 +88,7 @@ impl Serialize for Span { } else { state.serialize_field("path", "")?; } - state.serialize_field("content", &self.content[..])?; + state.serialize_field("content", &self.content)?; state.end() } } diff --git a/leo/span/src/tendril_json.rs b/leo/span/src/tendril_json.rs index d9a7290f0a..5f2194ab4c 100644 --- a/leo/span/src/tendril_json.rs +++ b/leo/span/src/tendril_json.rs @@ -21,7 +21,7 @@ use tendril::StrTendril; /// Serialization for the StrTendril type. pub fn serialize(tendril: &StrTendril, serializer: S) -> Result { - serializer.serialize_str(&tendril[..]) + serializer.serialize_str(tendril) } /// Deserialization for the StrTendril type. diff --git a/tests/expectations/parser/parser/expression/literal/char.leo.out b/tests/expectations/parser/parser/expression/literal/char.leo.out index 3d84a2cece..1555a1e74d 100644 --- a/tests/expectations/parser/parser/expression/literal/char.leo.out +++ b/tests/expectations/parser/parser/expression/literal/char.leo.out @@ -5,6 +5,7 @@ outputs: - "''a'' @ 1:1-4" - "''Z'' @ 1:1-4" - "''\"'' @ 1:1-5" + - "''''' @ 1:1-5" - "''\t'' @ 1:1-5" - "''\r'' @ 1:1-5" - "''\u0000'' @ 1:1-5" @@ -14,6 +15,7 @@ outputs: - "''å'' @ 1:1-5" - "''Ӡ'' @ 1:1-10" - "''Ӡ'' @ 1:1-5" + - "''D800'' @ 1:1-11" - "''❤'' @ 1:1-11" - "''❤'' @ 1:1-6" - "''😢'' @ 1:1-12" diff --git a/tests/expectations/parser/parser/expression/literal/char_fail.leo.out b/tests/expectations/parser/parser/expression/literal/char_fail.leo.out index 61b1087364..8178de8dd1 100644 --- a/tests/expectations/parser/parser/expression/literal/char_fail.leo.out +++ b/tests/expectations/parser/parser/expression/literal/char_fail.leo.out @@ -3,12 +3,15 @@ namespace: Token expectation: Fail outputs: - "Error [EPAR0370024]: Expected more characters to lex but found none." + - "Error [EPAR0370032]: Could not lex the following content: `\\`." + - "Error [EPAR0370024]: Expected more characters to lex but found none." + - "Error [EPAR0370032]: Could not lex the following content: `\\n`." - "Error [EPAR0370024]: Expected more characters to lex but found none." - "Error [EPAR0370024]: Expected more characters to lex but found none." + - "Error [EPAR0370036]: Expected a valid hex character but found `'`." + - "Error [EPAR0370036]: Expected a valid hex character but found `'`." - "Error [EPAR0370036]: Expected a valid hex character but found `9A`." - - "Error [EPAR0370036]: Expected a valid hex character but found `'`." - "Error [EPAR0370036]: Expected a valid hex character but found `7g`." - - "Error [EPAR0370036]: Expected a valid hex character but found `'`." - "Error [EPAR0370036]: Expected a valid hex character but found `80`." - "Error [EPAR0370036]: Expected a valid hex character but found `c1`." - "Error [EPAR0370036]: Expected a valid hex character but found `c2`." @@ -17,7 +20,6 @@ outputs: - "Error [EPAR0370036]: Expected a valid hex character but found `e0`." - "Error [EPAR0370036]: Expected a valid hex character but found `9f`." - "Error [EPAR0370027]: Expected a closed string but found `'b'`." - - "Error [EPAR0370027]: Expected a closed string but found `'\\\\'`." - "Error [EPAR0370026]: Expected a valid escape character but found `a`." - "Error [EPAR0370026]: Expected a valid escape character but found `z`." - "Error [EPAR0370026]: Expected a valid escape character but found `A`." @@ -30,15 +32,17 @@ outputs: - "Error [EPAR0370027]: Expected a closed string but found `'\\\\'`." - "Error [EPAR0370042]: There was no opening `{` after starting an escaped unicode `z`." - "Error [EPAR0370042]: There was no opening `{` after starting an escaped unicode `1`." + - "Error [EPAR0370042]: There was no opening `{` after starting an escaped unicode `}`." + - "Error [EPAR0370027]: Expected a closed string but found `'\\\\'`." - "Error [EPAR0370042]: There was no opening `{` after starting an escaped unicode `1`." + - "Error [EPAR0370027]: Expected a closed string but found `'1'`." + - "Error [EPAR0370042]: There was no opening `{` after starting an escaped unicode `6`." + - "Error [EPAR0370037]: There was no closing `}` after a escaped unicode `af🦀'`." - "Error [EPAR0370037]: There was no closing `}` after a escaped unicode `2764z'`." - "Error [EPAR0370036]: Expected a valid hex character but found `276g`." - - "Error [EPAR0370042]: There was no opening `{` after starting an escaped unicode `0`." - - "Error [EPAR0370042]: There was no opening `{` after starting an escaped unicode `0`." - "Error [EPAR0370042]: There was no opening `{` after starting an escaped unicode `9`." + - "Error [EPAR0370042]: There was no opening `{` after starting an escaped unicode `0`." + - "Error [EPAR0370042]: There was no opening `{` after starting an escaped unicode `0`." - "Error [EPAR0370039]: The escaped unicode char `110000` is greater than 0x10FFFF." - - "Error [EPAR0370042]: There was no opening `{` after starting an escaped unicode `}`." - - "Error [EPAR0370037]: There was no closing `}` after a escaped unicode `af🦀'`." - "Error [EPAR0370027]: Expected a closed string but found `'\\\\'`." - - "Error [EPAR0370027]: Expected a closed string but found `'1'`." - "Error [EPAR0370027]: Expected a closed string but found `'😂'`." diff --git a/tests/expectations/parser/parser/expression/literal/comment_fail.leo.out b/tests/expectations/parser/parser/expression/literal/comment_fail.leo.out new file mode 100644 index 0000000000..3f0e478d83 --- /dev/null +++ b/tests/expectations/parser/parser/expression/literal/comment_fail.leo.out @@ -0,0 +1,15 @@ +--- +namespace: ParseExpression +expectation: Fail +outputs: + - "Error [EPAR0370030]: Empty block comment." + - "Error [EPAR0370031]: Block comment does not close with content: `/* test`." + - "Error [EPAR0370009]: unexpected string: expected 'expression', got '/'\n --> test:1:1\n |\n 1 | / /\n | ^" + - "Error [EPAR0370031]: Block comment does not close with content: `/*/`." + - "Error [EPAR0370009]: unexpected string: expected 'expression', got '*'\n --> test:1:1\n |\n 1 | */\n | ^" + - "Error [EPAR0370032]: Could not lex the following content: `🦀**/`." + - "Error [EPAR0370032]: Could not lex the following content: `🦀*/`." + - "Error [EPAR0370031]: Block comment does not close with content: `/*🦀/`." + - "Error [EPAR0370031]: Block comment does not close with content: `/**🦀`." + - "Error [EPAR0370031]: Block comment does not close with content: `/*🦀`." + - "Error [EPAR0370031]: Block comment does not close with content: `/*/*`." diff --git a/tests/expectations/parser/parser/expression/literal/group.leo.out b/tests/expectations/parser/parser/expression/literal/group.leo.out index 0fc89b3546..2e274402e0 100644 --- a/tests/expectations/parser/parser/expression/literal/group.leo.out +++ b/tests/expectations/parser/parser/expression/literal/group.leo.out @@ -680,3 +680,35 @@ outputs: col_stop: 16 path: "" content: "(123, 456)group" + - Value: + Group: + Single: + - "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 7 + path: "" + content: 1group + - Unary: + inner: + Value: + Group: + Single: + - "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 2 + col_stop: 8 + path: "" + content: "-1group" + op: Negate + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 8 + path: "" + content: "-1group" diff --git a/tests/expectations/parser/parser/expression/literal/group_fail.leo.out b/tests/expectations/parser/parser/expression/literal/group_fail.leo.out index e9076add85..4114e3fa46 100644 --- a/tests/expectations/parser/parser/expression/literal/group_fail.leo.out +++ b/tests/expectations/parser/parser/expression/literal/group_fail.leo.out @@ -10,3 +10,7 @@ outputs: - "did not consume all input: 'group' @ 1:6-11\n" - "did not consume all input: 'group' @ 1:12-17\n" - "did not consume all input: 'group' @ 1:15-20\n" + - "Error [EPAR0370004]: Unexpected white space between terms (123,456) and group\n --> test:1:10\n |\n 1 | (123, 456) group\n | ^" + - "did not consume all input: 'group' @ 1:8-13\n" + - "did not consume all input: 'group' @ 1:16-21\n" + - "did not consume all input: 'bool' @ 1:11-15\n" diff --git a/tests/expectations/parser/parser/expression/literal/int_fail.leo.out b/tests/expectations/parser/parser/expression/literal/int_fail.leo.out new file mode 100644 index 0000000000..3f1a3281cd --- /dev/null +++ b/tests/expectations/parser/parser/expression/literal/int_fail.leo.out @@ -0,0 +1,7 @@ +--- +namespace: Token +expectation: Fail +outputs: + - "Error [EPAR0370040]: A hex number `0x..` was provided but hex is not allowed." + - "Error [EPAR0370040]: A hex number `0x..` was provided but hex is not allowed." + - "Error [EPAR0370040]: A hex number `0x..` was provided but hex is not allowed." diff --git a/tests/expectations/parser/parser/expression/literal/int_parse/field.leo.out b/tests/expectations/parser/parser/expression/literal/int_parse/field.leo.out index cb5554a989..7009ee5072 100644 --- a/tests/expectations/parser/parser/expression/literal/int_parse/field.leo.out +++ b/tests/expectations/parser/parser/expression/literal/int_parse/field.leo.out @@ -32,6 +32,16 @@ outputs: col_stop: 9 path: "" content: 456field + - Value: + Implicit: + - "" + - span: + line_start: 0 + line_stop: 0 + col_start: 0 + col_stop: 0 + path: "" + content: "" - Value: Field: - "87377802873778028737780287377802873778028737780287377802873778028737780287377802" diff --git a/tests/expectations/parser/parser/expression/literal/int_parse/u16.leo.out b/tests/expectations/parser/parser/expression/literal/int_parse/u16.leo.out index ac3fd8bffa..e579dc6a2a 100644 --- a/tests/expectations/parser/parser/expression/literal/int_parse/u16.leo.out +++ b/tests/expectations/parser/parser/expression/literal/int_parse/u16.leo.out @@ -4,15 +4,15 @@ expectation: Pass outputs: - Value: Integer: - - U8 + - U16 - "123" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 6 + col_stop: 7 path: "" - content: 123u8 + content: 123u16 - Value: Implicit: - "123" @@ -25,1134 +25,1134 @@ outputs: content: "123" - Value: Integer: - - U8 + - U16 - "456" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 6 + col_stop: 7 path: "" - content: 456u8 + content: 456u16 - Value: Integer: - - U8 + - U16 - "87377802873778028737780287377802873778028737780287377802873778028737780287377802" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 83 + col_stop: 84 path: "" - content: 87377802873778028737780287377802873778028737780287377802873778028737780287377802u8 + content: 87377802873778028737780287377802873778028737780287377802873778028737780287377802u16 - Value: Integer: - - U8 + - U16 - "8737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 403 + col_stop: 404 path: "" - content: 8737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802u8 + content: 8737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802u16 - Value: Integer: - - U8 + - U16 - "340130024" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 340130024u8 + content: 340130024u16 - Value: Integer: - - U8 + - U16 - "158951116" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 158951116u8 + content: 158951116u16 - Value: Integer: - - U8 + - U16 - "155529659" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 155529659u8 + content: 155529659u16 - Value: Integer: - - U8 + - U16 - "642023166" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 642023166u8 + content: 642023166u16 - Value: Integer: - - U8 + - U16 - "228481736" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 228481736u8 + content: 228481736u16 - Value: Integer: - - U8 + - U16 - "469712960" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 469712960u8 + content: 469712960u16 - Value: Integer: - - U8 + - U16 - "929437719" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 929437719u8 + content: 929437719u16 - Value: Integer: - - U8 + - U16 - "721072814" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 721072814u8 + content: 721072814u16 - Value: Integer: - - U8 + - U16 - "363254789" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 363254789u8 + content: 363254789u16 - Value: Integer: - - U8 + - U16 - "906732565" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 906732565u8 + content: 906732565u16 - Value: Integer: - - U8 + - U16 - "288246391" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 288246391u8 + content: 288246391u16 - Value: Integer: - - U8 + - U16 - "724940549" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 724940549u8 + content: 724940549u16 - Value: Integer: - - U8 + - U16 - "487101620" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 487101620u8 + content: 487101620u16 - Value: Integer: - - U8 + - U16 - "261373583" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 261373583u8 + content: 261373583u16 - Value: Integer: - - U8 + - U16 - "891163927" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 891163927u8 + content: 891163927u16 - Value: Integer: - - U8 + - U16 - "743967544" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 743967544u8 + content: 743967544u16 - Value: Integer: - - U8 + - U16 - "8372586" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 10 + col_stop: 11 path: "" - content: 8372586u8 + content: 8372586u16 - Value: Integer: - - U8 + - U16 - "461793278" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 461793278u8 + content: 461793278u16 - Value: Integer: - - U8 + - U16 - "806307045" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 806307045u8 + content: 806307045u16 - Value: Integer: - - U8 + - U16 - "122764546" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 122764546u8 + content: 122764546u16 - Value: Integer: - - U8 + - U16 - "356336181" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 356336181u8 + content: 356336181u16 - Value: Integer: - - U8 + - U16 - "158370903" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 158370903u8 + content: 158370903u16 - Value: Integer: - - U8 + - U16 - "774460877" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 774460877u8 + content: 774460877u16 - Value: Integer: - - U8 + - U16 - "557174131" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 557174131u8 + content: 557174131u16 - Value: Integer: - - U8 + - U16 - "492401267" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 492401267u8 + content: 492401267u16 - Value: Integer: - - U8 + - U16 - "893445620" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 893445620u8 + content: 893445620u16 - Value: Integer: - - U8 + - U16 - "957757048" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 957757048u8 + content: 957757048u16 - Value: Integer: - - U8 + - U16 - "721540649" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 721540649u8 + content: 721540649u16 - Value: Integer: - - U8 + - U16 - "390746493" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 390746493u8 + content: 390746493u16 - Value: Integer: - - U8 + - U16 - "211251725" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 211251725u8 + content: 211251725u16 - Value: Integer: - - U8 + - U16 - "938266114" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 938266114u8 + content: 938266114u16 - Value: Integer: - - U8 + - U16 - "156985870" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 156985870u8 + content: 156985870u16 - Value: Integer: - - U8 + - U16 - "703831126" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 703831126u8 + content: 703831126u16 - Value: Integer: - - U8 + - U16 - "729964155" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 729964155u8 + content: 729964155u16 - Value: Integer: - - U8 + - U16 - "988151305" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 988151305u8 + content: 988151305u16 - Value: Integer: - - U8 + - U16 - "320872435" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 320872435u8 + content: 320872435u16 - Value: Integer: - - U8 + - U16 - "719287167" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 719287167u8 + content: 719287167u16 - Value: Integer: - - U8 + - U16 - "152289486" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 152289486u8 + content: 152289486u16 - Value: Integer: - - U8 + - U16 - "740067975" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 740067975u8 + content: 740067975u16 - Value: Integer: - - U8 + - U16 - "728627816" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 728627816u8 + content: 728627816u16 - Value: Integer: - - U8 + - U16 - "385008978" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 385008978u8 + content: 385008978u16 - Value: Integer: - - U8 + - U16 - "553967635" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 553967635u8 + content: 553967635u16 - Value: Integer: - - U8 + - U16 - "71980713" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 11 + col_stop: 12 path: "" - content: 71980713u8 + content: 71980713u16 - Value: Integer: - - U8 + - U16 - "519444716" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 519444716u8 + content: 519444716u16 - Value: Integer: - - U8 + - U16 - "116499965" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 116499965u8 + content: 116499965u16 - Value: Integer: - - U8 + - U16 - "717422268" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 717422268u8 + content: 717422268u16 - Value: Integer: - - U8 + - U16 - "18966279" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 11 + col_stop: 12 path: "" - content: 18966279u8 + content: 18966279u16 - Value: Integer: - - U8 + - U16 - "22458638" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 11 + col_stop: 12 path: "" - content: 22458638u8 + content: 22458638u16 - Value: Integer: - - U8 + - U16 - "857282620" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 857282620u8 + content: 857282620u16 - Value: Integer: - - U8 + - U16 - "920675898" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 920675898u8 + content: 920675898u16 - Value: Integer: - - U8 + - U16 - "762235516" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 762235516u8 + content: 762235516u16 - Value: Integer: - - U8 + - U16 - "469018377" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 469018377u8 + content: 469018377u16 - Value: Integer: - - U8 + - U16 - "199986521" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 199986521u8 + content: 199986521u16 - Value: Integer: - - U8 + - U16 - "536679358" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 536679358u8 + content: 536679358u16 - Value: Integer: - - U8 + - U16 - "591399452" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 591399452u8 + content: 591399452u16 - Value: Integer: - - U8 + - U16 - "83083158" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 11 + col_stop: 12 path: "" - content: 83083158u8 + content: 83083158u16 - Value: Integer: - - U8 + - U16 - "599449051" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 599449051u8 + content: 599449051u16 - Value: Integer: - - U8 + - U16 - "445442318" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 445442318u8 + content: 445442318u16 - Value: Integer: - - U8 + - U16 - "585486590" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 585486590u8 + content: 585486590u16 - Value: Integer: - - U8 + - U16 - "209278800" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 209278800u8 + content: 209278800u16 - Value: Integer: - - U8 + - U16 - "873568117" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 873568117u8 + content: 873568117u16 - Value: Integer: - - U8 + - U16 - "664470940" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 664470940u8 + content: 664470940u16 - Value: Integer: - - U8 + - U16 - "465262783" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 465262783u8 + content: 465262783u16 - Value: Integer: - - U8 + - U16 - "605652874" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 605652874u8 + content: 605652874u16 - Value: Integer: - - U8 + - U16 - "376803940" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 376803940u8 + content: 376803940u16 - Value: Integer: - - U8 + - U16 - "965247040" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 965247040u8 + content: 965247040u16 - Value: Integer: - - U8 + - U16 - "598474509" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 598474509u8 + content: 598474509u16 - Value: Integer: - - U8 + - U16 - "845119918" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 845119918u8 + content: 845119918u16 - Value: Integer: - - U8 + - U16 - "648159133" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 648159133u8 + content: 648159133u16 - Value: Integer: - - U8 + - U16 - "669051032" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 669051032u8 + content: 669051032u16 - Value: Integer: - - U8 + - U16 - "800600261" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 800600261u8 + content: 800600261u16 - Value: Integer: - - U8 + - U16 - "434689764" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 434689764u8 + content: 434689764u16 - Value: Integer: - - U8 + - U16 - "520060080" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 520060080u8 + content: 520060080u16 - Value: Integer: - - U8 + - U16 - "804659385" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 804659385u8 + content: 804659385u16 - Value: Integer: - - U8 + - U16 - "537828058" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 537828058u8 + content: 537828058u16 - Value: Integer: - - U8 + - U16 - "716600292" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 716600292u8 + content: 716600292u16 - Value: Integer: - - U8 + - U16 - "387020273" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 387020273u8 + content: 387020273u16 - Value: Integer: - - U8 + - U16 - "199375617" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 199375617u8 + content: 199375617u16 - Value: Integer: - - U8 + - U16 - "680337189" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 680337189u8 + content: 680337189u16 - Value: Integer: - - U8 + - U16 - "818479931" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 818479931u8 + content: 818479931u16 - Value: Integer: - - U8 + - U16 - "893693281" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 893693281u8 + content: 893693281u16 - Value: Integer: - - U8 + - U16 - "87377802" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 11 + col_stop: 12 path: "" - content: 87377802u8 + content: 87377802u16 - Value: Integer: - - U8 + - U16 - "84699261" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 11 + col_stop: 12 path: "" - content: 84699261u8 + content: 84699261u16 - Value: Integer: - - U8 + - U16 - "292826090" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 292826090u8 + content: 292826090u16 - Value: Integer: - - U8 + - U16 - "569171405" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 569171405u8 + content: 569171405u16 - Value: Integer: - - U8 + - U16 - "387436237" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 387436237u8 + content: 387436237u16 - Value: Integer: - - U8 + - U16 - "150682190" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 150682190u8 + content: 150682190u16 - Value: Integer: - - U8 + - U16 - "888770419" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 888770419u8 + content: 888770419u16 - Value: Integer: - - U8 + - U16 - "824696431" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 824696431u8 + content: 824696431u16 - Value: Integer: - - U8 + - U16 - "765659803" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 765659803u8 + content: 765659803u16 - Value: Integer: - - U8 + - U16 - "270163693" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 270163693u8 + content: 270163693u16 - Value: Integer: - - U8 + - U16 - "427940240" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 427940240u8 + content: 427940240u16 - Value: Integer: - - U8 + - U16 - "504997332" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 504997332u8 + content: 504997332u16 - Value: Integer: - - U8 + - U16 - "337808338" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 337808338u8 + content: 337808338u16 - Value: Integer: - - U8 + - U16 - "907200008" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 907200008u8 + content: 907200008u16 - Value: Integer: - - U8 + - U16 - "757177889" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 757177889u8 + content: 757177889u16 - Value: Integer: - - U8 + - U16 - "696697188" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 696697188u8 + content: 696697188u16 - Value: Integer: - - U8 + - U16 - "41376051" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 11 + col_stop: 12 path: "" - content: 41376051u8 + content: 41376051u16 - Value: Integer: - - U8 + - U16 - "496293518" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 496293518u8 + content: 496293518u16 - Value: Integer: - - U8 + - U16 - "251218820" - span: line_start: 1 line_stop: 1 col_start: 1 - col_stop: 12 + col_stop: 13 path: "" - content: 251218820u8 + content: 251218820u16 diff --git a/tests/expectations/parser/parser/expression/literal/string.leo.out b/tests/expectations/parser/parser/expression/literal/string.leo.out index c6b41bc0d5..a49affc796 100644 --- a/tests/expectations/parser/parser/expression/literal/string.leo.out +++ b/tests/expectations/parser/parser/expression/literal/string.leo.out @@ -2,7 +2,6 @@ namespace: Token expectation: Pass outputs: - - "'\"\"' @ 1:1-3" - "'\"string\"' @ 1:1-9" - "'\"another { } string\"' @ 1:1-21" - "'\"{ ] [ ; a\"' @ 1:1-12" @@ -14,6 +13,19 @@ outputs: - "'\"\n\"' @ 1:1-8" - "'\"\n\"' @ 1:1-7" - "'\"\u007f\"' @ 1:1-7" - - "'\"aa \\ \" \n aa \t \r \u0000\"' @ 1:1-28" + - "'\"aa \\ \" ' \n aa \t \r \u0000\"' @ 1:1-30" - "'\"test 😒€\"' @ 1:1-15" - "'\"😭😂😘\"' @ 1:1-15" + - "'\"✋🏿\"' @ 1:1-10" + - "'\"🦀\"' @ 1:1-7" + - "'\"￿\"' @ 1:1-6" + - "'\"���\"' @ 1:1-12" + - "'\"(>3<)三\"' @ 1:1-17" + - "'\"ヽ༼ ಠ益ಠ ༽ノ\"' @ 1:1-26" + - "'\"(╯°□°)╯︵ ┻━┻\"' @ 1:1-33" + - "'\"┬─┬ ノ( ゜-゜ノ)\"' @ 1:1-29" + - "'\"( ͡° ͜ʖ ͡°)\"' @ 1:1-20" + - "'\"b\"' @ 1:1-4,'// TODO reenabe once #1682 is closed \"ᕙ(▀̿ĺ̯▀̿ ̿)ᕗ\"' @ 1:5-69" + - "'\"♥╣[-_-]╠♥\"' @ 1:1-20" + - "'\"b\"' @ 1:1-4,'// TODO reenabe once #1682 is closed \"(⑅∫°ਊ°)∫\"' @ 1:5-62" + - "'\"b\"' @ 1:1-4,'// TODO reenabe once #1682 is closed \"🦀°1\"' @ 1:5-51" diff --git a/tests/expectations/parser/parser/expression/literal/string_fail.leo.out b/tests/expectations/parser/parser/expression/literal/string_fail.leo.out index 6a71ca45fb..b2501d1f0b 100644 --- a/tests/expectations/parser/parser/expression/literal/string_fail.leo.out +++ b/tests/expectations/parser/parser/expression/literal/string_fail.leo.out @@ -4,6 +4,7 @@ expectation: Fail outputs: - "Error [EPAR0370027]: Expected a closed string but found `[Scalar('H'), Scalar('e'), Scalar('l'), Scalar('l'), Scalar('o'), Scalar(' '), Scalar('w'), Scalar('o'), Scalar('r'), Scalar('l'), Scalar('d'), Scalar('!')]`." - "Error [EPAR0370027]: Expected a closed string but found `[Scalar('\"')]`." + - "Error [EPAR0370024]: Expected more characters to lex but found none." - "Error [EPAR0370026]: Expected a valid escape character but found `l`." - "Error [EPAR0370042]: There was no opening `{` after starting an escaped unicode `a`." - "Error [EPAR0370042]: There was no opening `{` after starting an escaped unicode `\"`." @@ -11,3 +12,5 @@ outputs: - "Error [EPAR0370024]: Expected more characters to lex but found none." - "Error [EPAR0370042]: There was no opening `{` after starting an escaped unicode `}`." - "Error [EPAR0370042]: There was no opening `{` after starting an escaped unicode `6`." + - "Error [EPAR0370037]: There was no closing `}` after a escaped unicode `af🦀\"`." + - "Error [EPAR0370032]: Could not lex the following content: `⭇😍;`." diff --git a/tests/expectations/parser/parser/expression/unary/negate.leo.out b/tests/expectations/parser/parser/expression/unary/negate.leo.out index 649b722072..03766862d2 100644 --- a/tests/expectations/parser/parser/expression/unary/negate.leo.out +++ b/tests/expectations/parser/parser/expression/unary/negate.leo.out @@ -122,3 +122,24 @@ outputs: col_stop: 4 path: "" content: "-!x" + - Value: + Implicit: + - "-5" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 3 + path: "" + content: "-5" + - Value: + Integer: + - I8 + - "-5" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 5 + path: "" + content: "-5i8" diff --git a/tests/expectations/parser/parser/functions/const_function_fail.leo.out b/tests/expectations/parser/parser/functions/const_function_fail.leo.out new file mode 100644 index 0000000000..72572b4700 --- /dev/null +++ b/tests/expectations/parser/parser/functions/const_function_fail.leo.out @@ -0,0 +1,5 @@ +--- +namespace: Parse +expectation: Fail +outputs: + - "Error [EPAR0370003]: unexpected EOF\n --> test:3:1\n |\n 3 | const\n | ^^^^^" diff --git a/tests/expectations/parser/parser/functions/escape_fail.leo.out b/tests/expectations/parser/parser/functions/escape_fail.leo.out new file mode 100644 index 0000000000..d679c4f11b --- /dev/null +++ b/tests/expectations/parser/parser/functions/escape_fail.leo.out @@ -0,0 +1,5 @@ +--- +namespace: Parse +expectation: Fail +outputs: + - "Error [EPAR0370032]: Could not lex the following content: `\\`." diff --git a/tests/expectations/parser/parser/statement/assign.leo.out b/tests/expectations/parser/parser/statement/assign.leo.out index eb3d7ef675..b0ccc8ac1b 100644 --- a/tests/expectations/parser/parser/statement/assign.leo.out +++ b/tests/expectations/parser/parser/statement/assign.leo.out @@ -418,3 +418,3038 @@ outputs: col_stop: 15 path: "" content: "x.0[0][..] = y;" + - Assign: + operation: Assign + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y = y;\\\"}\"}" + accesses: + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":3,\\\"col_stop\\\":4,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y = y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.y = y; + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":7,\\\"col_stop\\\":8,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y = y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 8 + path: "" + content: x.y = y; + - Assign: + operation: Assign + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3] = y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3] = y;" + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":5,\\\"col_stop\\\":6,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3] = y;\\\"}\"}" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 7 + col_stop: 8 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3] = y;" + - Tuple: + - value: "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 11 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3] = y;" + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":12,\\\"col_stop\\\":13,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3] = y;\\\"}\"}" + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 18 + col_stop: 19 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3] = y;" + - ArrayRange: + - Value: + Implicit: + - "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 21 + col_stop: 22 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3] = y;" + - Value: + Implicit: + - "5" + - span: + line_start: 1 + line_stop: 1 + col_start: 24 + col_stop: 25 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3] = y;" + - ArrayRange: + - Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 27 + col_stop: 28 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3] = y;" + - Value: + Implicit: + - "3" + - span: + line_start: 1 + line_stop: 1 + col_start: 30 + col_stop: 31 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3] = y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 32 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3] = y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":35,\\\"col_stop\\\":36,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3] = y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 36 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3] = y;" + - Assign: + operation: Add + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x += expr;\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x += expr; + value: + Identifier: "{\"name\":\"expr\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":6,\\\"col_stop\\\":10,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x += expr;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: x += expr; + - Assign: + operation: Add + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x += ();\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x += (); + value: + TupleInit: + elements: [] + span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 8 + path: "" + content: x += (); + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 8 + path: "" + content: x += (); + - Assign: + operation: Add + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x += x+y;\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x += x+y; + value: + Binary: + left: + Identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":6,\\\"col_stop\\\":7,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x += x+y;\\\"}\"}" + right: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":8,\\\"col_stop\\\":9,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x += x+y;\\\"}\"}" + op: Add + span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 9 + path: "" + content: x += x+y; + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x += x+y; + - Assign: + operation: Add + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x += x();\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x += x(); + value: + Call: + function: + Identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":6,\\\"col_stop\\\":7,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x += x();\\\"}\"}" + arguments: [] + span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 9 + path: "" + content: x += x(); + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x += x(); + - Assign: + operation: Add + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0] += y;\\\"}\"}" + accesses: + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 4 + path: "" + content: "x[0] += y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 5 + path: "" + content: "x[0] += y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":9,\\\"col_stop\\\":10,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0] += y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: "x[0] += y;" + - Assign: + operation: Add + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0u32] += y;\\\"}\"}" + accesses: + - ArrayIndex: + Value: + Integer: + - U32 + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 7 + path: "" + content: "x[0u32] += y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 8 + path: "" + content: "x[0u32] += y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":12,\\\"col_stop\\\":13,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0u32] += y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 13 + path: "" + content: "x[0u32] += y;" + - Assign: + operation: Add + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0 += y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.0 += y; + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.0 += y; + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":8,\\\"col_stop\\\":9,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0 += y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x.0 += y; + - Assign: + operation: Add + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[1..2][0] += y;\\\"}\"}" + accesses: + - ArrayRange: + - Value: + Implicit: + - "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 4 + path: "" + content: "x[1..2][0] += y;" + - Value: + Implicit: + - "2" + - span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 7 + path: "" + content: "x[1..2][0] += y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 9 + col_stop: 10 + path: "" + content: "x[1..2][0] += y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 11 + path: "" + content: "x[1..2][0] += y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":15,\\\"col_stop\\\":16,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[1..2][0] += y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 16 + path: "" + content: "x[1..2][0] += y;" + - Assign: + operation: Add + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..2][0] += y;\\\"}\"}" + accesses: + - ArrayRange: + - ~ + - Value: + Implicit: + - "2" + - span: + line_start: 1 + line_stop: 1 + col_start: 5 + col_stop: 6 + path: "" + content: "x[..2][0] += y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 8 + col_stop: 9 + path: "" + content: "x[..2][0] += y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: "x[..2][0] += y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":14,\\\"col_stop\\\":15,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..2][0] += y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 15 + path: "" + content: "x[..2][0] += y;" + - Assign: + operation: Add + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[2..][0] += y;\\\"}\"}" + accesses: + - ArrayRange: + - Value: + Implicit: + - "2" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 4 + path: "" + content: "x[2..][0] += y;" + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 8 + col_stop: 9 + path: "" + content: "x[2..][0] += y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: "x[2..][0] += y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":14,\\\"col_stop\\\":15,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[2..][0] += y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 15 + path: "" + content: "x[2..][0] += y;" + - Assign: + operation: Add + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..][0] += y;\\\"}\"}" + accesses: + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 7 + col_stop: 8 + path: "" + content: "x[..][0] += y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: "x[..][0] += y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":13,\\\"col_stop\\\":14,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..][0] += y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 14 + path: "" + content: "x[..][0] += y;" + - Assign: + operation: Add + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0[0][..][0] += y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: "x.0[0][..][0] += y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 5 + col_stop: 6 + path: "" + content: "x.0[0][..][0] += y;" + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 12 + col_stop: 13 + path: "" + content: "x.0[0][..][0] += y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 14 + path: "" + content: "x.0[0][..][0] += y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":18,\\\"col_stop\\\":19,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0[0][..][0] += y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 19 + path: "" + content: "x.0[0][..][0] += y;" + - Assign: + operation: Add + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y += y;\\\"}\"}" + accesses: + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":3,\\\"col_stop\\\":4,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y += y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.y += y; + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":8,\\\"col_stop\\\":9,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y += y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x.y += y; + - Assign: + operation: Add + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] += y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] += y;" + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":5,\\\"col_stop\\\":6,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] += y;\\\"}\"}" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 7 + col_stop: 8 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] += y;" + - Tuple: + - value: "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 11 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] += y;" + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":12,\\\"col_stop\\\":13,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] += y;\\\"}\"}" + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 18 + col_stop: 19 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] += y;" + - ArrayRange: + - Value: + Implicit: + - "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 21 + col_stop: 22 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] += y;" + - Value: + Implicit: + - "5" + - span: + line_start: 1 + line_stop: 1 + col_start: 24 + col_stop: 25 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] += y;" + - ArrayRange: + - Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 27 + col_stop: 28 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] += y;" + - Value: + Implicit: + - "3" + - span: + line_start: 1 + line_stop: 1 + col_start: 30 + col_stop: 31 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] += y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 33 + col_stop: 34 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] += y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 35 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] += y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":39,\\\"col_stop\\\":40,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] += y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 40 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] += y;" + - Assign: + operation: Sub + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x -= expr;\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x -= expr; + value: + Identifier: "{\"name\":\"expr\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":6,\\\"col_stop\\\":10,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x -= expr;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: x -= expr; + - Assign: + operation: Sub + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x -= ();\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x -= (); + value: + TupleInit: + elements: [] + span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 8 + path: "" + content: x -= (); + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 8 + path: "" + content: x -= (); + - Assign: + operation: Sub + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x -= x+y;\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x -= x+y; + value: + Binary: + left: + Identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":6,\\\"col_stop\\\":7,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x -= x+y;\\\"}\"}" + right: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":8,\\\"col_stop\\\":9,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x -= x+y;\\\"}\"}" + op: Add + span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 9 + path: "" + content: x -= x+y; + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x -= x+y; + - Assign: + operation: Sub + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x -= x();\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x -= x(); + value: + Call: + function: + Identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":6,\\\"col_stop\\\":7,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x -= x();\\\"}\"}" + arguments: [] + span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 9 + path: "" + content: x -= x(); + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x -= x(); + - Assign: + operation: Sub + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0] -= y;\\\"}\"}" + accesses: + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 4 + path: "" + content: "x[0] -= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 5 + path: "" + content: "x[0] -= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":9,\\\"col_stop\\\":10,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0] -= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: "x[0] -= y;" + - Assign: + operation: Sub + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0u32] -= y;\\\"}\"}" + accesses: + - ArrayIndex: + Value: + Integer: + - U32 + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 7 + path: "" + content: "x[0u32] -= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 8 + path: "" + content: "x[0u32] -= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":12,\\\"col_stop\\\":13,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0u32] -= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 13 + path: "" + content: "x[0u32] -= y;" + - Assign: + operation: Sub + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0 -= y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.0 -= y; + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.0 -= y; + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":8,\\\"col_stop\\\":9,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0 -= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x.0 -= y; + - Assign: + operation: Sub + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[1..2][0] -= y;\\\"}\"}" + accesses: + - ArrayRange: + - Value: + Implicit: + - "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 4 + path: "" + content: "x[1..2][0] -= y;" + - Value: + Implicit: + - "2" + - span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 7 + path: "" + content: "x[1..2][0] -= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 9 + col_stop: 10 + path: "" + content: "x[1..2][0] -= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 11 + path: "" + content: "x[1..2][0] -= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":15,\\\"col_stop\\\":16,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[1..2][0] -= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 16 + path: "" + content: "x[1..2][0] -= y;" + - Assign: + operation: Sub + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..2][0] -= y;\\\"}\"}" + accesses: + - ArrayRange: + - ~ + - Value: + Implicit: + - "2" + - span: + line_start: 1 + line_stop: 1 + col_start: 5 + col_stop: 6 + path: "" + content: "x[..2][0] -= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 8 + col_stop: 9 + path: "" + content: "x[..2][0] -= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: "x[..2][0] -= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":14,\\\"col_stop\\\":15,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..2][0] -= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 15 + path: "" + content: "x[..2][0] -= y;" + - Assign: + operation: Sub + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[2..][0] -= y;\\\"}\"}" + accesses: + - ArrayRange: + - Value: + Implicit: + - "2" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 4 + path: "" + content: "x[2..][0] -= y;" + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 8 + col_stop: 9 + path: "" + content: "x[2..][0] -= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: "x[2..][0] -= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":14,\\\"col_stop\\\":15,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[2..][0] -= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 15 + path: "" + content: "x[2..][0] -= y;" + - Assign: + operation: Sub + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..][0] -= y;\\\"}\"}" + accesses: + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 7 + col_stop: 8 + path: "" + content: "x[..][0] -= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: "x[..][0] -= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":13,\\\"col_stop\\\":14,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..][0] -= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 14 + path: "" + content: "x[..][0] -= y;" + - Assign: + operation: Sub + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0[0][..][0] -= y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: "x.0[0][..][0] -= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 5 + col_stop: 6 + path: "" + content: "x.0[0][..][0] -= y;" + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 12 + col_stop: 13 + path: "" + content: "x.0[0][..][0] -= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 14 + path: "" + content: "x.0[0][..][0] -= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":18,\\\"col_stop\\\":19,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0[0][..][0] -= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 19 + path: "" + content: "x.0[0][..][0] -= y;" + - Assign: + operation: Sub + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y -= y;\\\"}\"}" + accesses: + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":3,\\\"col_stop\\\":4,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y -= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.y -= y; + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":8,\\\"col_stop\\\":9,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y -= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x.y -= y; + - Assign: + operation: Sub + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] -= y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] -= y;" + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":5,\\\"col_stop\\\":6,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] -= y;\\\"}\"}" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 7 + col_stop: 8 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] -= y;" + - Tuple: + - value: "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 11 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] -= y;" + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":12,\\\"col_stop\\\":13,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] -= y;\\\"}\"}" + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 18 + col_stop: 19 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] -= y;" + - ArrayRange: + - Value: + Implicit: + - "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 21 + col_stop: 22 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] -= y;" + - Value: + Implicit: + - "5" + - span: + line_start: 1 + line_stop: 1 + col_start: 24 + col_stop: 25 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] -= y;" + - ArrayRange: + - Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 27 + col_stop: 28 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] -= y;" + - Value: + Implicit: + - "3" + - span: + line_start: 1 + line_stop: 1 + col_start: 30 + col_stop: 31 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] -= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 33 + col_stop: 34 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] -= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 35 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] -= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":39,\\\"col_stop\\\":40,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] -= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 40 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] -= y;" + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x *= expr;\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x *= expr; + value: + Identifier: "{\"name\":\"expr\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":6,\\\"col_stop\\\":10,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x *= expr;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: x *= expr; + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x *= ();\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x *= (); + value: + TupleInit: + elements: [] + span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 8 + path: "" + content: x *= (); + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 8 + path: "" + content: x *= (); + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x *= x+y;\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x *= x+y; + value: + Binary: + left: + Identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":6,\\\"col_stop\\\":7,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x *= x+y;\\\"}\"}" + right: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":8,\\\"col_stop\\\":9,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x *= x+y;\\\"}\"}" + op: Add + span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 9 + path: "" + content: x *= x+y; + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x *= x+y; + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x *= x();\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x *= x(); + value: + Call: + function: + Identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":6,\\\"col_stop\\\":7,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x *= x();\\\"}\"}" + arguments: [] + span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 9 + path: "" + content: x *= x(); + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x *= x(); + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0] *= y;\\\"}\"}" + accesses: + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 4 + path: "" + content: "x[0] *= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 5 + path: "" + content: "x[0] *= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":9,\\\"col_stop\\\":10,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0] *= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: "x[0] *= y;" + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0u32] *= y;\\\"}\"}" + accesses: + - ArrayIndex: + Value: + Integer: + - U32 + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 7 + path: "" + content: "x[0u32] *= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 8 + path: "" + content: "x[0u32] *= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":12,\\\"col_stop\\\":13,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0u32] *= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 13 + path: "" + content: "x[0u32] *= y;" + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0 *= y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.0 *= y; + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.0 *= y; + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":8,\\\"col_stop\\\":9,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0 *= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x.0 *= y; + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[1..2][0] *= y;\\\"}\"}" + accesses: + - ArrayRange: + - Value: + Implicit: + - "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 4 + path: "" + content: "x[1..2][0] *= y;" + - Value: + Implicit: + - "2" + - span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 7 + path: "" + content: "x[1..2][0] *= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 9 + col_stop: 10 + path: "" + content: "x[1..2][0] *= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 11 + path: "" + content: "x[1..2][0] *= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":15,\\\"col_stop\\\":16,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[1..2][0] *= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 16 + path: "" + content: "x[1..2][0] *= y;" + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..2][0] *= y;\\\"}\"}" + accesses: + - ArrayRange: + - ~ + - Value: + Implicit: + - "2" + - span: + line_start: 1 + line_stop: 1 + col_start: 5 + col_stop: 6 + path: "" + content: "x[..2][0] *= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 8 + col_stop: 9 + path: "" + content: "x[..2][0] *= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: "x[..2][0] *= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":14,\\\"col_stop\\\":15,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..2][0] *= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 15 + path: "" + content: "x[..2][0] *= y;" + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[2..][0] *= y;\\\"}\"}" + accesses: + - ArrayRange: + - Value: + Implicit: + - "2" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 4 + path: "" + content: "x[2..][0] *= y;" + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 8 + col_stop: 9 + path: "" + content: "x[2..][0] *= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: "x[2..][0] *= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":14,\\\"col_stop\\\":15,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[2..][0] *= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 15 + path: "" + content: "x[2..][0] *= y;" + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..][0] *= y;\\\"}\"}" + accesses: + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 7 + col_stop: 8 + path: "" + content: "x[..][0] *= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: "x[..][0] *= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":13,\\\"col_stop\\\":14,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..][0] *= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 14 + path: "" + content: "x[..][0] *= y;" + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0[0][..][0] *= y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: "x.0[0][..][0] *= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 5 + col_stop: 6 + path: "" + content: "x.0[0][..][0] *= y;" + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 12 + col_stop: 13 + path: "" + content: "x.0[0][..][0] *= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 14 + path: "" + content: "x.0[0][..][0] *= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":18,\\\"col_stop\\\":19,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0[0][..][0] *= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 19 + path: "" + content: "x.0[0][..][0] *= y;" + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y *= y;\\\"}\"}" + accesses: + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":3,\\\"col_stop\\\":4,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y *= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.y *= y; + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":8,\\\"col_stop\\\":9,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y *= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x.y *= y; + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] *= y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] *= y;" + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":5,\\\"col_stop\\\":6,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] *= y;\\\"}\"}" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 7 + col_stop: 8 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] *= y;" + - Tuple: + - value: "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 11 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] *= y;" + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":12,\\\"col_stop\\\":13,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] *= y;\\\"}\"}" + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 18 + col_stop: 19 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] *= y;" + - ArrayRange: + - Value: + Implicit: + - "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 21 + col_stop: 22 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] *= y;" + - Value: + Implicit: + - "5" + - span: + line_start: 1 + line_stop: 1 + col_start: 24 + col_stop: 25 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] *= y;" + - ArrayRange: + - Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 27 + col_stop: 28 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] *= y;" + - Value: + Implicit: + - "3" + - span: + line_start: 1 + line_stop: 1 + col_start: 30 + col_stop: 31 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] *= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 33 + col_stop: 34 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] *= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 35 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] *= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":39,\\\"col_stop\\\":40,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] *= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 40 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] *= y;" + - Assign: + operation: Div + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x /= expr;\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x /= expr; + value: + Identifier: "{\"name\":\"expr\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":6,\\\"col_stop\\\":10,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x /= expr;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: x /= expr; + - Assign: + operation: Div + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x /= ();\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x /= (); + value: + TupleInit: + elements: [] + span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 8 + path: "" + content: x /= (); + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 8 + path: "" + content: x /= (); + - Assign: + operation: Div + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x /= x+y;\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x /= x+y; + value: + Binary: + left: + Identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":6,\\\"col_stop\\\":7,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x /= x+y;\\\"}\"}" + right: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":8,\\\"col_stop\\\":9,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x /= x+y;\\\"}\"}" + op: Add + span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 9 + path: "" + content: x /= x+y; + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x /= x+y; + - Assign: + operation: Div + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x /= x();\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x /= x(); + value: + Call: + function: + Identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":6,\\\"col_stop\\\":7,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x /= x();\\\"}\"}" + arguments: [] + span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 9 + path: "" + content: x /= x(); + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x /= x(); + - Assign: + operation: Div + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0] /= y;\\\"}\"}" + accesses: + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 4 + path: "" + content: "x[0] /= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 5 + path: "" + content: "x[0] /= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":9,\\\"col_stop\\\":10,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0] /= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: "x[0] /= y;" + - Assign: + operation: Div + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0u32] /= y;\\\"}\"}" + accesses: + - ArrayIndex: + Value: + Integer: + - U32 + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 7 + path: "" + content: "x[0u32] /= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 8 + path: "" + content: "x[0u32] /= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":12,\\\"col_stop\\\":13,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0u32] /= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 13 + path: "" + content: "x[0u32] /= y;" + - Assign: + operation: Div + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0 /= y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.0 /= y; + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.0 /= y; + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":8,\\\"col_stop\\\":9,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0 /= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x.0 /= y; + - Assign: + operation: Div + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[1..2][0] /= y;\\\"}\"}" + accesses: + - ArrayRange: + - Value: + Implicit: + - "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 4 + path: "" + content: "x[1..2][0] /= y;" + - Value: + Implicit: + - "2" + - span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 7 + path: "" + content: "x[1..2][0] /= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 9 + col_stop: 10 + path: "" + content: "x[1..2][0] /= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 11 + path: "" + content: "x[1..2][0] /= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":15,\\\"col_stop\\\":16,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[1..2][0] /= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 16 + path: "" + content: "x[1..2][0] /= y;" + - Assign: + operation: Div + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..2][0] /= y;\\\"}\"}" + accesses: + - ArrayRange: + - ~ + - Value: + Implicit: + - "2" + - span: + line_start: 1 + line_stop: 1 + col_start: 5 + col_stop: 6 + path: "" + content: "x[..2][0] /= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 8 + col_stop: 9 + path: "" + content: "x[..2][0] /= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: "x[..2][0] /= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":14,\\\"col_stop\\\":15,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..2][0] /= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 15 + path: "" + content: "x[..2][0] /= y;" + - Assign: + operation: Div + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[2..][0] /= y;\\\"}\"}" + accesses: + - ArrayRange: + - Value: + Implicit: + - "2" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 4 + path: "" + content: "x[2..][0] /= y;" + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 8 + col_stop: 9 + path: "" + content: "x[2..][0] /= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: "x[2..][0] /= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":14,\\\"col_stop\\\":15,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[2..][0] /= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 15 + path: "" + content: "x[2..][0] /= y;" + - Assign: + operation: Div + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..][0] /= y;\\\"}\"}" + accesses: + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 7 + col_stop: 8 + path: "" + content: "x[..][0] /= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: "x[..][0] /= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":13,\\\"col_stop\\\":14,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..][0] /= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 14 + path: "" + content: "x[..][0] /= y;" + - Assign: + operation: Div + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0[0][..][0] /= y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: "x.0[0][..][0] /= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 5 + col_stop: 6 + path: "" + content: "x.0[0][..][0] /= y;" + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 12 + col_stop: 13 + path: "" + content: "x.0[0][..][0] /= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 14 + path: "" + content: "x.0[0][..][0] /= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":18,\\\"col_stop\\\":19,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0[0][..][0] /= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 19 + path: "" + content: "x.0[0][..][0] /= y;" + - Assign: + operation: Div + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y /= y;\\\"}\"}" + accesses: + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":3,\\\"col_stop\\\":4,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y /= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.y /= y; + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":8,\\\"col_stop\\\":9,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y /= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x.y /= y; + - Assign: + operation: Div + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] /= y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] /= y;" + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":5,\\\"col_stop\\\":6,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] /= y;\\\"}\"}" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 7 + col_stop: 8 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] /= y;" + - Tuple: + - value: "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 11 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] /= y;" + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":12,\\\"col_stop\\\":13,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] /= y;\\\"}\"}" + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 18 + col_stop: 19 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] /= y;" + - ArrayRange: + - Value: + Implicit: + - "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 21 + col_stop: 22 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] /= y;" + - Value: + Implicit: + - "5" + - span: + line_start: 1 + line_stop: 1 + col_start: 24 + col_stop: 25 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] /= y;" + - ArrayRange: + - Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 27 + col_stop: 28 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] /= y;" + - Value: + Implicit: + - "3" + - span: + line_start: 1 + line_stop: 1 + col_start: 30 + col_stop: 31 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] /= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 33 + col_stop: 34 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] /= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 35 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] /= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":39,\\\"col_stop\\\":40,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] /= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 40 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] /= y;" + - Assign: + operation: Pow + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x **= expr;\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x **= expr; + value: + Identifier: "{\"name\":\"expr\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":7,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x **= expr;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 11 + path: "" + content: x **= expr; + - Assign: + operation: Pow + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x **= ();\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x **= (); + value: + TupleInit: + elements: [] + span: + line_start: 1 + line_stop: 1 + col_start: 7 + col_stop: 9 + path: "" + content: x **= (); + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: x **= (); + - Assign: + operation: Pow + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x **= x+y;\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x **= x+y; + value: + Binary: + left: + Identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":7,\\\"col_stop\\\":8,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x **= x+y;\\\"}\"}" + right: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":9,\\\"col_stop\\\":10,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x **= x+y;\\\"}\"}" + op: Add + span: + line_start: 1 + line_stop: 1 + col_start: 7 + col_stop: 10 + path: "" + content: x **= x+y; + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: x **= x+y; + - Assign: + operation: Pow + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x **= x();\\\"}\"}" + accesses: [] + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 2 + path: "" + content: x **= x(); + value: + Call: + function: + Identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":7,\\\"col_stop\\\":8,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x **= x();\\\"}\"}" + arguments: [] + span: + line_start: 1 + line_stop: 1 + col_start: 7 + col_stop: 10 + path: "" + content: x **= x(); + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: x **= x(); + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0] *= y;\\\"}\"}" + accesses: + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 4 + path: "" + content: "x[0] *= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 5 + path: "" + content: "x[0] *= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":9,\\\"col_stop\\\":10,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0] *= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: "x[0] *= y;" + - Assign: + operation: Mul + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0u32] *= y;\\\"}\"}" + accesses: + - ArrayIndex: + Value: + Integer: + - U32 + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 7 + path: "" + content: "x[0u32] *= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 8 + path: "" + content: "x[0u32] *= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":12,\\\"col_stop\\\":13,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[0u32] *= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 13 + path: "" + content: "x[0u32] *= y;" + - Assign: + operation: Pow + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0 **= y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.0 **= y; + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.0 **= y; + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":9,\\\"col_stop\\\":10,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0 **= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: x.0 **= y; + - Assign: + operation: Pow + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[1..2][0] **= y;\\\"}\"}" + accesses: + - ArrayRange: + - Value: + Implicit: + - "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 4 + path: "" + content: "x[1..2][0] **= y;" + - Value: + Implicit: + - "2" + - span: + line_start: 1 + line_stop: 1 + col_start: 6 + col_stop: 7 + path: "" + content: "x[1..2][0] **= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 9 + col_stop: 10 + path: "" + content: "x[1..2][0] **= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 11 + path: "" + content: "x[1..2][0] **= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":16,\\\"col_stop\\\":17,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[1..2][0] **= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 17 + path: "" + content: "x[1..2][0] **= y;" + - Assign: + operation: Pow + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..2][0] **= y;\\\"}\"}" + accesses: + - ArrayRange: + - ~ + - Value: + Implicit: + - "2" + - span: + line_start: 1 + line_stop: 1 + col_start: 5 + col_stop: 6 + path: "" + content: "x[..2][0] **= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 8 + col_stop: 9 + path: "" + content: "x[..2][0] **= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: "x[..2][0] **= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":15,\\\"col_stop\\\":16,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..2][0] **= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 16 + path: "" + content: "x[..2][0] **= y;" + - Assign: + operation: Pow + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[2..][0] **= y;\\\"}\"}" + accesses: + - ArrayRange: + - Value: + Implicit: + - "2" + - span: + line_start: 1 + line_stop: 1 + col_start: 3 + col_stop: 4 + path: "" + content: "x[2..][0] **= y;" + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 8 + col_stop: 9 + path: "" + content: "x[2..][0] **= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: "x[2..][0] **= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":15,\\\"col_stop\\\":16,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[2..][0] **= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 16 + path: "" + content: "x[2..][0] **= y;" + - Assign: + operation: Pow + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..][0] **= y;\\\"}\"}" + accesses: + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 7 + col_stop: 8 + path: "" + content: "x[..][0] **= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 9 + path: "" + content: "x[..][0] **= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":14,\\\"col_stop\\\":15,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x[..][0] **= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 15 + path: "" + content: "x[..][0] **= y;" + - Assign: + operation: Pow + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0[0][..][0] **= y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: "x.0[0][..][0] **= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 5 + col_stop: 6 + path: "" + content: "x.0[0][..][0] **= y;" + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 12 + col_stop: 13 + path: "" + content: "x.0[0][..][0] **= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 14 + path: "" + content: "x.0[0][..][0] **= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":19,\\\"col_stop\\\":20,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0[0][..][0] **= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 20 + path: "" + content: "x.0[0][..][0] **= y;" + - Assign: + operation: Pow + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y **= y;\\\"}\"}" + accesses: + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":3,\\\"col_stop\\\":4,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y **= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: x.y **= y; + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":9,\\\"col_stop\\\":10,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.y **= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 10 + path: "" + content: x.y **= y; + - Assign: + operation: Pow + assignee: + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] **= y;\\\"}\"}" + accesses: + - Tuple: + - value: "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 4 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] **= y;" + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":5,\\\"col_stop\\\":6,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] **= y;\\\"}\"}" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 7 + col_stop: 8 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] **= y;" + - Tuple: + - value: "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 11 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] **= y;" + - Member: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":12,\\\"col_stop\\\":13,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] **= y;\\\"}\"}" + - ArrayRange: + - ~ + - ~ + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 18 + col_stop: 19 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] **= y;" + - ArrayRange: + - Value: + Implicit: + - "1" + - span: + line_start: 1 + line_stop: 1 + col_start: 21 + col_stop: 22 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] **= y;" + - Value: + Implicit: + - "5" + - span: + line_start: 1 + line_stop: 1 + col_start: 24 + col_stop: 25 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] **= y;" + - ArrayRange: + - Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 27 + col_stop: 28 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] **= y;" + - Value: + Implicit: + - "3" + - span: + line_start: 1 + line_stop: 1 + col_start: 30 + col_stop: 31 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] **= y;" + - ArrayIndex: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 33 + col_stop: 34 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] **= y;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 35 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] **= y;" + value: + Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":40,\\\"col_stop\\\":41,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"x.0.y[0].1.y[..][0][1..5][0..3][0] **= y;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 41 + path: "" + content: "x.0.y[0].1.y[..][0][1..5][0..3][0] **= y;" diff --git a/tests/expectations/parser/parser/statement/assign_fail.leo.out b/tests/expectations/parser/parser/statement/assign_fail.leo.out new file mode 100644 index 0000000000..4bf56a3048 --- /dev/null +++ b/tests/expectations/parser/parser/statement/assign_fail.leo.out @@ -0,0 +1,18 @@ +--- +namespace: ParseStatement +expectation: Fail +outputs: + - "Error [EPAR0370011]: invalid assignment target\n --> test:1:1\n |\n 1 | x::y = y;\n | ^^^^" + - "Error [EPAR0370011]: invalid assignment target\n --> test:1:1\n |\n 1 | 5 = y;\n | ^" + - "Error [EPAR0370011]: invalid assignment target\n --> test:1:1\n |\n 1 | x + x = y;\n | ^^^^^" + - "Error [EPAR0370011]: invalid assignment target\n --> test:1:1\n |\n 1 | -x = y;\n | ^^" + - "Error [EPAR0370011]: invalid assignment target\n --> test:1:1\n |\n 1 | !x = y;\n | ^^" + - "Error [EPAR0370011]: invalid assignment target\n --> test:1:1\n |\n 1 | a? x : x = y;\n | ^^^^^^^^" + - "Error [EPAR0370011]: invalid assignment target\n --> test:1:1\n |\n 1 | x as u32 = y;\n | ^^^^^^^^" + - "Error [EPAR0370011]: invalid assignment target\n --> test:1:1\n |\n 1 | [x, x, x] = y;\n | ^^^^^^^^^" + - "Error [EPAR0370011]: invalid assignment target\n --> test:1:1\n |\n 1 | [x; 3] = y;\n | ^^^^^^" + - "Error [EPAR0370011]: invalid assignment target\n --> test:1:1\n |\n 1 | (x, x, x) = y;\n | ^^^^^^^^^" + - "Error [EPAR0370011]: invalid assignment target\n --> test:1:1\n |\n 1 | x {x: y, y: z} = y;\n | ^^^^^^^^^^^^^^" + - "Error [EPAR0370011]: invalid assignment target\n --> test:1:1\n |\n 1 | x() = y;\n | ^^^" + - "Error [EPAR0370011]: invalid assignment target\n --> test:1:1\n |\n 1 | x.y() = y;\n | ^^^^^" + - "Error [EPAR0370032]: Could not lex the following content: `🦀 = y;`." diff --git a/tests/expectations/parser/parser/statement/console_fail.leo.out b/tests/expectations/parser/parser/statement/console_fail.leo.out new file mode 100644 index 0000000000..b06712cbf1 --- /dev/null +++ b/tests/expectations/parser/parser/statement/console_fail.leo.out @@ -0,0 +1,6 @@ +--- +namespace: ParseStatement +expectation: Fail +outputs: + - "Error [EPAR0370009]: unexpected string: expected 'formatted string', got '1'\n --> test:1:13\n |\n 1 | console.log(1);\n | ^" + - "Error [EPAR0370007]: unexpected identifier: expected 'assert', 'error', 'log' -- got 'test'\n --> test:1:9\n |\n 1 | console.test();\n | ^^^^" diff --git a/tests/expectations/parser/parser/statement/definition.leo.out b/tests/expectations/parser/parser/statement/definition.leo.out index 8af02e1c17..ca3527b280 100644 --- a/tests/expectations/parser/parser/statement/definition.leo.out +++ b/tests/expectations/parser/parser/statement/definition.leo.out @@ -1540,3 +1540,132 @@ outputs: col_stop: 37 path: "" content: "let x: [[u8; 2]; 2] = [[0,0], [0,0]];" + - Definition: + declaration_type: Let + variable_names: + - mutable: true + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":5,\\\"col_stop\\\":6,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"let x: [u8; (2, 2)] = [[0,0], [0,0]];\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 5 + col_stop: 6 + path: "" + content: "let x: [u8; (2, 2)] = [[0,0], [0,0]];" + type_: + Array: + - IntegerType: U8 + - - value: "2" + - value: "2" + value: + ArrayInline: + elements: + - Expression: + ArrayInline: + elements: + - Expression: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 25 + col_stop: 26 + path: "" + content: "let x: [u8; (2, 2)] = [[0,0], [0,0]];" + - Expression: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 27 + col_stop: 28 + path: "" + content: "let x: [u8; (2, 2)] = [[0,0], [0,0]];" + span: + line_start: 1 + line_stop: 1 + col_start: 24 + col_stop: 29 + path: "" + content: "let x: [u8; (2, 2)] = [[0,0], [0,0]];" + - Expression: + ArrayInline: + elements: + - Expression: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 32 + col_stop: 33 + path: "" + content: "let x: [u8; (2, 2)] = [[0,0], [0,0]];" + - Expression: + Value: + Implicit: + - "0" + - span: + line_start: 1 + line_stop: 1 + col_start: 34 + col_stop: 35 + path: "" + content: "let x: [u8; (2, 2)] = [[0,0], [0,0]];" + span: + line_start: 1 + line_stop: 1 + col_start: 31 + col_stop: 36 + path: "" + content: "let x: [u8; (2, 2)] = [[0,0], [0,0]];" + span: + line_start: 1 + line_stop: 1 + col_start: 23 + col_stop: 37 + path: "" + content: "let x: [u8; (2, 2)] = [[0,0], [0,0]];" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 37 + path: "" + content: "let x: [u8; (2, 2)] = [[0,0], [0,0]];" + - Definition: + declaration_type: Let + variable_names: + - mutable: true + identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":5,\\\"col_stop\\\":6,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"let x: address = aleo15u4r0gzjtqzepkgurgn7p3u5kkhs9p74rx6aun3uh2s5std6759svgmg53;\\\"}\"}" + span: + line_start: 1 + line_stop: 1 + col_start: 5 + col_stop: 6 + path: "" + content: "let x: address = aleo15u4r0gzjtqzepkgurgn7p3u5kkhs9p74rx6aun3uh2s5std6759svgmg53;" + type_: Address + value: + Value: + Address: + - aleo15u4r0gzjtqzepkgurgn7p3u5kkhs9p74rx6aun3uh2s5std6759svgmg53 + - span: + line_start: 1 + line_stop: 1 + col_start: 18 + col_stop: 81 + path: "" + content: "let x: address = aleo15u4r0gzjtqzepkgurgn7p3u5kkhs9p74rx6aun3uh2s5std6759svgmg53;" + span: + line_start: 1 + line_stop: 1 + col_start: 1 + col_stop: 81 + path: "" + content: "let x: address = aleo15u4r0gzjtqzepkgurgn7p3u5kkhs9p74rx6aun3uh2s5std6759svgmg53;" diff --git a/tests/expectations/parser/parser/statement/definition_fail.leo.out b/tests/expectations/parser/parser/statement/definition_fail.leo.out index 33e28eab91..7dbde10949 100644 --- a/tests/expectations/parser/parser/statement/definition_fail.leo.out +++ b/tests/expectations/parser/parser/statement/definition_fail.leo.out @@ -25,5 +25,24 @@ outputs: - "Error [EPAR0370009]: unexpected string: expected 'ident', got ','\n --> test:1:10\n |\n 1 | let (x,y,,) = ();\n | ^" - "Error [EPAR0370009]: unexpected string: expected 'ident', got ','\n --> test:1:6\n |\n 1 | let (,x,y) = ();\n | ^" - "Error [EPAR0370009]: unexpected string: expected 'ident', got ','\n --> test:1:8\n |\n 1 | let (x,,y) = ();\n | ^" + - "Error [EPAR0370009]: unexpected string: expected 'int', got ','\n --> test:1:16\n |\n 1 | let x: [u8; (2,,)] = [[0,0], [0,0]];\n | ^\nError [EPAR0370045]: do not put parens around single dimension array size\n --> test:1:13\n |\n 1 | let x: [u8; (2,,)] = [[0,0], [0,0]];\n | ^^^^^" + - "Error [EPAR0370005]: expected 'i8', 'i16', 'i32', 'i64', 'i128', 'u8', 'u16', 'u32', 'u64', 'u128', 'field', 'group', 'address', 'bool', 'char' -- got 'const'\n --> test:1:8\n |\n 1 | let x: const = expr;\n | ^^^^^" + - "Error [EPAR0370005]: expected 'i8', 'i16', 'i32', 'i64', 'i128', 'u8', 'u16', 'u32', 'u64', 'u128', 'field', 'group', 'address', 'bool', 'char' -- got 'let'\n --> test:1:10\n |\n 1 | const x: let = expr;\n | ^^^" + - "Error [EPAR0370005]: expected 'i8', 'i16', 'i32', 'i64', 'i128', 'u8', 'u16', 'u32', 'u64', 'u128', 'field', 'group', 'address', 'bool', 'char' -- got 'mut'\n --> test:1:8\n |\n 1 | let x: mut = expr;\n | ^^^" + - "Error [EPAR0370003]: unexpected EOF\n --> test:1:1\n |\n 1 | let\n | ^^^" + - "Error [EPAR0370003]: unexpected EOF\n --> test:1:5\n |\n 1 | let x\n | ^" + - "Error [EPAR0370003]: unexpected EOF\n --> test:1:6\n |\n 1 | let x:\n | ^" + - "Error [EPAR0370005]: expected ) -- got ']'\n --> test:1:14\n |\n 1 | let x = (a, y]);\n | ^" + - "Error [EPAR0370009]: unexpected string: expected 'ident', got '='\n --> test:1:5\n |\n 1 | let = 1u8;\n | ^" + - "Error [EPAR0370009]: unexpected string: expected 'ident', got ';'\n --> test:1:4\n |\n 1 | let;\n | ^" + - "Error [EPAR0370005]: expected = -- got '1'\n --> test:1:7\n |\n 1 | let x 1u8;\n | ^" + - "Error [EPAR0370005]: expected = -- got ';'\n --> test:1:10\n |\n 1 | let x: u8;\n | ^" + - "Error [EPAR0370003]: unexpected EOF\n --> test:1:8\n |\n 1 | let x: u8\n | ^^" + - "Error [EPAR0370005]: expected 'i8', 'i16', 'i32', 'i64', 'i128', 'u8', 'u16', 'u32', 'u64', 'u128', 'field', 'group', 'address', 'bool', 'char' -- got '='\n --> test:1:8\n |\n 1 | let x: = 1;\n | ^" + - "Error [EPAR0370005]: expected ; -- got ']'\n --> test:1:11\n |\n 1 | let x: [u8] = 1;\n | ^" + - "Error [EPAR0370003]: unexpected EOF\n --> test:1:11\n |\n 1 | let x: [u8;\n | ^" + - "Error [EPAR0370005]: expected ] -- got 'u8'\n --> test:1:14\n |\n 1 | let x: [u8; 1u8] = [1,\n | ^^" + - "Error [EPAR0370009]: unexpected string: expected 'expression', got ']'\n --> test:1:15\n |\n 1 | let dbg: u8 = ];\n | ^" + - "Error [EPAR0370032]: Could not lex the following content: `🦀: u8 = 0;`." - "Error [EPAR0370044]: do not put parens around single variable names\n --> test:1:6\n |\n 1 | let (x) = ...;\n | ^\nError [EPAR0370009]: unexpected string: expected 'expression', got '...'\n --> test:1:11\n |\n 1 | let (x) = ...;\n | ^^^" - "Error [EPAR0370044]: do not put parens around single variable names\n --> test:1:6\n |\n 1 | let (x,) = ...;\n | ^\nError [EPAR0370009]: unexpected string: expected 'expression', got '...'\n --> test:1:12\n |\n 1 | let (x,) = ...;\n | ^^^" diff --git a/tests/expectations/parser/parser/statement/expression_fail.leo.out b/tests/expectations/parser/parser/statement/expression_fail.leo.out new file mode 100644 index 0000000000..8d8166f7fe --- /dev/null +++ b/tests/expectations/parser/parser/statement/expression_fail.leo.out @@ -0,0 +1,10 @@ +--- +namespace: ParseStatement +expectation: Fail +outputs: + - "Error [EPAR0370009]: unexpected string: expected 'expression', got ']'\n --> test:1:2\n |\n 1 | (];\n | ^" + - "Error [EPAR0370009]: unexpected string: expected 'expression', got ')'\n --> test:1:2\n |\n 1 | [);\n | ^" + - "Error [EPAR0370032]: Could not lex the following content: `\\y;`." + - "Error [EPAR0370046]: Found the char `;`, but expected `|`" + - "Error [EPAR0370009]: unexpected string: expected 'expression', got '}'\n --> test:1:3\n |\n 1 | x[};\n | ^" + - "Error [EPAR0370005]: expected ) -- got ']'\n --> test:1:6\n |\n 1 | (x, y];\n | ^" diff --git a/tests/parser/expression/access/array_access.leo b/tests/parser/expression/access/array_access.leo index 9773b41982..14d2393afd 100644 --- a/tests/parser/expression/access/array_access.leo +++ b/tests/parser/expression/access/array_access.leo @@ -11,4 +11,4 @@ x[x][y][z] x[0]() x()[0] x(y)::y(x) -x[x].0[x] +x[x].0[x] \ No newline at end of file diff --git a/tests/parser/expression/literal/char.leo b/tests/parser/expression/literal/char.leo index 68f7edc37b..c414c38023 100644 --- a/tests/parser/expression/literal/char.leo +++ b/tests/parser/expression/literal/char.leo @@ -6,6 +6,7 @@ expectation: Pass 'a' 'Z' '\"' +'\'' '\t' '\r' '\0' @@ -15,6 +16,7 @@ expectation: Pass 'å' '\u{4e0}' 'Ӡ' +'\u{d800}' '\u{2764}' '❤' '\u{1F622}' diff --git a/tests/parser/expression/literal/char_fail.leo b/tests/parser/expression/literal/char_fail.leo index 88e48b6cc3..3a934152ab 100644 --- a/tests/parser/expression/literal/char_fail.leo +++ b/tests/parser/expression/literal/char_fail.leo @@ -4,15 +4,18 @@ expectation: Fail */ '\' +\ +'\ +\n 'a '' -'\x9A' '\x7' -'\x7g' '\xz' +'\x9A' +'\x7g' '\x80' '\xc1' '\xc2' @@ -23,7 +26,6 @@ expectation: Fail 'abcdefg' -'\t\t' '\a' '\z' '\A' @@ -33,20 +35,22 @@ expectation: Fail '\*' '\x' '\u' +'\t\t' -'\u{bbbbb}\u{aaaa}' '\uz' '\u1' +'\u}; +'🦀\n' '\u123' +'🦀1🦀' +'\u6🦀}' +'\u{af🦀' '\u{2764z' '\u{276g}' +'\u9999999' '\u00000000' '\u01000000' -'\u9999999' '\u{110000}' -'\u}' +'\u{bbbbb}\u{aaaa}' -'\u{af🦀' -'🦀\n' -'🦀1🦀' '😭😂😘' diff --git a/tests/parser/expression/literal/comment_fail.leo b/tests/parser/expression/literal/comment_fail.leo new file mode 100644 index 0000000000..a79becfccf --- /dev/null +++ b/tests/parser/expression/literal/comment_fail.leo @@ -0,0 +1,26 @@ +/* +namespace: ParseExpression +expectation: Fail +*/ + +/* + +/* test + +/ / + +/*/ + +*/ + +🦀**/ + +/🦀*/ + +/*🦀/ + +/**🦀 + +/*🦀 + +/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/* diff --git a/tests/parser/expression/literal/group.leo b/tests/parser/expression/literal/group.leo index c69a52b93c..4157b8fc14 100644 --- a/tests/parser/expression/literal/group.leo +++ b/tests/parser/expression/literal/group.leo @@ -66,3 +66,7 @@ expectation: Pass (123, 456)group (123, 456)group + +1group + +-1group \ No newline at end of file diff --git a/tests/parser/expression/literal/group_fail.leo b/tests/parser/expression/literal/group_fail.leo index 1b0ecd1de2..408e82ec56 100644 --- a/tests/parser/expression/literal/group_fail.leo +++ b/tests/parser/expression/literal/group_fail.leo @@ -18,3 +18,11 @@ expectation: Fail (123,456u8)group (123,456field)group + +(123, 456) group + +(123, )group + +(123, 456, 789)group + +(123, 456)bool diff --git a/tests/parser/expression/literal/int_fail.leo b/tests/parser/expression/literal/int_fail.leo new file mode 100644 index 0000000000..b1bd6f4b43 --- /dev/null +++ b/tests/parser/expression/literal/int_fail.leo @@ -0,0 +1,8 @@ +/* +namespace: Token +expectation: Fail +*/ + +0xb +0x +0xbfield \ No newline at end of file diff --git a/tests/parser/expression/literal/int_parse/field.leo b/tests/parser/expression/literal/int_parse/field.leo index e8537beb68..9e89345ade 100644 --- a/tests/parser/expression/literal/int_parse/field.leo +++ b/tests/parser/expression/literal/int_parse/field.leo @@ -8,6 +8,8 @@ expectation: Pass 123 456field +// 0xbfield + 87377802873778028737780287377802873778028737780287377802873778028737780287377802field 8737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802field diff --git a/tests/parser/expression/literal/int_parse/u16.leo b/tests/parser/expression/literal/int_parse/u16.leo index 1518748456..c914573fc2 100644 --- a/tests/parser/expression/literal/int_parse/u16.leo +++ b/tests/parser/expression/literal/int_parse/u16.leo @@ -3,112 +3,112 @@ namespace: ParseExpression expectation: Pass */ -123u8 +123u16 123 -456u8 +456u16 -87377802873778028737780287377802873778028737780287377802873778028737780287377802u8 +87377802873778028737780287377802873778028737780287377802873778028737780287377802u16 -8737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802u8 +8737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802873778028737780287377802u16 -340130024u8 -158951116u8 -155529659u8 -642023166u8 -228481736u8 -469712960u8 -929437719u8 -721072814u8 -363254789u8 -906732565u8 -288246391u8 -724940549u8 -487101620u8 -261373583u8 -891163927u8 -743967544u8 -8372586u8 -461793278u8 -806307045u8 -122764546u8 -356336181u8 -158370903u8 -774460877u8 -557174131u8 -492401267u8 -893445620u8 -957757048u8 -721540649u8 -390746493u8 -211251725u8 -938266114u8 -156985870u8 -703831126u8 -729964155u8 -988151305u8 -320872435u8 -719287167u8 -152289486u8 -740067975u8 -728627816u8 -385008978u8 -553967635u8 -71980713u8 -519444716u8 -116499965u8 -717422268u8 -18966279u8 -22458638u8 -857282620u8 -920675898u8 -762235516u8 -469018377u8 -199986521u8 -536679358u8 -591399452u8 -83083158u8 -599449051u8 -445442318u8 -585486590u8 -209278800u8 -873568117u8 -664470940u8 -465262783u8 -605652874u8 -376803940u8 -965247040u8 -598474509u8 -845119918u8 -648159133u8 -669051032u8 -800600261u8 -434689764u8 -520060080u8 -804659385u8 -537828058u8 -716600292u8 -387020273u8 -199375617u8 -680337189u8 -818479931u8 -893693281u8 -87377802u8 -84699261u8 -292826090u8 -569171405u8 -387436237u8 -150682190u8 -888770419u8 -824696431u8 -765659803u8 -270163693u8 -427940240u8 -504997332u8 -337808338u8 -907200008u8 -757177889u8 -696697188u8 -41376051u8 -496293518u8 -251218820u8 \ No newline at end of file +340130024u16 +158951116u16 +155529659u16 +642023166u16 +228481736u16 +469712960u16 +929437719u16 +721072814u16 +363254789u16 +906732565u16 +288246391u16 +724940549u16 +487101620u16 +261373583u16 +891163927u16 +743967544u16 +8372586u16 +461793278u16 +806307045u16 +122764546u16 +356336181u16 +158370903u16 +774460877u16 +557174131u16 +492401267u16 +893445620u16 +957757048u16 +721540649u16 +390746493u16 +211251725u16 +938266114u16 +156985870u16 +703831126u16 +729964155u16 +988151305u16 +320872435u16 +719287167u16 +152289486u16 +740067975u16 +728627816u16 +385008978u16 +553967635u16 +71980713u16 +519444716u16 +116499965u16 +717422268u16 +18966279u16 +22458638u16 +857282620u16 +920675898u16 +762235516u16 +469018377u16 +199986521u16 +536679358u16 +591399452u16 +83083158u16 +599449051u16 +445442318u16 +585486590u16 +209278800u16 +873568117u16 +664470940u16 +465262783u16 +605652874u16 +376803940u16 +965247040u16 +598474509u16 +845119918u16 +648159133u16 +669051032u16 +800600261u16 +434689764u16 +520060080u16 +804659385u16 +537828058u16 +716600292u16 +387020273u16 +199375617u16 +680337189u16 +818479931u16 +893693281u16 +87377802u16 +84699261u16 +292826090u16 +569171405u16 +387436237u16 +150682190u16 +888770419u16 +824696431u16 +765659803u16 +270163693u16 +427940240u16 +504997332u16 +337808338u16 +907200008u16 +757177889u16 +696697188u16 +41376051u16 +496293518u16 +251218820u16 \ No newline at end of file diff --git a/tests/parser/expression/literal/string.leo b/tests/parser/expression/literal/string.leo index 644ad63f3c..fc9711e444 100644 --- a/tests/parser/expression/literal/string.leo +++ b/tests/parser/expression/literal/string.leo @@ -3,8 +3,6 @@ namespace: Token expectation: Pass */ -"" - "string" "another { } string" @@ -22,7 +20,23 @@ expectation: Pass "\x7F" -"aa \\ \" \n aa \t \r \0" +"aa \\ \" \' \n aa \t \r \0" "test 😒€" -"😭😂😘" \ No newline at end of file +"😭😂😘" + +"✋🏿" +"🦀" +"￿" + +"���" + +"(>3<)三" +"ヽ༼ ಠ益ಠ ༽ノ" +"(╯°□°)╯︵ ┻━┻" +"┬─┬ ノ( ゜-゜ノ)" +"( ͡° ͜ʖ ͡°)" +"b" // TODO reenabe once #1682 is closed "ᕙ(▀̿ĺ̯▀̿ ̿)ᕗ" +"♥╣[-_-]╠♥" +"b" // TODO reenabe once #1682 is closed "(⑅∫°ਊ°)∫" +"b" // TODO reenabe once #1682 is closed "🦀°1" \ No newline at end of file diff --git a/tests/parser/expression/literal/string_fail.leo b/tests/parser/expression/literal/string_fail.leo index 558a13ff58..04dabbc499 100644 --- a/tests/parser/expression/literal/string_fail.leo +++ b/tests/parser/expression/literal/string_fail.leo @@ -7,6 +7,8 @@ expectation: Fail "\" +"\ + "\l" "\uaaa" @@ -19,4 +21,8 @@ expectation: Fail "\u}" -"\u6🦀}" \ No newline at end of file +"\u6🦀}" + +"\u{af🦀" + +"\" // TODO reenable once #1683 is closed "⭇😍; \ No newline at end of file diff --git a/tests/parser/expression/literal/string_parse.leo b/tests/parser/expression/literal/string_parse.leo deleted file mode 100644 index 77699cb086..0000000000 --- a/tests/parser/expression/literal/string_parse.leo +++ /dev/null @@ -1,26 +0,0 @@ -/* -namespace: ParseExpression -expectation: Pass -*/ - -"string" - -"another { } string" - -"{ ] [ ; a" - -"\u{FFA}" -"\u{afafa}" -"\u{afaf}" -"\u{afa}" -"\u{af}" -"\u{a}" - -"\x0A" - -"\x7F" - -"aa \\ \" \n aa \t \r \0" - -"test 😒€" -"😭😂😘" \ No newline at end of file diff --git a/tests/parser/expression/unary/negate.leo b/tests/parser/expression/unary/negate.leo index b23e99c5d2..035a0c3c26 100644 --- a/tests/parser/expression/unary/negate.leo +++ b/tests/parser/expression/unary/negate.leo @@ -9,3 +9,6 @@ expectation: Pass -x() --x -!x + +-5 +-5i8 \ No newline at end of file diff --git a/tests/parser/functions/const_function_fail.leo b/tests/parser/functions/const_function_fail.leo new file mode 100644 index 0000000000..1da7e79739 --- /dev/null +++ b/tests/parser/functions/const_function_fail.leo @@ -0,0 +1,6 @@ +/* +namespace: Parse +expectation: Fail +*/ + +const diff --git a/tests/parser/functions/escape_fail.leo b/tests/parser/functions/escape_fail.leo new file mode 100644 index 0000000000..1e1a7b1d9f --- /dev/null +++ b/tests/parser/functions/escape_fail.leo @@ -0,0 +1,9 @@ +/* +namespace: Parse +expectation: Fail +*/ + +function main() { + let x = 1u8; +} +\ \ No newline at end of file diff --git a/tests/parser/statement/assign.leo b/tests/parser/statement/assign.leo index 4d3db94c85..e5587ae045 100644 --- a/tests/parser/statement/assign.leo +++ b/tests/parser/statement/assign.leo @@ -29,3 +29,162 @@ x[2..] = y; x[..] = y; x.0[0][..] = y; + +x.y = y; + +x.0.y[0].1.y[..][0][1..5][0..3] = y; + + + +x += expr; + +x += (); + +x += x+y; + +x += x(); + + +x[0] += y; + +x[0u32] += y; + +x.0 += y; + +x[1..2][0] += y; + +x[..2][0] += y; + +x[2..][0] += y; + +x[..][0] += y; + +x.0[0][..][0] += y; + +x.y += y; + +x.0.y[0].1.y[..][0][1..5][0..3][0] += y; + + + +x -= expr; + +x -= (); + +x -= x+y; + +x -= x(); + + +x[0] -= y; + +x[0u32] -= y; + +x.0 -= y; + +x[1..2][0] -= y; + +x[..2][0] -= y; + +x[2..][0] -= y; + +x[..][0] -= y; + +x.0[0][..][0] -= y; + +x.y -= y; + +x.0.y[0].1.y[..][0][1..5][0..3][0] -= y; + + + +x *= expr; + +x *= (); + +x *= x+y; + +x *= x(); + + +x[0] *= y; + +x[0u32] *= y; + +x.0 *= y; + +x[1..2][0] *= y; + +x[..2][0] *= y; + +x[2..][0] *= y; + +x[..][0] *= y; + +x.0[0][..][0] *= y; + +x.y *= y; + +x.0.y[0].1.y[..][0][1..5][0..3][0] *= y; + + + +x /= expr; + +x /= (); + +x /= x+y; + +x /= x(); + + +x[0] /= y; + +x[0u32] /= y; + +x.0 /= y; + +x[1..2][0] /= y; + +x[..2][0] /= y; + +x[2..][0] /= y; + +x[..][0] /= y; + +x.0[0][..][0] /= y; + +x.y /= y; + +x.0.y[0].1.y[..][0][1..5][0..3][0] /= y; + + + +x **= expr; + +x **= (); + +x **= x+y; + +x **= x(); + + +x[0] *= y; + +x[0u32] *= y; + +x.0 **= y; + +x[1..2][0] **= y; + +x[..2][0] **= y; + +x[2..][0] **= y; + +x[..][0] **= y; + +x.0[0][..][0] **= y; + +x.y **= y; + +x.0.y[0].1.y[..][0][1..5][0..3][0] **= y; \ No newline at end of file diff --git a/tests/parser/statement/assign_fail.leo b/tests/parser/statement/assign_fail.leo new file mode 100644 index 0000000000..48cc131850 --- /dev/null +++ b/tests/parser/statement/assign_fail.leo @@ -0,0 +1,32 @@ +/* +namespace: ParseStatement +expectation: Fail +*/ + +x::y = y; + +5 = y; + +x + x = y; + +-x = y; + +!x = y; + +a? x : x = y; + +x as u32 = y; + +[x, x, x] = y; + +[x; 3] = y; + +(x, x, x) = y; + +x {x: y, y: z} = y; + +x() = y; + +x.y() = y; + +🦀 = y; \ No newline at end of file diff --git a/tests/parser/statement/console_fail.leo b/tests/parser/statement/console_fail.leo new file mode 100644 index 0000000000..bb9fff5836 --- /dev/null +++ b/tests/parser/statement/console_fail.leo @@ -0,0 +1,8 @@ +/* +namespace: ParseStatement +expectation: Fail +*/ + +console.log(1); + +console.test(); \ No newline at end of file diff --git a/tests/parser/statement/definition.leo b/tests/parser/statement/definition.leo index f78d200b04..1e10103111 100644 --- a/tests/parser/statement/definition.leo +++ b/tests/parser/statement/definition.leo @@ -98,3 +98,8 @@ const (x, y): u32 = x(); let (x,y,) = (); let x: [[u8; 2]; 2] = [[0,0], [0,0]]; + +let x: [u8; (2, 2)] = [[0,0], [0,0]]; + + +let x: address = aleo15u4r0gzjtqzepkgurgn7p3u5kkhs9p74rx6aun3uh2s5std6759svgmg53; diff --git a/tests/parser/statement/definition_fail.leo b/tests/parser/statement/definition_fail.leo index 70c6d47ab6..ad71c18d7e 100644 --- a/tests/parser/statement/definition_fail.leo +++ b/tests/parser/statement/definition_fail.leo @@ -53,6 +53,45 @@ let (,x,y) = (); let (x,,y) = (); +let x: [u8; (2,,)] = [[0,0], [0,0]]; + + +let x: const = expr; + +const x: let = expr; + +let x: mut = expr; + +let + +let x + +let x: + +let x = (a, y]); + +let = 1u8; + +let; + +let x 1u8; + +let x: u8; + +let x: u8 + +let x: = 1; + +let x: [u8] = 1; + +let x: [u8; + +let x: [u8; 1u8] = [1, + +let dbg: u8 = ]; + +let 🦀: u8 = 0; + let (x) = ...; -let (x,) = ...; \ No newline at end of file +let (x,) = ...; diff --git a/tests/parser/statement/expression_fail.leo b/tests/parser/statement/expression_fail.leo new file mode 100644 index 0000000000..98efd8b9e0 --- /dev/null +++ b/tests/parser/statement/expression_fail.leo @@ -0,0 +1,16 @@ +/* +namespace: ParseStatement +expectation: Fail +*/ + +(]; + +[); + +x\y; + +(x,y|; + +x[}; + +(x, y]; diff --git a/tests/test-framework/src/error.rs b/tests/test-framework/src/error.rs index fbf8f8dadd..d540942eab 100644 --- a/tests/test-framework/src/error.rs +++ b/tests/test-framework/src/error.rs @@ -27,19 +27,28 @@ pub struct TestFailure { #[derive(Debug)] pub enum TestError { + Panicked { + test: String, + index: usize, + error: String, + }, UnexpectedOutput { + test: String, index: usize, expected: Value, output: Value, }, PassedAndShouldntHave { + test: String, index: usize, }, FailedAndShouldntHave { + test: String, index: usize, error: String, }, UnexpectedError { + test: String, index: usize, expected: String, output: String, @@ -50,30 +59,64 @@ pub enum TestError { impl fmt::Display for TestError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let format_test = |test: &str| -> String { + if test.len() > 50 { + String::new() + } else { + format!("\n\n{}\n\n", test) + } + }; match self { + TestError::Panicked { test, index, error } => { + write!( + f, + "test #{}: {}encountered a rust panic:\n{}", + index + 1, + format_test(test), + error + ) + } TestError::UnexpectedOutput { + test, index, expected, output, } => { write!( f, - "test #{} expected\n{}\ngot\n{}", + "test #{}: {}expected\n{}\ngot\n{}", index + 1, + format_test(test), serde_yaml::to_string(&expected).expect("serialization failed"), serde_yaml::to_string(&output).expect("serialization failed") ) } - TestError::PassedAndShouldntHave { index } => write!(f, "test #{} passed and shouldn't have", index + 1), - TestError::FailedAndShouldntHave { index, error } => { - write!(f, "test #{} failed and shouldn't have:\n{}", index + 1, error) + TestError::PassedAndShouldntHave { test, index } => { + write!(f, "test #{}: {}passed and shouldn't have", index + 1, format_test(test)) + } + TestError::FailedAndShouldntHave { test, index, error } => { + write!( + f, + "test #{}: {}failed and shouldn't have:\n{}", + index + 1, + format_test(test), + error + ) } TestError::UnexpectedError { + test, expected, output, index, } => { - write!(f, "test #{} expected error\n{}\ngot\n{}", index + 1, expected, output) + write!( + f, + "test #{}: {}expected error\n{}\ngot\n{}", + index + 1, + format_test(test), + expected, + output + ) } TestError::MismatchedTestExpectationLength => write!(f, "invalid number of test expectations"), TestError::MissingTestConfig => write!(f, "missing test config"), @@ -82,18 +125,25 @@ impl fmt::Display for TestError { } pub fn emit_errors( - output: Result<&Value, &str>, + test: &str, + output: &Result, String>, mode: &TestExpectationMode, expected_output: Option, test_index: usize, ) -> Option { match (output, mode) { - (Ok(output), TestExpectationMode::Pass) => { + (Err(e), _) => Some(TestError::Panicked { + test: test.to_string(), + index: test_index, + error: e.to_string(), + }), + (Ok(Ok(output)), TestExpectationMode::Pass) => { // passed and should have if let Some(expected_output) = expected_output.as_ref() { if output != expected_output { // invalid output return Some(TestError::UnexpectedOutput { + test: test.to_string(), index: test_index, expected: expected_output.clone(), output: output.clone(), @@ -102,18 +152,23 @@ pub fn emit_errors( } None } - (Ok(_tokens), TestExpectationMode::Fail) => Some(TestError::PassedAndShouldntHave { index: test_index }), - (Err(err), TestExpectationMode::Pass) => Some(TestError::FailedAndShouldntHave { + (Ok(Ok(_tokens)), TestExpectationMode::Fail) => Some(TestError::PassedAndShouldntHave { + test: test.to_string(), + index: test_index, + }), + (Ok(Err(err)), TestExpectationMode::Pass) => Some(TestError::FailedAndShouldntHave { + test: test.to_string(), error: err.to_string(), index: test_index, }), - (Err(err), TestExpectationMode::Fail) => { + (Ok(Err(err)), TestExpectationMode::Fail) => { let expected_output: Option = expected_output.map(|x| serde_yaml::from_value(x).expect("test expectation deserialize failed")); if let Some(expected_output) = expected_output.as_deref() { if err != expected_output { // invalid output return Some(TestError::UnexpectedError { + test: test.to_string(), expected: expected_output.to_string(), output: err.to_string(), index: test_index, diff --git a/tests/test-framework/src/runner.rs b/tests/test-framework/src/runner.rs index 3865e2a2e3..a1be3677af 100644 --- a/tests/test-framework/src/runner.rs +++ b/tests/test-framework/src/runner.rs @@ -16,8 +16,12 @@ use serde_yaml::Value; use std::{ + any::Any, collections::BTreeMap, + panic::{self, RefUnwindSafe, UnwindSafe}, path::{Path, PathBuf}, + sync::{Arc, Mutex}, + thread, }; use crate::{error::*, fetch::find_tests, output::TestExpectation, test::*}; @@ -36,7 +40,7 @@ pub struct Test { pub config: BTreeMap, } -pub trait Namespace { +pub trait Namespace: UnwindSafe + RefUnwindSafe { fn parse_type(&self) -> ParseType; fn run_test(&self, test: Test) -> Result; @@ -46,6 +50,30 @@ pub trait Runner { fn resolve_namespace(&self, name: &str) -> Option>; } +fn set_hook() -> Arc>> { + let panic_buf = Arc::new(Mutex::new(None)); + let thread_id = thread::current().id(); + panic::set_hook({ + let panic_buf = panic_buf.clone(); + Box::new(move |e| { + if thread::current().id() == thread_id { + *panic_buf.lock().unwrap() = Some(e.to_string()); + } else { + println!("{}", e) + } + }) + }); + panic_buf +} + +fn take_hook( + output: Result, Box>, + panic_buf: Arc>>, +) -> Result, String> { + let _ = panic::take_hook(); + output.map_err(|_| panic_buf.lock().unwrap().take().expect("failed to get panic message")) +} + pub fn run_tests(runner: &T, expectation_category: &str) { std::env::remove_var("LEO_BACKTRACE"); // always remove backtrace so it doesn't clog output files std::env::set_var("LEO_TESTFRAMEWORK", "true"); @@ -149,24 +177,24 @@ pub fn run_tests(runner: &T, expectation_category: &str) { for (i, test) in tests.into_iter().enumerate() { let expected_output = expected_output.as_mut().and_then(|x| x.next()).cloned(); println!("running test {} @ '{}'", test_name, path.to_str().unwrap()); - let output = namespace.run_test(Test { - name: test_name.clone(), - content: test.clone(), - path: path.into(), - config: config.extra.clone(), + let panic_buf = set_hook(); + let leo_output = panic::catch_unwind(|| { + namespace.run_test(Test { + name: test_name.clone(), + content: test.clone(), + path: path.into(), + config: config.extra.clone(), + }) }); - if let Some(error) = emit_errors( - output.as_ref().map_err(|x| &**x), - &config.expectation, - expected_output, - i, - ) { + let output = take_hook(leo_output, panic_buf); + if let Some(error) = emit_errors(&test, &output, &config.expectation, expected_output, i) { fail_tests += 1; errors.push(error); } else { pass_tests += 1; new_outputs.push( output + .unwrap() .as_ref() .map(|x| serde_yaml::to_value(x).expect("serialization failed")) .unwrap_or_else(|e| Value::String(e.clone())),