Dec 06 01:44:29.339 INFO testing df5602/interpreter_tutorial against try#6eb0fd3ac58f9b16bddb9924a17c3b6c156aa468 for pr-56514 Dec 06 01:44:29.339 INFO running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/pr-56514/worker-5/try#6eb0fd3ac58f9b16bddb9924a17c3b6c156aa468:/target:rw,Z" "-v" "/mnt/big/crater/work/local/test-source/worker-5/pr-56514/try#6eb0fd3ac58f9b16bddb9924a17c3b6c156aa468:/source:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/source" "-e" "USER_ID=1000" "-e" "CMD=cargo +6eb0fd3ac58f9b16bddb9924a17c3b6c156aa468-alt build --frozen" "-e" "CARGO_TARGET_DIR=/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/cargo-home" "-e" "RUSTUP_HOME=/rustup-home" "-m" "1536M" "--network" "none" "crater"` Dec 06 01:44:29.572 INFO [stdout] c20413a54a26d9d4f2cc51562788fd039c9fb365702f6852f2f20e1e83953a70 Dec 06 01:44:29.574 INFO running `"docker" "start" "-a" "c20413a54a26d9d4f2cc51562788fd039c9fb365702f6852f2f20e1e83953a70"` Dec 06 01:44:29.946 INFO [stderr] usermod: no changes Dec 06 01:44:29.980 INFO [stderr] Compiling leftpad v0.2.0 Dec 06 01:44:30.446 INFO [stderr] Compiling interpreter_tutorial v0.1.0 (/source) Dec 06 01:44:30.761 INFO [stderr] warning: unused macro definition Dec 06 01:44:30.761 INFO [stderr] --> src/ast/macros.rs:1:1 Dec 06 01:44:30.761 INFO [stderr] | Dec 06 01:44:30.761 INFO [stderr] 1 | / macro_rules! int_node { Dec 06 01:44:30.761 INFO [stderr] 2 | | ($ast:expr, $value:expr) => {{ Dec 06 01:44:30.761 INFO [stderr] 3 | | let node = NumberNode::new(Value::Integer($value), Dec 06 01:44:30.761 INFO [stderr] 4 | | Token::new(TokenType::IntegerLiteral, Dec 06 01:44:30.761 INFO [stderr] ... | Dec 06 01:44:30.761 INFO [stderr] 8 | | }} Dec 06 01:44:30.761 INFO [stderr] 9 | | } Dec 06 01:44:30.761 INFO [stderr] | |_^ Dec 06 01:44:30.761 INFO [stderr] | Dec 06 01:44:30.762 INFO [stderr] = note: #[warn(unused_macros)] on by default Dec 06 01:44:30.762 INFO [stderr] Dec 06 01:44:30.762 INFO [stderr] warning: unused macro definition Dec 06 01:44:30.762 INFO [stderr] --> src/ast/macros.rs:11:1 Dec 06 01:44:30.762 INFO [stderr] | Dec 06 01:44:30.762 INFO [stderr] 11 | / macro_rules! real_node { Dec 06 01:44:30.762 INFO [stderr] 12 | | ($ast:expr, $value:expr) => {{ Dec 06 01:44:30.762 INFO [stderr] 13 | | let node = NumberNode::new(Value::Real($value), Dec 06 01:44:30.762 INFO [stderr] 14 | | Token::new(TokenType::RealLiteral, Dec 06 01:44:30.762 INFO [stderr] ... | Dec 06 01:44:30.762 INFO [stderr] 18 | | }} Dec 06 01:44:30.762 INFO [stderr] 19 | | } Dec 06 01:44:30.762 INFO [stderr] | |_^ Dec 06 01:44:30.762 INFO [stderr] Dec 06 01:44:30.762 INFO [stderr] warning: unused macro definition Dec 06 01:44:30.762 INFO [stderr] --> src/ast/macros.rs:21:1 Dec 06 01:44:30.762 INFO [stderr] | Dec 06 01:44:30.762 INFO [stderr] 21 | / macro_rules! binop_node { Dec 06 01:44:30.762 INFO [stderr] 22 | | ($ast:expr, $left:expr, $right:expr, $op:expr) => {{ Dec 06 01:44:30.762 INFO [stderr] 23 | | let node = BinaryOperatorNode::new($left, $right, $op, Dec 06 01:44:30.762 INFO [stderr] 24 | | Token::new(TokenType::Operator, Dec 06 01:44:30.762 INFO [stderr] ... | Dec 06 01:44:30.762 INFO [stderr] 28 | | }} Dec 06 01:44:30.762 INFO [stderr] 29 | | } Dec 06 01:44:30.762 INFO [stderr] | |_^ Dec 06 01:44:30.762 INFO [stderr] Dec 06 01:44:30.762 INFO [stderr] warning: unused macro definition Dec 06 01:44:30.762 INFO [stderr] --> src/ast/macros.rs:31:1 Dec 06 01:44:30.762 INFO [stderr] | Dec 06 01:44:30.762 INFO [stderr] 31 | / macro_rules! unop_node { Dec 06 01:44:30.762 INFO [stderr] 32 | | ($ast:expr, $operand:expr, $op:expr) => {{ Dec 06 01:44:30.762 INFO [stderr] 33 | | let node = UnaryOperatorNode::new($operand, $op, Dec 06 01:44:30.762 INFO [stderr] 34 | | Token::new(TokenType::Operator, Dec 06 01:44:30.762 INFO [stderr] ... | Dec 06 01:44:30.762 INFO [stderr] 38 | | }} Dec 06 01:44:30.762 INFO [stderr] 39 | | } Dec 06 01:44:30.762 INFO [stderr] | |_^ Dec 06 01:44:30.762 INFO [stderr] Dec 06 01:44:30.762 INFO [stderr] warning: unused macro definition Dec 06 01:44:30.762 INFO [stderr] --> src/ast/macros.rs:41:1 Dec 06 01:44:30.762 INFO [stderr] | Dec 06 01:44:30.762 INFO [stderr] 41 | / macro_rules! cmpd_stmt_node { Dec 06 01:44:30.762 INFO [stderr] 42 | | ($ast:expr, $statements:expr) => {{ Dec 06 01:44:30.762 INFO [stderr] 43 | | let node = CompoundStmtNode::new($statements, Dec 06 01:44:30.762 INFO [stderr] 44 | | Token::new(TokenType::Begin, None, Span::default()), Dec 06 01:44:30.762 INFO [stderr] ... | Dec 06 01:44:30.762 INFO [stderr] 47 | | }} Dec 06 01:44:30.762 INFO [stderr] 48 | | } Dec 06 01:44:30.762 INFO [stderr] | |_^ Dec 06 01:44:30.762 INFO [stderr] Dec 06 01:44:30.762 INFO [stderr] warning: unused macro definition Dec 06 01:44:30.762 INFO [stderr] --> src/ast/macros.rs:50:1 Dec 06 01:44:30.762 INFO [stderr] | Dec 06 01:44:30.762 INFO [stderr] 50 | / macro_rules! var_node { Dec 06 01:44:30.762 INFO [stderr] 51 | | ($ast:expr, $name:expr) => {{ Dec 06 01:44:30.762 INFO [stderr] 52 | | let node = VariableNode::new($name.to_string(), Dec 06 01:44:30.762 INFO [stderr] 53 | | Token::new(TokenType::Identifier, Dec 06 01:44:30.762 INFO [stderr] ... | Dec 06 01:44:30.762 INFO [stderr] 57 | | }} Dec 06 01:44:30.762 INFO [stderr] 58 | | } Dec 06 01:44:30.762 INFO [stderr] | |_^ Dec 06 01:44:30.762 INFO [stderr] Dec 06 01:44:30.762 INFO [stderr] warning: unused macro definition Dec 06 01:44:30.762 INFO [stderr] --> src/ast/macros.rs:60:1 Dec 06 01:44:30.762 INFO [stderr] | Dec 06 01:44:30.762 INFO [stderr] 60 | / macro_rules! assign_node { Dec 06 01:44:30.762 INFO [stderr] 61 | | ($ast:expr, $var:expr, $expr:expr) => {{ Dec 06 01:44:30.762 INFO [stderr] 62 | | let node = AssignmentStmtNode::new($var, $expr, Dec 06 01:44:30.762 INFO [stderr] 63 | | Token::new(TokenType::Assign, None, Span::default())); Dec 06 01:44:30.762 INFO [stderr] 64 | | $ast.add_node(node) Dec 06 01:44:30.762 INFO [stderr] 65 | | }} Dec 06 01:44:30.762 INFO [stderr] 66 | | } Dec 06 01:44:30.762 INFO [stderr] | |_^ Dec 06 01:44:30.762 INFO [stderr] Dec 06 01:44:30.762 INFO [stderr] warning: unused macro definition Dec 06 01:44:30.762 INFO [stderr] --> src/ast/macros.rs:68:1 Dec 06 01:44:30.762 INFO [stderr] | Dec 06 01:44:30.762 INFO [stderr] 68 | / macro_rules! block_node { Dec 06 01:44:30.762 INFO [stderr] 69 | | ($ast:expr, $declarations:expr, $cmpd_stmt:expr) => {{ Dec 06 01:44:30.762 INFO [stderr] 70 | | let node = BlockNode::new($declarations, $cmpd_stmt); Dec 06 01:44:30.762 INFO [stderr] 71 | | $ast.add_node(node) Dec 06 01:44:30.762 INFO [stderr] 72 | | }} Dec 06 01:44:30.762 INFO [stderr] 73 | | } Dec 06 01:44:30.762 INFO [stderr] | |_^ Dec 06 01:44:30.762 INFO [stderr] Dec 06 01:44:30.762 INFO [stderr] warning: unused macro definition Dec 06 01:44:30.762 INFO [stderr] --> src/ast/macros.rs:75:1 Dec 06 01:44:30.762 INFO [stderr] | Dec 06 01:44:30.762 INFO [stderr] 75 | / macro_rules! type_node { Dec 06 01:44:30.762 INFO [stderr] 76 | | ($ast:expr, $type_spec:expr) => {{ Dec 06 01:44:30.762 INFO [stderr] 77 | | let node = TypeNode::new($type_spec, Dec 06 01:44:30.762 INFO [stderr] 78 | | Token::new(TokenType::TypeSpecifier, Dec 06 01:44:30.762 INFO [stderr] ... | Dec 06 01:44:30.762 INFO [stderr] 82 | | }} Dec 06 01:44:30.762 INFO [stderr] 83 | | } Dec 06 01:44:30.762 INFO [stderr] | |_^ Dec 06 01:44:30.762 INFO [stderr] Dec 06 01:44:30.762 INFO [stderr] warning: unused macro definition Dec 06 01:44:30.762 INFO [stderr] --> src/ast/macros.rs:85:1 Dec 06 01:44:30.762 INFO [stderr] | Dec 06 01:44:30.762 INFO [stderr] 85 | / macro_rules! var_decl_node { Dec 06 01:44:30.762 INFO [stderr] 86 | | ($ast:expr, $var_name:expr, $type_spec:expr) => {{ Dec 06 01:44:30.762 INFO [stderr] 87 | | let node = VariableDeclNode::new($var_name, $type_spec); Dec 06 01:44:30.762 INFO [stderr] 88 | | $ast.add_node(node) Dec 06 01:44:30.762 INFO [stderr] 89 | | }} Dec 06 01:44:30.762 INFO [stderr] 90 | | } Dec 06 01:44:30.762 INFO [stderr] | |_^ Dec 06 01:44:30.762 INFO [stderr] Dec 06 01:44:30.762 INFO [stderr] warning: unused macro definition Dec 06 01:44:30.762 INFO [stderr] --> src/ast/macros.rs:92:1 Dec 06 01:44:30.763 INFO [stderr] | Dec 06 01:44:30.763 INFO [stderr] 92 | / macro_rules! program_node { Dec 06 01:44:30.763 INFO [stderr] 93 | | ($ast:expr, $name:expr, $variable:expr, $block:expr) => {{ Dec 06 01:44:30.763 INFO [stderr] 94 | | let node = ProgramNode::new($name.to_string(), $variable, $block); Dec 06 01:44:30.763 INFO [stderr] 95 | | $ast.add_node(node) Dec 06 01:44:30.763 INFO [stderr] 96 | | }} Dec 06 01:44:30.763 INFO [stderr] 97 | | } Dec 06 01:44:30.763 INFO [stderr] | |_^ Dec 06 01:44:30.763 INFO [stderr] Dec 06 01:44:32.440 INFO [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.48s Dec 06 01:44:32.442 INFO [stderr] su: No module specific data is present Dec 06 01:44:32.790 INFO running `"docker" "inspect" "c20413a54a26d9d4f2cc51562788fd039c9fb365702f6852f2f20e1e83953a70"` Dec 06 01:44:32.887 INFO running `"docker" "rm" "-f" "c20413a54a26d9d4f2cc51562788fd039c9fb365702f6852f2f20e1e83953a70"` Dec 06 01:44:33.020 INFO [stdout] c20413a54a26d9d4f2cc51562788fd039c9fb365702f6852f2f20e1e83953a70 Dec 06 01:44:33.025 INFO running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/pr-56514/worker-5/try#6eb0fd3ac58f9b16bddb9924a17c3b6c156aa468:/target:rw,Z" "-v" "/mnt/big/crater/work/local/test-source/worker-5/pr-56514/try#6eb0fd3ac58f9b16bddb9924a17c3b6c156aa468:/source:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/source" "-e" "USER_ID=1000" "-e" "CMD=cargo +6eb0fd3ac58f9b16bddb9924a17c3b6c156aa468-alt test --frozen --no-run" "-e" "CARGO_TARGET_DIR=/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/cargo-home" "-e" "RUSTUP_HOME=/rustup-home" "-m" "1536M" "--network" "none" "crater"` Dec 06 01:44:33.237 INFO [stdout] 8dceffbc154c99abbddc351844c8d2388a2aab14306e2de037c229a2d4497dcf Dec 06 01:44:33.238 INFO running `"docker" "start" "-a" "8dceffbc154c99abbddc351844c8d2388a2aab14306e2de037c229a2d4497dcf"` Dec 06 01:44:33.696 INFO [stderr] usermod: no changes Dec 06 01:44:33.731 INFO [stderr] Compiling interpreter_tutorial v0.1.0 (/source) Dec 06 01:44:34.394 INFO [stderr] warning: unnecessary parentheses around function argument Dec 06 01:44:34.394 INFO [stderr] --> src/ast/assignment_stmt_node.rs:251:50 Dec 06 01:44:34.394 INFO [stderr] | Dec 06 01:44:34.394 INFO [stderr] 251 | real_node!(ast, (i64::MAX as f64 + 1000.0))); Dec 06 01:44:34.394 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses Dec 06 01:44:34.394 INFO [stderr] | Dec 06 01:44:34.394 INFO [stderr] = note: #[warn(unused_parens)] on by default Dec 06 01:44:34.394 INFO [stderr] Dec 06 01:44:34.394 INFO [stderr] warning: unnecessary parentheses around function argument Dec 06 01:44:34.394 INFO [stderr] --> src/ast/assignment_stmt_node.rs:251:50 Dec 06 01:44:34.394 INFO [stderr] | Dec 06 01:44:34.394 INFO [stderr] 251 | real_node!(ast, (i64::MAX as f64 + 1000.0))); Dec 06 01:44:34.394 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses Dec 06 01:44:34.394 INFO [stderr] Dec 06 01:44:39.746 INFO [stderr] Finished dev [unoptimized + debuginfo] target(s) in 6.03s Dec 06 01:44:39.749 INFO [stderr] su: No module specific data is present Dec 06 01:44:40.106 INFO running `"docker" "inspect" "8dceffbc154c99abbddc351844c8d2388a2aab14306e2de037c229a2d4497dcf"` Dec 06 01:44:40.242 INFO running `"docker" "rm" "-f" "8dceffbc154c99abbddc351844c8d2388a2aab14306e2de037c229a2d4497dcf"` Dec 06 01:44:40.358 INFO [stdout] 8dceffbc154c99abbddc351844c8d2388a2aab14306e2de037c229a2d4497dcf Dec 06 01:44:40.366 INFO running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/pr-56514/worker-5/try#6eb0fd3ac58f9b16bddb9924a17c3b6c156aa468:/target:rw,Z" "-v" "/mnt/big/crater/work/local/test-source/worker-5/pr-56514/try#6eb0fd3ac58f9b16bddb9924a17c3b6c156aa468:/source:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/source" "-e" "USER_ID=1000" "-e" "CMD=cargo +6eb0fd3ac58f9b16bddb9924a17c3b6c156aa468-alt test --frozen" "-e" "CARGO_TARGET_DIR=/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/cargo-home" "-e" "RUSTUP_HOME=/rustup-home" "-m" "1536M" "--network" "none" "crater"` Dec 06 01:44:40.504 INFO [stdout] aec99d7dbb18375380cadbf3c4f8bce85df2c3e96ea472cddccdcba3c8504cd7 Dec 06 01:44:40.506 INFO running `"docker" "start" "-a" "aec99d7dbb18375380cadbf3c4f8bce85df2c3e96ea472cddccdcba3c8504cd7"` Dec 06 01:44:41.216 INFO [stderr] usermod: no changes Dec 06 01:44:41.247 INFO [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.02s Dec 06 01:44:41.247 INFO [stderr] Running /target/debug/deps/interpreter_tutorial-050a88ab0ae898e1 Dec 06 01:44:41.250 INFO [stdout] Dec 06 01:44:41.250 INFO [stdout] running 322 tests Dec 06 01:44:41.250 INFO [stdout] test ast::assignment_stmt_node::tests::assignment_statement_node_get_span_returns_span ... ok Dec 06 01:44:41.250 INFO [stdout] test ast::assignment_stmt_node::tests::assignment_statement_node_get_parent_returns_none_when_node_has_no_parent ... ok Dec 06 01:44:41.250 INFO [stdout] test ast::assignment_stmt_node::tests::assignment_statement_node_get_children_returns_variable_and_expression ... ok Dec 06 01:44:41.251 INFO [stdout] test ast::assignment_stmt_node::tests::assignment_statement_node_visit_converts_the_expression_to_target_type_integer ... ok Dec 06 01:44:41.251 INFO [stdout] test ast::assignment_stmt_node::tests::assignment_statement_node_visit_casting_to_integer_with_overflow_returns_error ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_get_children_returns_left_and_right_children ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::assignment_stmt_node::tests::assignment_statement_node_get_value_returns_none ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_get_parent_returns_none_when_node_has_no_parent ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::assignment_stmt_node::tests::assignment_statement_node_set_parent_fails_when_node_already_has_parent ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::assignment_stmt_node::tests::assignment_statement_node_set_parent_sets_parent_node ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_get_span_returns_span ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::assignment_stmt_node::tests::assignment_statement_node_visit_converts_the_expression_to_target_type_real ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_get_value_returns_operator_value ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::assignment_stmt_node::tests::assignment_statement_node_visit_updates_entry_in_symbol_table_1 ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_set_parent_fails_when_node_already_has_parent ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::assignment_stmt_node::tests::assignment_statement_node_visit_updates_entry_in_symbol_table_2 ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_visit_returns_error_when_subtraction_overflows ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_visit_returns_product_of_integer_nodes_when_op_is_multiplication ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_visit_returns_error_when_multiplication_overflows ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_set_parent_sets_parent_node ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_visit_integer_div_gives_floored_quotient_if_one_operand_is_real ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_visit_returns_real_product_if_at_least_one_operand_is_real ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_visit_returns_error_when_addition_overflows ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_visit_returns_difference_of_integer_nodes_when_op_is_subtraction ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_visit_returns_error_when_division_overflows ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_visit_returns_error_when_op_is_division_and_rhs_is_zero ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_visit_returns_quotient_of_integer_nodes_when_op_is_int_division ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_visit_returns_real_difference_if_at_least_one_operand_is_real ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_visit_returns_sum_of_integer_nodes_when_op_is_addition ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::block_node::tests::block_node_get_value_returns_none ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_visit_returns_real_sum_if_at_least_one_operand_is_a_real ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::block_node::tests::block_node_set_parent_fails_when_node_already_has_parent ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::binary_operator_node::tests::binary_operator_node_visit_returns_quotient_of_nodes_when_op_is_float_division ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::block_node::tests::block_node_visit_returns_error_when_visited_declaration_returns_error ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::block_node::tests::block_node_set_parent_sets_parent_node ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::block_node::tests::block_node_visit_returns_void ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::block_node::tests::block_node_visit_visits_compound_statement ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::block_node::tests::block_node_visit_visits_declarations ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::compound_stmt_node::tests::compound_statement_node_get_children_returns_statements ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::compound_stmt_node::tests::compound_statement_node_get_parent_returns_none_when_node_has_no_parent ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::compound_stmt_node::tests::compound_statement_node_get_span_returns_span ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::compound_stmt_node::tests::compound_statement_node_get_value_returns_none ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::compound_stmt_node::tests::compound_statement_node_set_parent_fails_when_node_already_has_parent ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::compound_stmt_node::tests::compound_statement_node_set_parent_sets_parent_node ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::number_node::tests::number_node_get_value_returns_integer_value_if_it_contains_integer_value ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::compound_stmt_node::tests::compound_statement_node_visit_returns_void ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::number_node::tests::number_node_get_children_returns_no_children ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::number_node::tests::number_node_get_parent_returns_none_when_node_has_no_parent ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::number_node::tests::number_node_get_span_returns_span ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::block_node::tests::block_node_get_parent_returns_none_when_node_has_no_parent ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::block_node::tests::block_node_get_children_returns_declarations_and_compound_statement ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::number_node::tests::number_node_set_parent_sets_parent_node ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::block_node::tests::block_node_get_span_returns_span ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::number_node::tests::number_node_new_should_set_span_to_token_span ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::number_node::tests::number_node_set_parent_fails_when_node_already_has_parent ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::program_node::tests::program_node_get_children_returns_variable_and_block_nodes ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::number_node::tests::number_node_get_value_returns_real_value_if_it_contains_real_value ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::number_node::tests::number_node_visit_returns_integer_value_if_node_contains_integer_value ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::number_node::tests::number_node_visit_returns_real_value_if_node_contains_real_value ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::program_node::tests::program_node_get_span_returns_span ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::program_node::tests::program_node_get_value_returns_name ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::program_node::tests::program_node_set_parent_fails_when_node_already_has_parent ... ok Dec 06 01:44:41.257 INFO [stdout] test ast::program_node::tests::program_node_get_parent_returns_none_when_node_has_no_parent ... ok Dec 06 01:44:41.260 INFO [stdout] test ast::program_node::tests::program_node_visit_visits_block ... ok Dec 06 01:44:41.264 INFO [stdout] test ast::tests::ast_add_node_parent_links_are_updated_when_node_with_child_links_is_added ... ok Dec 06 01:44:41.264 INFO [stdout] test ast::tests::ast_add_node_creates_non_contiguous_graph_when_two_unrelated_nodes_are_added ... ok Dec 06 01:44:41.264 INFO [stdout] test ast::tests::ast_add_node_creates_contiguous_graph_when_first_node_is_added ... ok Dec 06 01:44:41.264 INFO [stdout] test ast::tests::ast_add_node_create_contiguous_graph_when_non_connected_node_is_child_of_connected_node ... ok Dec 06 01:44:41.264 INFO [stdout] test ast::program_node::tests::program_node_set_parent_sets_parent_node ... ok Dec 06 01:44:41.265 INFO [stdout] test ast::program_node::tests::program_node_visit_returns_void ... ok Dec 06 01:44:41.268 INFO [stdout] test ast::tests::ast_newly_created_graph_should_have_no_root ... ok Dec 06 01:44:41.268 INFO [stdout] test ast::tests::ast_add_node_root_points_to_first_added_element_when_two_unrelated_nodes_are_added ... ok Dec 06 01:44:41.268 INFO [stdout] test ast::tests::ast_add_node_sets_root_to_inserted_node_when_first_node_is_added ... ok Dec 06 01:44:41.268 INFO [stdout] test ast::tests::ast_add_node_sets_root_to_parent_node_when_parent_of_root_is_set ... ok Dec 06 01:44:41.269 INFO [stdout] test ast::tests::ast_graph_with_two_disconnected_graphs_is_not_contiguous ... ok Dec 06 01:44:41.269 INFO [stdout] test ast::tests::ast_add_node_returns_zero_after_first_element_is_added ... ok Dec 06 01:44:41.269 INFO [stdout] test ast::tests::ast_add_node_returns_one_after_second_element_is_added ... ok Dec 06 01:44:41.269 INFO [stdout] test ast::type_node::tests::type_node_new_should_set_span_to_token_span ... ok Dec 06 01:44:41.269 INFO [stdout] test ast::type_node::tests::type_node_set_parent_sets_parent_node ... ok Dec 06 01:44:41.269 INFO [stdout] test ast::type_node::tests::type_node_set_parent_fails_when_node_already_has_parent ... ok Dec 06 01:44:41.269 INFO [stdout] test ast::type_node::tests::type_node_visit_returns_void ... ok Dec 06 01:44:41.269 INFO [stdout] test ast::unary_operator_node::tests::unary_operator_node_get_children_returns_operand ... ok Dec 06 01:44:41.270 INFO [stdout] test ast::unary_operator_node::tests::unary_operator_node_get_span_returns_span ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::unary_operator_node::tests::unary_operator_node_get_parent_returns_none_when_node_has_no_parent ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::unary_operator_node::tests::unary_operator_node_get_value_returns_operator_value ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::unary_operator_node::tests::unary_operator_node_set_parent_sets_parent_node ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::unary_operator_node::tests::unary_operator_node_visit_returns_error_when_subtraction_overflows ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::type_node::tests::type_node_set_span_sets_span ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::unary_operator_node::tests::unary_operator_node_visit_returns_integer_operand_when_op_is_addition ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::unary_operator_node::tests::unary_operator_node_visit_returns_negative_integer_operand_when_op_is_subtraction ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::unary_operator_node::tests::unary_operator_node_visit_returns_negative_real_operand_when_op_is_subtraction ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::unary_operator_node::tests::unary_operator_node_visit_returns_real_operand_when_op_is_addition ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::variable_decl_node::tests::variable_decl_node_get_children_returns_variable_and_type ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::variable_decl_node::tests::variable_decl_node_get_parent_returns_none_when_node_has_no_parent ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::variable_decl_node::tests::variable_decl_node_get_span_returns_span ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::variable_decl_node::tests::variable_decl_node_get_value_returns_none ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::variable_decl_node::tests::variable_decl_node_set_parent_fails_when_node_already_has_parent ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::variable_decl_node::tests::variable_decl_node_set_parent_sets_parent_node ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::variable_decl_node::tests::variable_decl_node_visit_added_entry_has_correct_type ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::variable_decl_node::tests::variable_decl_node_visit_adds_entry_to_symbol_table ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::variable_node::tests::variable_node_get_children_returns_no_children ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::variable_decl_node::tests::variable_decl_node_visit_returns_error_if_entry_already_exists ... ok Dec 06 01:44:41.271 INFO [stdout] test ast::variable_node::tests::variable_node_get_parent_returns_none_when_node_has_no_parent ... ok Dec 06 01:44:41.272 INFO [stdout] test ast::variable_node::tests::variable_node_get_value_returns_variable_name ... ok Dec 06 01:44:41.272 INFO [stdout] test ast::variable_node::tests::variable_node_get_span_returns_span ... ok Dec 06 01:44:41.272 INFO [stdout] test ast::variable_node::tests::variable_node_set_parent_fails_when_node_already_has_parent ... ok Dec 06 01:44:41.273 INFO [stdout] test ast::variable_node::tests::variable_node_set_parent_sets_parent_node ... ok Dec 06 01:44:41.273 INFO [stdout] test ast::variable_node::tests::variable_node_visit_returns_error_if_variable_doesnt_exist ... ok Dec 06 01:44:41.273 INFO [stdout] test ast::type_node::tests::type_node_get_span_returns_span ... ok Dec 06 01:44:41.273 INFO [stdout] test interpreter::tests::interpreter_assigns_multiple_variables ... ok Dec 06 01:44:41.273 INFO [stdout] test ast::variable_node::tests::variable_node_visit_returns_value_if_variable_exists ... ok Dec 06 01:44:41.273 INFO [stdout] test interpreter::tests::interpreter_can_assign_value_of_variable_to_other_variable ... ok Dec 06 01:44:41.273 INFO [stdout] test interpreter::tests::interpreter_can_assign_value_of_expression_with_variable_to_other_variable ... ok Dec 06 01:44:41.273 INFO [stdout] test ast::variable_node::tests::variable_node_visit_returns_error_if_variable_is_uninitialized ... ok Dec 06 01:44:41.274 INFO [stdout] test interpreter::tests::interpreter_can_evaluate_nested_expressions ... ok Dec 06 01:44:41.274 INFO [stdout] test interpreter::tests::interpreter_handles_nested_compound_statements ... ok Dec 06 01:44:41.274 INFO [stdout] test interpreter::tests::interpreter_returns_integer_if_input_consists_of_integer_in_parentheses ... ok Dec 06 01:44:41.274 INFO [stdout] test interpreter::tests::interpreter_returns_error_when_assigning_unknown_variable_to_other_variable ... ok Dec 06 01:44:41.275 INFO [stdout] test interpreter::tests::interpreter_returns_error_when_number_is_assigned_to_undeclared_variable ... ok Dec 06 01:44:41.275 INFO [stdout] test interpreter::tests::interpreter_returns_result_of_expr_if_input_consists_of_expr_in_parentheses ... ok Dec 06 01:44:41.275 INFO [stdout] test interpreter::tests::interpreter_should_add_values_when_expression_is_addition ... ok Dec 06 01:44:41.275 INFO [stdout] test interpreter::tests::interpreter_should_divide_values_when_expression_is_division ... ok Dec 06 01:44:41.280 INFO [stdout] test ast::type_node::tests::type_node_get_children_returns_no_children ... ok Dec 06 01:44:41.280 INFO [stdout] test interpreter::tests::interpreter_should_evaluate_chained_additions_and_subtractions_from_left_to_right ... ok Dec 06 01:44:41.280 INFO [stdout] test ast::type_node::tests::type_node_get_parent_returns_none_when_node_has_no_parent ... ok Dec 06 01:44:41.280 INFO [stdout] test interpreter::tests::interpreter_should_evaluate_chained_multiplications_and_divisions_from_left_to_right ... ok Dec 06 01:44:41.285 INFO [stdout] test interpreter::tests::interpreter_should_interpret_chained_additions ... ok Dec 06 01:44:41.285 INFO [stdout] test ast::unary_operator_node::tests::unary_operator_node_set_parent_fails_when_node_already_has_parent ... ok Dec 06 01:44:41.285 INFO [stdout] test interpreter::tests::interpreter_should_interpret_chained_multiplications ... ok Dec 06 01:44:41.285 INFO [stdout] test ast::type_node::tests::type_node_get_value_returns_type ... ok Dec 06 01:44:41.285 INFO [stdout] test interpreter::tests::interpreter_should_evaluate_chained_unary_operators ... ok Dec 06 01:44:41.285 INFO [stdout] test interpreter::tests::interpreter_should_multiply_values_when_expression_is_multiplication ... ok Dec 06 01:44:41.285 INFO [stdout] test interpreter::tests::interpreter_should_give_precedence_to_multiplication_and_division ... ok Dec 06 01:44:41.285 INFO [stdout] test interpreter::tests::interpreter_should_negate_expression_when_expression_is_prefixed_with_unary_minus ... ok Dec 06 01:44:41.285 INFO [stdout] test interpreter::tests::interpreter_should_negate_integer_when_expression_is_unary_minus ... ok Dec 06 01:44:41.285 INFO [stdout] test lexer::mock_lexer::tests::mocklexer_returns_eof_when_no_more_tokens_are_available ... ok Dec 06 01:44:41.285 INFO [stdout] test interpreter::tests::interpreter_should_return_negative_number_when_result_of_subtraction_is_negative ... ok Dec 06 01:44:41.285 INFO [stdout] test lexer::mock_lexer::tests::mocklexer_returns_token_with_value_none_when_encountering_novalue ... ok Dec 06 01:44:41.285 INFO [stdout] test interpreter::tests::interpreter_should_return_error_when_division_by_zero ... ok Dec 06 01:44:41.285 INFO [stdout] test lexer::mock_lexer::tests::mocklexer_returns_second_token_when_calling_get_next_token_for_the_second_time ... ok Dec 06 01:44:41.285 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_accepts_floating_point_numbers_with_leading_dot ... ok Dec 06 01:44:41.286 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_advances_position_correctly_for_assign_token ... ok Dec 06 01:44:41.286 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_doesnt_ret_assign_tok_when_input_is_colon_not_followed_by_eq_sign ... ok Dec 06 01:44:41.286 INFO [stdout] test interpreter::tests::interpreter_should_return_integer_value_if_input_consists_of_only_integer ... ok Dec 06 01:44:41.286 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_identifiers_dont_end_with_underscore ... ok Dec 06 01:44:41.286 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_identifiers_dont_start_with_digit ... ok Dec 06 01:44:41.286 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_non_alphanumeric_characters_are_not_part_of_identifier ... ok Dec 06 01:44:41.286 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_assign_token_when_input_is_assignment_operator ... ok Dec 06 01:44:41.286 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_begin_token_when_input_is_begin_keyword_mixed_case ... ok Dec 06 01:44:41.286 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_begin_token_when_input_is_begin_keyword_uppercase ... ok Dec 06 01:44:41.286 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_colon_token_when_input_is_colon ... ok Dec 06 01:44:41.286 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_comma_token_when_input_is_comma ... ok Dec 06 01:44:41.292 INFO [stdout] test lexer::mock_lexer::tests::mocklexer_returns_first_token_when_calling_get_next_token_for_the_first_time ... ok Dec 06 01:44:41.292 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_end_token_when_input_is_end_keyword_lowercase ... ok Dec 06 01:44:41.292 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_doesnt_return_assign_token_when_input_is_only_colon ... ok Dec 06 01:44:41.292 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_eof_when_input_is_empty ... ok Dec 06 01:44:41.292 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_dot_token_when_input_is_dot ... ok Dec 06 01:44:41.292 INFO [stdout] test interpreter::tests::interpreter_should_return_integer_when_expression_is_unary_plus ... ok Dec 06 01:44:41.292 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_end_token_when_input_is_end_keyword_uppercase ... ok Dec 06 01:44:41.292 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_doesnt_return_colon_token_when_input_is_colon_followed_by_eq ... ok Dec 06 01:44:41.293 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_identifiers_can_start_with_underscore ... ok Dec 06 01:44:41.293 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_float_division_when_input_is_float_division ... ok Dec 06 01:44:41.293 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_identifier_token_when_input_contains_digits ... ok Dec 06 01:44:41.312 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_identifier_token_when_input_is_string ... ok Dec 06 01:44:41.312 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_identifier_token_with_id_value_when_input_is_string ... ok Dec 06 01:44:41.312 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_integer_division_when_input_is_integer_division ... ok Dec 06 01:44:41.312 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_integer_when_input_is_digit ... ok Dec 06 01:44:41.312 INFO [stdout] test interpreter::tests::interpreter_should_subtract_values_when_expression_is_subtraction ... ok Dec 06 01:44:41.312 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_integer_value_when_input_is_digit ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_minus_when_input_is_minus ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_next_token_when_called_second_time ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_op_value_float_division_when_input_is_float_division ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_op_value_integer_division_when_input_is_integer_division ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_operator_value_minus_when_input_is_operator_minus ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_left_parenthesis_when_input_is_left_parenthesis ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_operator_value_plus_when_input_is_operator_plus ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_program_token_when_input_is_program_keyword ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_type_integer_when_input_is_integer_keyword ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_type_real_when_input_is_real_keyword ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_type_specifier_token_when_input_is_integer_keyword ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_type_specifier_token_when_input_is_real_keyword ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_var_token_when_input_is_var_keyword ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_should_handle_whitespace_after_comment ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_should_skip_comments ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_should_skip_double_comments ... ok Dec 06 01:44:41.324 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_should_skip_double_comments_separated_by_whitespace ... ok Dec 06 01:44:41.332 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_token_or_error_when_input_is_not_empty ... ok Dec 06 01:44:41.332 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_plus_when_input_is_plus ... ok Dec 06 01:44:41.332 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_times_when_input_is_times ... ok Dec 06 01:44:41.332 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_operator_value_times_when_input_is_operator_times ... ok Dec 06 01:44:41.332 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_right_parenthesis_when_input_is_right_parenthesis ... ok Dec 06 01:44:41.332 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_returns_semicolon_token_when_input_is_semicolon ... ok Dec 06 01:44:41.332 INFO [stdout] test lexer::pascal_lexer::tests::lexer_get_next_token_should_skip_single_comment ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_parse_number_returns_floating_point_number ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_parse_number_only_advances_as_long_as_there_are_more_digits_in_the_flt_number ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_identifiers_are_case_insensitive ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_parse_number_returns_multi_digit_integer ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_parse_number_should_advance_position_correctly ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_parse_number_should_advance_position_correctly_when_parsing_float ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_parse_number_should_only_advance_as_long_as_there_are_more_digits ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_parse_number_should_return_error_when_input_is_larger_than_fit_in_i64 ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_parse_number_should_return_number_when_input_fits_in_i64 ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_should_recognize_expressions_that_begin_with_whitespace_characters ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_should_recognize_expressions_that_contain_multi_digit_integer ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_should_recognize_expressions_that_contain_whitespace_characters ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_skip_comments_should_skip_all_characters_enclosed_in_curly_braces ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_skip_whitespace_should_not_skip_non_whitespace_characters ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_skip_whitespace_should_skip_all_whitespaces_until_eof ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_skip_whitespace_should_skip_all_whitespaces_until_first_non_whitespace_char ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_assignment_statement_doesnt_parse_assignment_without_assign_token_in_the_middle ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_assignment_statement_doesnt_parse_assignment_without_expression_on_the_right ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_assignment_statement_doesnt_parse_assignment_without_variable_on_the_left ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_assignment_statement_parses_assignment_statement ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_assignment_statement_parses_assignment_statement_with_expression ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_assignment_statement_returns_error_when_having_two_assignment_operators ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_assignment_statement_returns_error_when_missing_assignment_operator ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_assignment_statement_returns_error_when_missing_variable ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_assignment_statement_returns_error_when_two_expressions_on_rhs ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_assignment_statement_returns_error_when_two_variables_on_lhs ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_block_parses_compound_statement ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_block_parses_declarations_and_compound_statement ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_block_returns_error_if_compound_statement_is_missing ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_block_returns_error_if_two_compound_statements_are_present ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_block_returns_error_if_two_declaration_lists_are_present ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_compound_statement_parses_compound_statement ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_compound_statement_parses_empty_statement_list ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_compound_statement_parses_nested_compound_statement ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_compound_statement_returns_error_when_begin_is_missing ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_compound_statement_returns_error_when_begin_is_repeated_without_matching_end ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_compound_statement_returns_error_when_end_is_missing ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_compound_statement_returns_error_when_end_occurs_twice ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_compound_statement_returns_error_when_statements_arent_separated_with_semicolons ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_declarations_parses_multiple_variable_declarations ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_declarations_parses_variable_declarations ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_declarations_returns_error_if_declarations_are_not_separated_by_semicolon ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_declarations_returns_error_if_declarations_are_not_terminated_by_semicolon ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_declarations_returns_error_if_declarations_are_terminated_by_two_semicolons ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_declarations_returns_error_if_var_is_directly_followed_by_semicolon ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_declarations_returns_error_if_var_is_not_followed_by_variable_declarations ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_declarations_returns_error_if_var_token_is_missing ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_declarations_returns_error_if_var_token_is_repeated ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_declarations_returns_no_declarations_if_no_variable_declarations_are_present ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_eat_should_consume_token_if_it_has_the_correct_type ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_eat_should_not_consume_token_if_it_has_the_wrong_type ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_expr_should_create_integer_node_if_input_consists_of_only_integer ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_expr_should_create_operator_node_when_expression_is_addition ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_expr_should_create_operator_node_when_expression_is_subtraction ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_expr_should_not_parse_empty_string ... ok Dec 06 01:44:41.333 INFO [stdout] test parser::tests::parser_expr_should_not_parse_expressions_that_dont_have_integer_after_operator ... ok Dec 06 01:44:41.333 INFO [stdout] test lexer::pascal_lexer::tests::lexer_parse_number_accepts_floating_point_numbers_with_leading_dot ... ok Dec 06 01:44:41.340 INFO [stdout] test lexer::pascal_lexer::tests::lexer_parse_number_advances_position_correctly_when_parsing_float_with_leading_dot ... ok Dec 06 01:44:41.340 INFO [stdout] test lexer::pascal_lexer::tests::lexer_parse_number_accepts_floating_point_numbers_with_trailing_dot ... ok Dec 06 01:44:41.340 INFO [stdout] test parser::tests::parser_factor_creates_integer_node_if_input_consists_of_integer_in_parentheses ... ok Dec 06 01:44:41.340 INFO [stdout] test parser::tests::parser_expr_should_not_parse_expressions_that_dont_terminate_with_eof ... ok Dec 06 01:44:41.340 INFO [stdout] test parser::tests::parser_factor_creates_graph_of_expr_if_input_consists_of_expr_in_parentheses ... ok Dec 06 01:44:41.340 INFO [stdout] test parser::tests::parser_factor_returns_error_if_input_consists_of_unary_division ... ok Dec 06 01:44:41.340 INFO [stdout] test parser::tests::parser_factor_returns_error_if_input_consists_of_unary_times ... ok Dec 06 01:44:41.349 INFO [stdout] test parser::tests::parser_factor_creates_unary_operator_node_if_input_consists_of_unary_minus ... ok Dec 06 01:44:41.349 INFO [stdout] test lexer::pascal_lexer::tests::lexer_parse_number_advances_position_correctly_when_parsing_float_with_trailing_dot ... ok Dec 06 01:44:41.349 INFO [stdout] test parser::tests::parser_factor_returns_error_if_lparen_is_followed_by_rparen ... ok Dec 06 01:44:41.349 INFO [stdout] test parser::tests::parser_factor_creates_unary_operator_node_if_input_consists_of_unary_plus ... ok Dec 06 01:44:41.349 INFO [stdout] test lexer::pascal_lexer::tests::lexer_parse_number_returns_floating_point_number_with_only_one_point ... ok Dec 06 01:44:41.352 INFO [stdout] test parser::tests::parser_factor_returns_error_if_operator_is_followed_by_rparen ... ok Dec 06 01:44:41.352 INFO [stdout] test parser::tests::parser_factor_creates_variable_node_when_it_encounters_identifier ... ok Dec 06 01:44:41.352 INFO [stdout] test parser::tests::parser_factor_returns_error_if_parentheses_are_mismatched ... ok Dec 06 01:44:41.352 INFO [stdout] test parser::tests::parser_factor_should_return_integer_node_if_input_consists_of_only_integer ... ok Dec 06 01:44:41.352 INFO [stdout] test parser::tests::parser_factor_should_return_real_node_if_input_consists_of_real_literal ... ok Dec 06 01:44:41.352 INFO [stdout] test parser::tests::parser_load_first_token_should_load_first_token ... ok Dec 06 01:44:41.352 INFO [stdout] test parser::tests::parser_program_parses_program ... ok Dec 06 01:44:41.352 INFO [stdout] test parser::tests::parser_program_returns_error_when_compound_statement_is_missing ... ok Dec 06 01:44:41.352 INFO [stdout] test parser::tests::parser_program_parses_program_name ... ok Dec 06 01:44:41.352 INFO [stdout] test parser::tests::parser_parse_returns_error_when_ends_with_two_dots ... ok Dec 06 01:44:41.360 INFO [stdout] test parser::tests::parser_program_returns_error_when_program_has_two_names ... ok Dec 06 01:44:41.360 INFO [stdout] test parser::tests::parser_program_returns_error_when_program_name_is_missing ... ok Dec 06 01:44:41.360 INFO [stdout] test parser::tests::parser_program_returns_error_when_semicolon_after_program_name_is_missing ... ok Dec 06 01:44:41.360 INFO [stdout] test parser::tests::parser_program_returns_error_when_two_compound_statements_are_present ... ok Dec 06 01:44:41.360 INFO [stdout] test parser::tests::parser_program_returns_error_when_program_keyword_occurs_twice ... ok Dec 06 01:44:41.360 INFO [stdout] test parser::tests::parser_program_returns_error_when_dot_is_missing ... ok Dec 06 01:44:41.360 INFO [stdout] test parser::tests::parser_program_returns_error_when_program_keyword_is_missing ... ok Dec 06 01:44:41.360 INFO [stdout] test parser::tests::parser_program_returns_error_when_two_semicolons_after_program_name ... ok Dec 06 01:44:41.360 INFO [stdout] test parser::tests::parser_start_returns_error_if_parentheses_are_mismatched ... ok Dec 06 01:44:41.360 INFO [stdout] test parser::tests::parser_statement_list_can_begin_with_semicolon ... ok Dec 06 01:44:41.360 INFO [stdout] test parser::tests::parser_statement_list_returns_error_when_multiple_statements_not_separated_by_semicolon ... ok Dec 06 01:44:41.360 INFO [stdout] test parser::tests::parser_statement_list_returns_only_first_stmt_when_stmts_are_not_separated_by_semicolon ... ok Dec 06 01:44:41.364 INFO [stdout] test parser::tests::parser_statement_list_returns_error_when_statements_not_separated_by_semicolon ... ok Dec 06 01:44:41.364 INFO [stdout] test parser::tests::parser_statement_list_can_end_with_semicolon ... ok Dec 06 01:44:41.364 INFO [stdout] test parser::tests::parser_statement_list_parses_empty_input ... ok Dec 06 01:44:41.364 INFO [stdout] test parser::tests::parser_statement_list_returns_two_statements_when_statements_are_separated_by_semicolon ... ok Dec 06 01:44:41.364 INFO [stdout] test parser::tests::parser_statement_list_returns_assignment_statement_if_statement_is_assignment ... ok Dec 06 01:44:41.364 INFO [stdout] test parser::tests::parser_statement_list_returns_three_statements_when_given_three_statements ... ok Dec 06 01:44:41.364 INFO [stdout] test parser::tests::parser_statement_returns_assignment_statement_if_statement_is_assignment_statement ... ok Dec 06 01:44:41.364 INFO [stdout] test parser::tests::parser_term_should_create_operator_node_when_expression_is_integer_division ... ok Dec 06 01:44:41.364 INFO [stdout] test parser::tests::parser_statement_returns_none_if_no_statement_is_present ... ok Dec 06 01:44:41.364 INFO [stdout] test parser::tests::parser_statement_returns_error_when_both_statement_types_are_not_separated_by_semicolon ... ok Dec 06 01:44:41.366 INFO [stdout] test parser::tests::parser_term_should_create_operator_node_when_expression_is_multiplication ... ok Dec 06 01:44:41.366 INFO [stdout] test parser::tests::parser_statement_returns_compound_statement_if_statement_is_compound_statement ... ok Dec 06 01:44:41.366 INFO [stdout] test parser::tests::parser_term_should_not_parse_empty_string ... ok Dec 06 01:44:41.366 INFO [stdout] test parser::tests::parser_term_should_create_operator_node_when_expression_is_float_division ... ok Dec 06 01:44:41.366 INFO [stdout] test parser::tests::parser_type_spec_parses_integer_type_specifier ... ok Dec 06 01:44:41.366 INFO [stdout] test parser::tests::parser_type_spec_returns_error_when_no_type_specifier_is_present ... ok Dec 06 01:44:41.366 INFO [stdout] test parser::tests::parser_type_spec_returns_error_when_two_real_type_specifiers_are_present ... ok Dec 06 01:44:41.366 INFO [stdout] test parser::tests::parser_var_decl_parses_single_variable_declaration ... ok Dec 06 01:44:41.368 INFO [stdout] test parser::tests::parser_term_should_return_integer_node_if_input_consists_of_only_integer ... ok Dec 06 01:44:41.368 INFO [stdout] test parser::tests::parser_var_decl_parses_three_variable_declarations ... ok Dec 06 01:44:41.376 INFO [stdout] test parser::tests::parser_type_spec_returns_error_when_two_integer_type_specifiers_are_present ... ok Dec 06 01:44:41.376 INFO [stdout] test parser::tests::parser_type_spec_returns_error_when_two_different_type_specifiers_are_present ... ok Dec 06 01:44:41.376 INFO [stdout] test parser::tests::parser_type_spec_parses_real_integer_specifier ... ok Dec 06 01:44:41.376 INFO [stdout] test parser::tests::parser_term_should_not_parse_expressions_that_dont_have_integer_after_operator ... ok Dec 06 01:44:41.376 INFO [stdout] test parser::tests::parser_var_decl_parses_two_variable_declarations ... ok Dec 06 01:44:41.376 INFO [stdout] test parser::tests::parser_term_should_not_parse_expressions_that_dont_terminate_with_eof ... ok Dec 06 01:44:41.381 INFO [stdout] test parser::tests::parser_var_decl_returns_error_when_two_type_specifiers_are_present ... ok Dec 06 01:44:41.381 INFO [stdout] test parser::tests::parser_var_decl_returns_error_when_no_identifier_is_present ... ok Dec 06 01:44:41.381 INFO [stdout] test parser::tests::parser_var_decl_returns_error_when_no_identifier_is_present_after_comma ... ok Dec 06 01:44:41.381 INFO [stdout] test parser::tests::parser_var_decl_returns_error_when_no_type_specifier_is_present ... ok Dec 06 01:44:41.381 INFO [stdout] test parser::tests::parser_var_decl_returns_error_when_two_identifiers_are_not_separated_by_comma ... ok Dec 06 01:44:41.381 INFO [stdout] test parser::tests::parser_var_decl_returns_error_when_two_identifiers_are_separated_by_two_commas ... ok Dec 06 01:44:41.381 INFO [stdout] test parser::tests::parser_var_decl_returns_err_when_second_and_third_identifier_are_not_separated_by_comma ... ok Dec 06 01:44:41.388 INFO [stdout] test parser::tests::parser_variable_returns_error_when_token_is_no_identifier ... ok Dec 06 01:44:41.388 INFO [stdout] test parser::tests::parser_variable_creates_variable_node_when_token_is_identifier ... ok Dec 06 01:44:41.388 INFO [stdout] test parser::tests::parser_var_decl_returns_error_when_type_specifier_is_separated_by_two_colons ... ok Dec 06 01:44:41.416 INFO [stdout] test parser::tests::parser_var_decl_returns_error_when_type_specifier_is_not_after_colon ... ok Dec 06 01:44:41.420 INFO [stdout] test ast::tests::ast_add_node_cannot_set_parent_of_node_which_already_has_a_parent ... ok Dec 06 01:44:41.420 INFO [stdout] Dec 06 01:44:41.420 INFO [stdout] test result: ok. 322 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out Dec 06 01:44:41.420 INFO [stdout] Dec 06 01:44:41.423 INFO [stderr] su: No module specific data is present Dec 06 01:44:42.113 INFO running `"docker" "inspect" "aec99d7dbb18375380cadbf3c4f8bce85df2c3e96ea472cddccdcba3c8504cd7"` Dec 06 01:44:42.206 INFO running `"docker" "rm" "-f" "aec99d7dbb18375380cadbf3c4f8bce85df2c3e96ea472cddccdcba3c8504cd7"` Dec 06 01:44:42.421 INFO [stdout] aec99d7dbb18375380cadbf3c4f8bce85df2c3e96ea472cddccdcba3c8504cd7