--- source: full-moon/tests/pass_cases.rs assertion_line: 52 expression: ast.nodes() input_file: full-moon/tests/roblox_cases/pass/compound_assignment --- stmts: - - LocalAssignment: local_token: leading_trivia: [] token: start_position: bytes: 0 line: 1 character: 1 end_position: bytes: 5 line: 1 character: 6 token_type: type: Symbol symbol: local trailing_trivia: - start_position: bytes: 5 line: 1 character: 6 end_position: bytes: 6 line: 1 character: 7 token_type: type: Whitespace characters: " " name_list: pairs: - End: leading_trivia: [] token: start_position: bytes: 6 line: 1 character: 7 end_position: bytes: 7 line: 1 character: 8 token_type: type: Identifier identifier: x trailing_trivia: - start_position: bytes: 7 line: 1 character: 8 end_position: bytes: 8 line: 1 character: 9 token_type: type: Whitespace characters: " " equal_token: leading_trivia: [] token: start_position: bytes: 8 line: 1 character: 9 end_position: bytes: 9 line: 1 character: 10 token_type: type: Symbol symbol: "=" trailing_trivia: - start_position: bytes: 9 line: 1 character: 10 end_position: bytes: 10 line: 1 character: 11 token_type: type: Whitespace characters: " " expr_list: pairs: - End: Number: leading_trivia: [] token: start_position: bytes: 10 line: 1 character: 11 end_position: bytes: 11 line: 1 character: 12 token_type: type: Number text: "1" trailing_trivia: - start_position: bytes: 11 line: 1 character: 12 end_position: bytes: 12 line: 1 character: 12 token_type: type: Whitespace characters: "\n" - ~ - - LocalAssignment: local_token: leading_trivia: [] token: start_position: bytes: 12 line: 2 character: 1 end_position: bytes: 17 line: 2 character: 6 token_type: type: Symbol symbol: local trailing_trivia: - start_position: bytes: 17 line: 2 character: 6 end_position: bytes: 18 line: 2 character: 7 token_type: type: Whitespace characters: " " name_list: pairs: - End: leading_trivia: [] token: start_position: bytes: 18 line: 2 character: 7 end_position: bytes: 19 line: 2 character: 8 token_type: type: Identifier identifier: y trailing_trivia: - start_position: bytes: 19 line: 2 character: 8 end_position: bytes: 20 line: 2 character: 9 token_type: type: Whitespace characters: " " equal_token: leading_trivia: [] token: start_position: bytes: 20 line: 2 character: 9 end_position: bytes: 21 line: 2 character: 10 token_type: type: Symbol symbol: "=" trailing_trivia: - start_position: bytes: 21 line: 2 character: 10 end_position: bytes: 22 line: 2 character: 11 token_type: type: Whitespace characters: " " expr_list: pairs: - End: Number: leading_trivia: [] token: start_position: bytes: 22 line: 2 character: 11 end_position: bytes: 23 line: 2 character: 12 token_type: type: Number text: "2" trailing_trivia: - start_position: bytes: 23 line: 2 character: 12 end_position: bytes: 24 line: 2 character: 12 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: - start_position: bytes: 24 line: 3 character: 1 end_position: bytes: 25 line: 3 character: 1 token_type: type: Whitespace characters: "\n" token: start_position: bytes: 25 line: 4 character: 1 end_position: bytes: 26 line: 4 character: 2 token_type: type: Identifier identifier: x trailing_trivia: - start_position: bytes: 26 line: 4 character: 2 end_position: bytes: 27 line: 4 character: 3 token_type: type: Whitespace characters: " " compound_operator: PlusEqual: leading_trivia: [] token: start_position: bytes: 27 line: 4 character: 3 end_position: bytes: 29 line: 4 character: 5 token_type: type: Symbol symbol: += trailing_trivia: - start_position: bytes: 29 line: 4 character: 5 end_position: bytes: 30 line: 4 character: 6 token_type: type: Whitespace characters: " " rhs: Number: leading_trivia: [] token: start_position: bytes: 30 line: 4 character: 6 end_position: bytes: 31 line: 4 character: 7 token_type: type: Number text: "5" trailing_trivia: - start_position: bytes: 31 line: 4 character: 7 end_position: bytes: 32 line: 4 character: 7 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: [] token: start_position: bytes: 32 line: 5 character: 1 end_position: bytes: 33 line: 5 character: 2 token_type: type: Identifier identifier: x trailing_trivia: - start_position: bytes: 33 line: 5 character: 2 end_position: bytes: 34 line: 5 character: 3 token_type: type: Whitespace characters: " " compound_operator: MinusEqual: leading_trivia: [] token: start_position: bytes: 34 line: 5 character: 3 end_position: bytes: 36 line: 5 character: 5 token_type: type: Symbol symbol: "-=" trailing_trivia: - start_position: bytes: 36 line: 5 character: 5 end_position: bytes: 37 line: 5 character: 6 token_type: type: Whitespace characters: " " rhs: Number: leading_trivia: [] token: start_position: bytes: 37 line: 5 character: 6 end_position: bytes: 38 line: 5 character: 7 token_type: type: Number text: "5" trailing_trivia: - start_position: bytes: 38 line: 5 character: 7 end_position: bytes: 39 line: 5 character: 7 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: [] token: start_position: bytes: 39 line: 6 character: 1 end_position: bytes: 40 line: 6 character: 2 token_type: type: Identifier identifier: x trailing_trivia: - start_position: bytes: 40 line: 6 character: 2 end_position: bytes: 41 line: 6 character: 3 token_type: type: Whitespace characters: " " compound_operator: StarEqual: leading_trivia: [] token: start_position: bytes: 41 line: 6 character: 3 end_position: bytes: 43 line: 6 character: 5 token_type: type: Symbol symbol: "*=" trailing_trivia: - start_position: bytes: 43 line: 6 character: 5 end_position: bytes: 44 line: 6 character: 6 token_type: type: Whitespace characters: " " rhs: Number: leading_trivia: [] token: start_position: bytes: 44 line: 6 character: 6 end_position: bytes: 45 line: 6 character: 7 token_type: type: Number text: "5" trailing_trivia: - start_position: bytes: 45 line: 6 character: 7 end_position: bytes: 46 line: 6 character: 7 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: [] token: start_position: bytes: 46 line: 7 character: 1 end_position: bytes: 47 line: 7 character: 2 token_type: type: Identifier identifier: x trailing_trivia: - start_position: bytes: 47 line: 7 character: 2 end_position: bytes: 48 line: 7 character: 3 token_type: type: Whitespace characters: " " compound_operator: SlashEqual: leading_trivia: [] token: start_position: bytes: 48 line: 7 character: 3 end_position: bytes: 50 line: 7 character: 5 token_type: type: Symbol symbol: /= trailing_trivia: - start_position: bytes: 50 line: 7 character: 5 end_position: bytes: 51 line: 7 character: 6 token_type: type: Whitespace characters: " " rhs: Number: leading_trivia: [] token: start_position: bytes: 51 line: 7 character: 6 end_position: bytes: 52 line: 7 character: 7 token_type: type: Number text: "5" trailing_trivia: - start_position: bytes: 52 line: 7 character: 7 end_position: bytes: 53 line: 7 character: 7 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: [] token: start_position: bytes: 53 line: 8 character: 1 end_position: bytes: 54 line: 8 character: 2 token_type: type: Identifier identifier: x trailing_trivia: - start_position: bytes: 54 line: 8 character: 2 end_position: bytes: 55 line: 8 character: 3 token_type: type: Whitespace characters: " " compound_operator: DoubleSlashEqual: leading_trivia: [] token: start_position: bytes: 55 line: 8 character: 3 end_position: bytes: 58 line: 8 character: 6 token_type: type: Symbol symbol: //= trailing_trivia: - start_position: bytes: 58 line: 8 character: 6 end_position: bytes: 59 line: 8 character: 7 token_type: type: Whitespace characters: " " rhs: Number: leading_trivia: [] token: start_position: bytes: 59 line: 8 character: 7 end_position: bytes: 60 line: 8 character: 8 token_type: type: Number text: "5" trailing_trivia: - start_position: bytes: 60 line: 8 character: 8 end_position: bytes: 61 line: 8 character: 8 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: [] token: start_position: bytes: 61 line: 9 character: 1 end_position: bytes: 62 line: 9 character: 2 token_type: type: Identifier identifier: x trailing_trivia: - start_position: bytes: 62 line: 9 character: 2 end_position: bytes: 63 line: 9 character: 3 token_type: type: Whitespace characters: " " compound_operator: PercentEqual: leading_trivia: [] token: start_position: bytes: 63 line: 9 character: 3 end_position: bytes: 65 line: 9 character: 5 token_type: type: Symbol symbol: "%=" trailing_trivia: - start_position: bytes: 65 line: 9 character: 5 end_position: bytes: 66 line: 9 character: 6 token_type: type: Whitespace characters: " " rhs: Number: leading_trivia: [] token: start_position: bytes: 66 line: 9 character: 6 end_position: bytes: 67 line: 9 character: 7 token_type: type: Number text: "5" trailing_trivia: - start_position: bytes: 67 line: 9 character: 7 end_position: bytes: 68 line: 9 character: 7 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: [] token: start_position: bytes: 68 line: 10 character: 1 end_position: bytes: 69 line: 10 character: 2 token_type: type: Identifier identifier: x trailing_trivia: - start_position: bytes: 69 line: 10 character: 2 end_position: bytes: 70 line: 10 character: 3 token_type: type: Whitespace characters: " " compound_operator: CaretEqual: leading_trivia: [] token: start_position: bytes: 70 line: 10 character: 3 end_position: bytes: 72 line: 10 character: 5 token_type: type: Symbol symbol: ^= trailing_trivia: - start_position: bytes: 72 line: 10 character: 5 end_position: bytes: 73 line: 10 character: 6 token_type: type: Whitespace characters: " " rhs: Number: leading_trivia: [] token: start_position: bytes: 73 line: 10 character: 6 end_position: bytes: 74 line: 10 character: 7 token_type: type: Number text: "5" trailing_trivia: - start_position: bytes: 74 line: 10 character: 7 end_position: bytes: 75 line: 10 character: 7 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: - start_position: bytes: 75 line: 11 character: 1 end_position: bytes: 76 line: 11 character: 1 token_type: type: Whitespace characters: "\n" token: start_position: bytes: 76 line: 12 character: 1 end_position: bytes: 77 line: 12 character: 2 token_type: type: Identifier identifier: x trailing_trivia: - start_position: bytes: 77 line: 12 character: 2 end_position: bytes: 78 line: 12 character: 3 token_type: type: Whitespace characters: " " compound_operator: PlusEqual: leading_trivia: [] token: start_position: bytes: 78 line: 12 character: 3 end_position: bytes: 80 line: 12 character: 5 token_type: type: Symbol symbol: += trailing_trivia: - start_position: bytes: 80 line: 12 character: 5 end_position: bytes: 81 line: 12 character: 6 token_type: type: Whitespace characters: " " rhs: Var: Name: leading_trivia: [] token: start_position: bytes: 81 line: 12 character: 6 end_position: bytes: 82 line: 12 character: 7 token_type: type: Identifier identifier: y trailing_trivia: - start_position: bytes: 82 line: 12 character: 7 end_position: bytes: 83 line: 12 character: 7 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: [] token: start_position: bytes: 83 line: 13 character: 1 end_position: bytes: 84 line: 13 character: 2 token_type: type: Identifier identifier: x trailing_trivia: - start_position: bytes: 84 line: 13 character: 2 end_position: bytes: 85 line: 13 character: 3 token_type: type: Whitespace characters: " " compound_operator: MinusEqual: leading_trivia: [] token: start_position: bytes: 85 line: 13 character: 3 end_position: bytes: 87 line: 13 character: 5 token_type: type: Symbol symbol: "-=" trailing_trivia: - start_position: bytes: 87 line: 13 character: 5 end_position: bytes: 88 line: 13 character: 6 token_type: type: Whitespace characters: " " rhs: Var: Name: leading_trivia: [] token: start_position: bytes: 88 line: 13 character: 6 end_position: bytes: 89 line: 13 character: 7 token_type: type: Identifier identifier: y trailing_trivia: - start_position: bytes: 89 line: 13 character: 7 end_position: bytes: 90 line: 13 character: 7 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: [] token: start_position: bytes: 90 line: 14 character: 1 end_position: bytes: 91 line: 14 character: 2 token_type: type: Identifier identifier: x trailing_trivia: - start_position: bytes: 91 line: 14 character: 2 end_position: bytes: 92 line: 14 character: 3 token_type: type: Whitespace characters: " " compound_operator: StarEqual: leading_trivia: [] token: start_position: bytes: 92 line: 14 character: 3 end_position: bytes: 94 line: 14 character: 5 token_type: type: Symbol symbol: "*=" trailing_trivia: - start_position: bytes: 94 line: 14 character: 5 end_position: bytes: 95 line: 14 character: 6 token_type: type: Whitespace characters: " " rhs: Var: Name: leading_trivia: [] token: start_position: bytes: 95 line: 14 character: 6 end_position: bytes: 96 line: 14 character: 7 token_type: type: Identifier identifier: y trailing_trivia: - start_position: bytes: 96 line: 14 character: 7 end_position: bytes: 97 line: 14 character: 7 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: [] token: start_position: bytes: 97 line: 15 character: 1 end_position: bytes: 98 line: 15 character: 2 token_type: type: Identifier identifier: x trailing_trivia: - start_position: bytes: 98 line: 15 character: 2 end_position: bytes: 99 line: 15 character: 3 token_type: type: Whitespace characters: " " compound_operator: SlashEqual: leading_trivia: [] token: start_position: bytes: 99 line: 15 character: 3 end_position: bytes: 101 line: 15 character: 5 token_type: type: Symbol symbol: /= trailing_trivia: - start_position: bytes: 101 line: 15 character: 5 end_position: bytes: 102 line: 15 character: 6 token_type: type: Whitespace characters: " " rhs: Var: Name: leading_trivia: [] token: start_position: bytes: 102 line: 15 character: 6 end_position: bytes: 103 line: 15 character: 7 token_type: type: Identifier identifier: y trailing_trivia: - start_position: bytes: 103 line: 15 character: 7 end_position: bytes: 104 line: 15 character: 7 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: [] token: start_position: bytes: 104 line: 16 character: 1 end_position: bytes: 105 line: 16 character: 2 token_type: type: Identifier identifier: x trailing_trivia: - start_position: bytes: 105 line: 16 character: 2 end_position: bytes: 106 line: 16 character: 3 token_type: type: Whitespace characters: " " compound_operator: DoubleSlashEqual: leading_trivia: [] token: start_position: bytes: 106 line: 16 character: 3 end_position: bytes: 109 line: 16 character: 6 token_type: type: Symbol symbol: //= trailing_trivia: - start_position: bytes: 109 line: 16 character: 6 end_position: bytes: 110 line: 16 character: 7 token_type: type: Whitespace characters: " " rhs: Var: Name: leading_trivia: [] token: start_position: bytes: 110 line: 16 character: 7 end_position: bytes: 111 line: 16 character: 8 token_type: type: Identifier identifier: y trailing_trivia: - start_position: bytes: 111 line: 16 character: 8 end_position: bytes: 112 line: 16 character: 8 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: [] token: start_position: bytes: 112 line: 17 character: 1 end_position: bytes: 113 line: 17 character: 2 token_type: type: Identifier identifier: x trailing_trivia: - start_position: bytes: 113 line: 17 character: 2 end_position: bytes: 114 line: 17 character: 3 token_type: type: Whitespace characters: " " compound_operator: PercentEqual: leading_trivia: [] token: start_position: bytes: 114 line: 17 character: 3 end_position: bytes: 116 line: 17 character: 5 token_type: type: Symbol symbol: "%=" trailing_trivia: - start_position: bytes: 116 line: 17 character: 5 end_position: bytes: 117 line: 17 character: 6 token_type: type: Whitespace characters: " " rhs: Var: Name: leading_trivia: [] token: start_position: bytes: 117 line: 17 character: 6 end_position: bytes: 118 line: 17 character: 7 token_type: type: Identifier identifier: y trailing_trivia: - start_position: bytes: 118 line: 17 character: 7 end_position: bytes: 119 line: 17 character: 7 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: [] token: start_position: bytes: 119 line: 18 character: 1 end_position: bytes: 120 line: 18 character: 2 token_type: type: Identifier identifier: x trailing_trivia: - start_position: bytes: 120 line: 18 character: 2 end_position: bytes: 121 line: 18 character: 3 token_type: type: Whitespace characters: " " compound_operator: CaretEqual: leading_trivia: [] token: start_position: bytes: 121 line: 18 character: 3 end_position: bytes: 123 line: 18 character: 5 token_type: type: Symbol symbol: ^= trailing_trivia: - start_position: bytes: 123 line: 18 character: 5 end_position: bytes: 124 line: 18 character: 6 token_type: type: Whitespace characters: " " rhs: Var: Name: leading_trivia: [] token: start_position: bytes: 124 line: 18 character: 6 end_position: bytes: 125 line: 18 character: 7 token_type: type: Identifier identifier: y trailing_trivia: - start_position: bytes: 125 line: 18 character: 7 end_position: bytes: 126 line: 18 character: 7 token_type: type: Whitespace characters: "\n" - ~ - - LocalAssignment: local_token: leading_trivia: - start_position: bytes: 126 line: 19 character: 1 end_position: bytes: 127 line: 19 character: 1 token_type: type: Whitespace characters: "\n" token: start_position: bytes: 127 line: 20 character: 1 end_position: bytes: 132 line: 20 character: 6 token_type: type: Symbol symbol: local trailing_trivia: - start_position: bytes: 132 line: 20 character: 6 end_position: bytes: 133 line: 20 character: 7 token_type: type: Whitespace characters: " " name_list: pairs: - End: leading_trivia: [] token: start_position: bytes: 133 line: 20 character: 7 end_position: bytes: 137 line: 20 character: 11 token_type: type: Identifier identifier: str1 trailing_trivia: - start_position: bytes: 137 line: 20 character: 11 end_position: bytes: 138 line: 20 character: 12 token_type: type: Whitespace characters: " " equal_token: leading_trivia: [] token: start_position: bytes: 138 line: 20 character: 12 end_position: bytes: 139 line: 20 character: 13 token_type: type: Symbol symbol: "=" trailing_trivia: - start_position: bytes: 139 line: 20 character: 13 end_position: bytes: 140 line: 20 character: 14 token_type: type: Whitespace characters: " " expr_list: pairs: - End: String: leading_trivia: [] token: start_position: bytes: 140 line: 20 character: 14 end_position: bytes: 149 line: 20 character: 23 token_type: type: StringLiteral literal: "Hello, " quote_type: Double trailing_trivia: - start_position: bytes: 149 line: 20 character: 23 end_position: bytes: 150 line: 20 character: 23 token_type: type: Whitespace characters: "\n" - ~ - - LocalAssignment: local_token: leading_trivia: [] token: start_position: bytes: 150 line: 21 character: 1 end_position: bytes: 155 line: 21 character: 6 token_type: type: Symbol symbol: local trailing_trivia: - start_position: bytes: 155 line: 21 character: 6 end_position: bytes: 156 line: 21 character: 7 token_type: type: Whitespace characters: " " name_list: pairs: - End: leading_trivia: [] token: start_position: bytes: 156 line: 21 character: 7 end_position: bytes: 160 line: 21 character: 11 token_type: type: Identifier identifier: str2 trailing_trivia: - start_position: bytes: 160 line: 21 character: 11 end_position: bytes: 161 line: 21 character: 12 token_type: type: Whitespace characters: " " equal_token: leading_trivia: [] token: start_position: bytes: 161 line: 21 character: 12 end_position: bytes: 162 line: 21 character: 13 token_type: type: Symbol symbol: "=" trailing_trivia: - start_position: bytes: 162 line: 21 character: 13 end_position: bytes: 163 line: 21 character: 14 token_type: type: Whitespace characters: " " expr_list: pairs: - End: String: leading_trivia: [] token: start_position: bytes: 163 line: 21 character: 14 end_position: bytes: 171 line: 21 character: 22 token_type: type: StringLiteral literal: world! quote_type: Double trailing_trivia: - start_position: bytes: 171 line: 21 character: 22 end_position: bytes: 172 line: 21 character: 22 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: - start_position: bytes: 172 line: 22 character: 1 end_position: bytes: 173 line: 22 character: 1 token_type: type: Whitespace characters: "\n" token: start_position: bytes: 173 line: 23 character: 1 end_position: bytes: 177 line: 23 character: 5 token_type: type: Identifier identifier: str1 trailing_trivia: - start_position: bytes: 177 line: 23 character: 5 end_position: bytes: 178 line: 23 character: 6 token_type: type: Whitespace characters: " " compound_operator: TwoDotsEqual: leading_trivia: [] token: start_position: bytes: 178 line: 23 character: 6 end_position: bytes: 181 line: 23 character: 9 token_type: type: Symbol symbol: "..=" trailing_trivia: - start_position: bytes: 181 line: 23 character: 9 end_position: bytes: 182 line: 23 character: 10 token_type: type: Whitespace characters: " " rhs: String: leading_trivia: [] token: start_position: bytes: 182 line: 23 character: 10 end_position: bytes: 190 line: 23 character: 18 token_type: type: StringLiteral literal: world! quote_type: Double trailing_trivia: - start_position: bytes: 190 line: 23 character: 18 end_position: bytes: 191 line: 23 character: 18 token_type: type: Whitespace characters: "\n" - ~ - - CompoundAssignment: lhs: Name: leading_trivia: [] token: start_position: bytes: 191 line: 24 character: 1 end_position: bytes: 195 line: 24 character: 5 token_type: type: Identifier identifier: str1 trailing_trivia: - start_position: bytes: 195 line: 24 character: 5 end_position: bytes: 196 line: 24 character: 6 token_type: type: Whitespace characters: " " compound_operator: TwoDotsEqual: leading_trivia: [] token: start_position: bytes: 196 line: 24 character: 6 end_position: bytes: 199 line: 24 character: 9 token_type: type: Symbol symbol: "..=" trailing_trivia: - start_position: bytes: 199 line: 24 character: 9 end_position: bytes: 200 line: 24 character: 10 token_type: type: Whitespace characters: " " rhs: Var: Name: leading_trivia: [] token: start_position: bytes: 200 line: 24 character: 10 end_position: bytes: 204 line: 24 character: 14 token_type: type: Identifier identifier: str2 trailing_trivia: [] - ~