Oct 14 22:52:17.566 INFO testing df5602/interpreter_tutorial against try#40d4795669493f1965de7c44029c69552134fe1f for rustdoc-test-static-cling-1 Oct 14 22:52:17.566 INFO running `"docker" "create" "-v" "/mnt/big/crater/./work/local/target-dirs/rustdoc-test-static-cling-1/worker-0/try#40d4795669493f1965de7c44029c69552134fe1f:/target:rw,Z" "-v" "/mnt/big/crater/./work/local/test-source/worker-0/rustdoc-test-static-cling-1/try#40d4795669493f1965de7c44029c69552134fe1f:/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 +40d4795669493f1965de7c44029c69552134fe1f-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"` Oct 14 22:52:18.129 INFO blam! 605f9a990c5823c449f6dd451bdb0142280e902330dd2455ee6a91a5a398917e Oct 14 22:52:18.137 INFO running `"docker" "start" "-a" "605f9a990c5823c449f6dd451bdb0142280e902330dd2455ee6a91a5a398917e"` Oct 14 22:52:19.442 INFO kablam! usermod: no changes Oct 14 22:52:19.516 INFO kablam! Compiling leftpad v0.2.0 Oct 14 22:52:20.187 INFO kablam! Compiling interpreter_tutorial v0.1.0 (/source) Oct 14 22:52:20.627 INFO kablam! warning: unused macro definition Oct 14 22:52:20.627 INFO kablam! --> src/ast/macros.rs:1:1 Oct 14 22:52:20.628 INFO kablam! | Oct 14 22:52:20.629 INFO kablam! 1 | / macro_rules! int_node { Oct 14 22:52:20.629 INFO kablam! 2 | | ($ast:expr, $value:expr) => {{ Oct 14 22:52:20.630 INFO kablam! 3 | | let node = NumberNode::new(Value::Integer($value), Oct 14 22:52:20.631 INFO kablam! 4 | | Token::new(TokenType::IntegerLiteral, Oct 14 22:52:20.631 INFO kablam! ... | Oct 14 22:52:20.632 INFO kablam! 8 | | }} Oct 14 22:52:20.632 INFO kablam! 9 | | } Oct 14 22:52:20.633 INFO kablam! | |_^ Oct 14 22:52:20.634 INFO kablam! | Oct 14 22:52:20.634 INFO kablam! = note: #[warn(unused_macros)] on by default Oct 14 22:52:20.635 INFO kablam! Oct 14 22:52:20.635 INFO kablam! warning: unused macro definition Oct 14 22:52:20.636 INFO kablam! --> src/ast/macros.rs:11:1 Oct 14 22:52:20.636 INFO kablam! | Oct 14 22:52:20.636 INFO kablam! 11 | / macro_rules! real_node { Oct 14 22:52:20.636 INFO kablam! 12 | | ($ast:expr, $value:expr) => {{ Oct 14 22:52:20.636 INFO kablam! 13 | | let node = NumberNode::new(Value::Real($value), Oct 14 22:52:20.636 INFO kablam! 14 | | Token::new(TokenType::RealLiteral, Oct 14 22:52:20.636 INFO kablam! ... | Oct 14 22:52:20.636 INFO kablam! 18 | | }} Oct 14 22:52:20.636 INFO kablam! 19 | | } Oct 14 22:52:20.637 INFO kablam! | |_^ Oct 14 22:52:20.637 INFO kablam! Oct 14 22:52:20.637 INFO kablam! warning: unused macro definition Oct 14 22:52:20.637 INFO kablam! --> src/ast/macros.rs:21:1 Oct 14 22:52:20.637 INFO kablam! | Oct 14 22:52:20.637 INFO kablam! 21 | / macro_rules! binop_node { Oct 14 22:52:20.637 INFO kablam! 22 | | ($ast:expr, $left:expr, $right:expr, $op:expr) => {{ Oct 14 22:52:20.637 INFO kablam! 23 | | let node = BinaryOperatorNode::new($left, $right, $op, Oct 14 22:52:20.637 INFO kablam! 24 | | Token::new(TokenType::Operator, Oct 14 22:52:20.637 INFO kablam! ... | Oct 14 22:52:20.637 INFO kablam! 28 | | }} Oct 14 22:52:20.637 INFO kablam! 29 | | } Oct 14 22:52:20.637 INFO kablam! | |_^ Oct 14 22:52:20.637 INFO kablam! Oct 14 22:52:20.643 INFO kablam! warning: unused macro definition Oct 14 22:52:20.643 INFO kablam! --> src/ast/macros.rs:31:1 Oct 14 22:52:20.643 INFO kablam! | Oct 14 22:52:20.643 INFO kablam! 31 | / macro_rules! unop_node { Oct 14 22:52:20.643 INFO kablam! 32 | | ($ast:expr, $operand:expr, $op:expr) => {{ Oct 14 22:52:20.643 INFO kablam! 33 | | let node = UnaryOperatorNode::new($operand, $op, Oct 14 22:52:20.643 INFO kablam! 34 | | Token::new(TokenType::Operator, Oct 14 22:52:20.643 INFO kablam! ... | Oct 14 22:52:20.643 INFO kablam! 38 | | }} Oct 14 22:52:20.643 INFO kablam! 39 | | } Oct 14 22:52:20.643 INFO kablam! | |_^ Oct 14 22:52:20.643 INFO kablam! Oct 14 22:52:20.643 INFO kablam! warning: unused macro definition Oct 14 22:52:20.643 INFO kablam! --> src/ast/macros.rs:41:1 Oct 14 22:52:20.643 INFO kablam! | Oct 14 22:52:20.643 INFO kablam! 41 | / macro_rules! cmpd_stmt_node { Oct 14 22:52:20.643 INFO kablam! 42 | | ($ast:expr, $statements:expr) => {{ Oct 14 22:52:20.643 INFO kablam! 43 | | let node = CompoundStmtNode::new($statements, Oct 14 22:52:20.643 INFO kablam! 44 | | Token::new(TokenType::Begin, None, Span::default()), Oct 14 22:52:20.643 INFO kablam! ... | Oct 14 22:52:20.643 INFO kablam! 47 | | }} Oct 14 22:52:20.643 INFO kablam! 48 | | } Oct 14 22:52:20.643 INFO kablam! | |_^ Oct 14 22:52:20.643 INFO kablam! Oct 14 22:52:20.643 INFO kablam! warning: unused macro definition Oct 14 22:52:20.643 INFO kablam! --> src/ast/macros.rs:50:1 Oct 14 22:52:20.643 INFO kablam! | Oct 14 22:52:20.643 INFO kablam! 50 | / macro_rules! var_node { Oct 14 22:52:20.643 INFO kablam! 51 | | ($ast:expr, $name:expr) => {{ Oct 14 22:52:20.643 INFO kablam! 52 | | let node = VariableNode::new($name.to_string(), Oct 14 22:52:20.643 INFO kablam! 53 | | Token::new(TokenType::Identifier, Oct 14 22:52:20.643 INFO kablam! ... | Oct 14 22:52:20.643 INFO kablam! 57 | | }} Oct 14 22:52:20.643 INFO kablam! 58 | | } Oct 14 22:52:20.643 INFO kablam! | |_^ Oct 14 22:52:20.643 INFO kablam! Oct 14 22:52:20.643 INFO kablam! warning: unused macro definition Oct 14 22:52:20.643 INFO kablam! --> src/ast/macros.rs:60:1 Oct 14 22:52:20.643 INFO kablam! | Oct 14 22:52:20.643 INFO kablam! 60 | / macro_rules! assign_node { Oct 14 22:52:20.643 INFO kablam! 61 | | ($ast:expr, $var:expr, $expr:expr) => {{ Oct 14 22:52:20.643 INFO kablam! 62 | | let node = AssignmentStmtNode::new($var, $expr, Oct 14 22:52:20.643 INFO kablam! 63 | | Token::new(TokenType::Assign, None, Span::default())); Oct 14 22:52:20.643 INFO kablam! 64 | | $ast.add_node(node) Oct 14 22:52:20.643 INFO kablam! 65 | | }} Oct 14 22:52:20.644 INFO kablam! 66 | | } Oct 14 22:52:20.644 INFO kablam! | |_^ Oct 14 22:52:20.644 INFO kablam! Oct 14 22:52:20.644 INFO kablam! warning: unused macro definition Oct 14 22:52:20.644 INFO kablam! --> src/ast/macros.rs:68:1 Oct 14 22:52:20.644 INFO kablam! | Oct 14 22:52:20.644 INFO kablam! 68 | / macro_rules! block_node { Oct 14 22:52:20.644 INFO kablam! 69 | | ($ast:expr, $declarations:expr, $cmpd_stmt:expr) => {{ Oct 14 22:52:20.644 INFO kablam! 70 | | let node = BlockNode::new($declarations, $cmpd_stmt); Oct 14 22:52:20.644 INFO kablam! 71 | | $ast.add_node(node) Oct 14 22:52:20.644 INFO kablam! 72 | | }} Oct 14 22:52:20.644 INFO kablam! 73 | | } Oct 14 22:52:20.644 INFO kablam! | |_^ Oct 14 22:52:20.644 INFO kablam! Oct 14 22:52:20.644 INFO kablam! warning: unused macro definition Oct 14 22:52:20.644 INFO kablam! --> src/ast/macros.rs:75:1 Oct 14 22:52:20.644 INFO kablam! | Oct 14 22:52:20.644 INFO kablam! 75 | / macro_rules! type_node { Oct 14 22:52:20.644 INFO kablam! 76 | | ($ast:expr, $type_spec:expr) => {{ Oct 14 22:52:20.644 INFO kablam! 77 | | let node = TypeNode::new($type_spec, Oct 14 22:52:20.644 INFO kablam! 78 | | Token::new(TokenType::TypeSpecifier, Oct 14 22:52:20.644 INFO kablam! ... | Oct 14 22:52:20.644 INFO kablam! 82 | | }} Oct 14 22:52:20.644 INFO kablam! 83 | | } Oct 14 22:52:20.644 INFO kablam! | |_^ Oct 14 22:52:20.644 INFO kablam! Oct 14 22:52:20.644 INFO kablam! warning: unused macro definition Oct 14 22:52:20.644 INFO kablam! --> src/ast/macros.rs:85:1 Oct 14 22:52:20.644 INFO kablam! | Oct 14 22:52:20.644 INFO kablam! 85 | / macro_rules! var_decl_node { Oct 14 22:52:20.644 INFO kablam! 86 | | ($ast:expr, $var_name:expr, $type_spec:expr) => {{ Oct 14 22:52:20.644 INFO kablam! 87 | | let node = VariableDeclNode::new($var_name, $type_spec); Oct 14 22:52:20.644 INFO kablam! 88 | | $ast.add_node(node) Oct 14 22:52:20.644 INFO kablam! 89 | | }} Oct 14 22:52:20.644 INFO kablam! 90 | | } Oct 14 22:52:20.644 INFO kablam! | |_^ Oct 14 22:52:20.644 INFO kablam! Oct 14 22:52:20.644 INFO kablam! warning: unused macro definition Oct 14 22:52:20.644 INFO kablam! --> src/ast/macros.rs:92:1 Oct 14 22:52:20.644 INFO kablam! | Oct 14 22:52:20.644 INFO kablam! 92 | / macro_rules! program_node { Oct 14 22:52:20.644 INFO kablam! 93 | | ($ast:expr, $name:expr, $variable:expr, $block:expr) => {{ Oct 14 22:52:20.644 INFO kablam! 94 | | let node = ProgramNode::new($name.to_string(), $variable, $block); Oct 14 22:52:20.644 INFO kablam! 95 | | $ast.add_node(node) Oct 14 22:52:20.644 INFO kablam! 96 | | }} Oct 14 22:52:20.644 INFO kablam! 97 | | } Oct 14 22:52:20.644 INFO kablam! | |_^ Oct 14 22:52:20.644 INFO kablam! Oct 14 22:52:23.579 INFO kablam! Finished dev [unoptimized + debuginfo] target(s) in 4.09s Oct 14 22:52:23.579 INFO kablam! su: No module specific data is present Oct 14 22:52:24.255 INFO running `"docker" "rm" "-f" "605f9a990c5823c449f6dd451bdb0142280e902330dd2455ee6a91a5a398917e"` Oct 14 22:52:24.678 INFO blam! 605f9a990c5823c449f6dd451bdb0142280e902330dd2455ee6a91a5a398917e Oct 14 22:52:24.689 INFO running `"docker" "create" "-v" "/mnt/big/crater/./work/local/target-dirs/rustdoc-test-static-cling-1/worker-0/try#40d4795669493f1965de7c44029c69552134fe1f:/target:rw,Z" "-v" "/mnt/big/crater/./work/local/test-source/worker-0/rustdoc-test-static-cling-1/try#40d4795669493f1965de7c44029c69552134fe1f:/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 +40d4795669493f1965de7c44029c69552134fe1f-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"` Oct 14 22:52:25.121 INFO blam! acc33c69cfc3cff6fa66b7bbe0d7b6c57028ca8dde2a25d3d762511cd5c40ce4 Oct 14 22:52:25.135 INFO running `"docker" "start" "-a" "acc33c69cfc3cff6fa66b7bbe0d7b6c57028ca8dde2a25d3d762511cd5c40ce4"` Oct 14 22:52:26.635 INFO kablam! usermod: no changes Oct 14 22:52:26.731 INFO kablam! Compiling interpreter_tutorial v0.1.0 (/source) Oct 14 22:52:27.579 INFO kablam! warning: unnecessary parentheses around function argument Oct 14 22:52:27.579 INFO kablam! --> src/ast/assignment_stmt_node.rs:251:50 Oct 14 22:52:27.579 INFO kablam! | Oct 14 22:52:27.579 INFO kablam! 251 | real_node!(ast, (i64::MAX as f64 + 1000.0))); Oct 14 22:52:27.579 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses Oct 14 22:52:27.579 INFO kablam! | Oct 14 22:52:27.579 INFO kablam! = note: #[warn(unused_parens)] on by default Oct 14 22:52:27.579 INFO kablam! Oct 14 22:52:27.579 INFO kablam! warning: unnecessary parentheses around function argument Oct 14 22:52:27.579 INFO kablam! --> src/ast/assignment_stmt_node.rs:251:50 Oct 14 22:52:27.579 INFO kablam! | Oct 14 22:52:27.579 INFO kablam! 251 | real_node!(ast, (i64::MAX as f64 + 1000.0))); Oct 14 22:52:27.579 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses Oct 14 22:52:27.579 INFO kablam! Oct 14 22:52:34.553 INFO kablam! Finished dev [unoptimized + debuginfo] target(s) in 7.89s Oct 14 22:52:34.559 INFO kablam! su: No module specific data is present Oct 14 22:52:35.611 INFO running `"docker" "rm" "-f" "acc33c69cfc3cff6fa66b7bbe0d7b6c57028ca8dde2a25d3d762511cd5c40ce4"` Oct 14 22:52:35.825 INFO blam! acc33c69cfc3cff6fa66b7bbe0d7b6c57028ca8dde2a25d3d762511cd5c40ce4 Oct 14 22:52:35.830 INFO running `"docker" "create" "-v" "/mnt/big/crater/./work/local/target-dirs/rustdoc-test-static-cling-1/worker-0/try#40d4795669493f1965de7c44029c69552134fe1f:/target:rw,Z" "-v" "/mnt/big/crater/./work/local/test-source/worker-0/rustdoc-test-static-cling-1/try#40d4795669493f1965de7c44029c69552134fe1f:/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 +40d4795669493f1965de7c44029c69552134fe1f-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"` Oct 14 22:52:36.375 INFO blam! d96eae8137d22d8b3c56306254d347620ab1bcc263d4c4daade645c92848ca76 Oct 14 22:52:36.381 INFO running `"docker" "start" "-a" "d96eae8137d22d8b3c56306254d347620ab1bcc263d4c4daade645c92848ca76"` Oct 14 22:52:37.823 INFO kablam! usermod: no changes Oct 14 22:52:37.891 INFO kablam! Finished dev [unoptimized + debuginfo] target(s) in 0.03s Oct 14 22:52:37.891 INFO blam! Oct 14 22:52:37.891 INFO kablam! Running /target/debug/deps/interpreter_tutorial-3f7bfd120d8e03fe Oct 14 22:52:37.891 INFO blam! running 322 tests Oct 14 22:52:37.899 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_get_parent_returns_none_when_node_has_no_parent ... ok Oct 14 22:52:37.899 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_get_value_returns_none ... ok Oct 14 22:52:37.899 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_get_span_returns_span ... ok Oct 14 22:52:37.899 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_set_parent_fails_when_node_already_has_parent ... ok Oct 14 22:52:37.899 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_get_children_returns_variable_and_expression ... ok Oct 14 22:52:37.899 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_visit_converts_the_expression_to_target_type_real ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_get_span_returns_span ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_get_parent_returns_none_when_node_has_no_parent ... ok Oct 14 22:52:37.899 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_visit_converts_the_expression_to_target_type_integer ... ok Oct 14 22:52:37.899 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_set_parent_sets_parent_node ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_set_parent_fails_when_node_already_has_parent ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_set_parent_sets_parent_node ... ok Oct 14 22:52:37.899 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_visit_casting_to_integer_with_overflow_returns_error ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_get_value_returns_operator_value ... ok Oct 14 22:52:37.899 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_visit_updates_entry_in_symbol_table_2 ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_get_children_returns_left_and_right_children ... ok Oct 14 22:52:37.899 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_visit_updates_entry_in_symbol_table_1 ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_integer_div_gives_floored_quotient_if_one_operand_is_real ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_error_when_division_overflows ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_error_when_multiplication_overflows ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_error_when_op_is_division_and_rhs_is_zero ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_error_when_subtraction_overflows ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_product_of_integer_nodes_when_op_is_multiplication ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_quotient_of_integer_nodes_when_op_is_int_division ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_quotient_of_nodes_when_op_is_float_division ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_real_difference_if_at_least_one_operand_is_real ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_real_sum_if_at_least_one_operand_is_a_real ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_real_product_if_at_least_one_operand_is_real ... ok Oct 14 22:52:37.899 INFO blam! test ast::block_node::tests::block_node_get_children_returns_declarations_and_compound_statement ... ok Oct 14 22:52:37.899 INFO blam! test ast::block_node::tests::block_node_get_parent_returns_none_when_node_has_no_parent ... ok Oct 14 22:52:37.899 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_sum_of_integer_nodes_when_op_is_addition ... ok Oct 14 22:52:37.899 INFO blam! test ast::block_node::tests::block_node_get_span_returns_span ... ok Oct 14 22:52:37.899 INFO blam! test ast::block_node::tests::block_node_get_value_returns_none ... ok Oct 14 22:52:37.899 INFO blam! test ast::block_node::tests::block_node_set_parent_fails_when_node_already_has_parent ... ok Oct 14 22:52:37.899 INFO blam! test ast::block_node::tests::block_node_set_parent_sets_parent_node ... ok Oct 14 22:52:37.899 INFO blam! test ast::block_node::tests::block_node_visit_returns_error_when_visited_declaration_returns_error ... ok Oct 14 22:52:37.899 INFO blam! test ast::block_node::tests::block_node_visit_returns_void ... ok Oct 14 22:52:37.899 INFO blam! test ast::block_node::tests::block_node_visit_visits_compound_statement ... ok Oct 14 22:52:37.899 INFO blam! test ast::block_node::tests::block_node_visit_visits_declarations ... ok Oct 14 22:52:37.899 INFO blam! test ast::compound_stmt_node::tests::compound_statement_node_get_children_returns_statements ... ok Oct 14 22:52:37.899 INFO blam! test ast::compound_stmt_node::tests::compound_statement_node_get_parent_returns_none_when_node_has_no_parent ... ok Oct 14 22:52:37.899 INFO blam! test ast::compound_stmt_node::tests::compound_statement_node_get_value_returns_none ... ok Oct 14 22:52:37.899 INFO blam! test ast::compound_stmt_node::tests::compound_statement_node_get_span_returns_span ... ok Oct 14 22:52:37.899 INFO blam! test ast::compound_stmt_node::tests::compound_statement_node_set_parent_fails_when_node_already_has_parent ... ok Oct 14 22:52:37.899 INFO blam! test ast::compound_stmt_node::tests::compound_statement_node_set_parent_sets_parent_node ... ok Oct 14 22:52:37.899 INFO blam! test ast::compound_stmt_node::tests::compound_statement_node_visit_returns_void ... ok Oct 14 22:52:37.899 INFO blam! test ast::number_node::tests::number_node_get_span_returns_span ... ok Oct 14 22:52:37.899 INFO blam! test ast::number_node::tests::number_node_new_should_set_span_to_token_span ... ok Oct 14 22:52:37.899 INFO blam! test ast::number_node::tests::number_node_set_parent_fails_when_node_already_has_parent ... ok Oct 14 22:52:37.899 INFO blam! test ast::number_node::tests::number_node_set_parent_sets_parent_node ... ok Oct 14 22:52:37.899 INFO blam! test ast::number_node::tests::number_node_get_value_returns_integer_value_if_it_contains_integer_value ... ok Oct 14 22:52:37.899 INFO blam! test ast::number_node::tests::number_node_get_children_returns_no_children ... ok Oct 14 22:52:37.899 INFO blam! test ast::number_node::tests::number_node_get_parent_returns_none_when_node_has_no_parent ... ok Oct 14 22:52:37.906 INFO blam! test ast::number_node::tests::number_node_get_value_returns_real_value_if_it_contains_real_value ... ok Oct 14 22:52:37.908 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_difference_of_integer_nodes_when_op_is_subtraction ... ok Oct 14 22:52:37.908 INFO blam! test ast::program_node::tests::program_node_get_parent_returns_none_when_node_has_no_parent ... ok Oct 14 22:52:37.908 INFO blam! test ast::number_node::tests::number_node_visit_returns_real_value_if_node_contains_real_value ... ok Oct 14 22:52:37.908 INFO blam! test ast::program_node::tests::program_node_get_children_returns_variable_and_block_nodes ... ok Oct 14 22:52:37.908 INFO blam! test ast::number_node::tests::number_node_visit_returns_integer_value_if_node_contains_integer_value ... ok Oct 14 22:52:37.908 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_error_when_addition_overflows ... ok Oct 14 22:52:37.908 INFO blam! test ast::program_node::tests::program_node_visit_returns_void ... ok Oct 14 22:52:37.908 INFO blam! test ast::tests::ast_add_node_create_contiguous_graph_when_non_connected_node_is_child_of_connected_node ... ok Oct 14 22:52:37.908 INFO blam! test ast::program_node::tests::program_node_get_span_returns_span ... ok Oct 14 22:52:37.908 INFO blam! test ast::tests::ast_add_node_creates_contiguous_graph_when_first_node_is_added ... ok Oct 14 22:52:37.908 INFO blam! test ast::tests::ast_add_node_creates_non_contiguous_graph_when_two_unrelated_nodes_are_added ... ok Oct 14 22:52:37.908 INFO blam! test ast::program_node::tests::program_node_visit_visits_block ... ok Oct 14 22:52:37.909 INFO blam! test ast::program_node::tests::program_node_get_value_returns_name ... ok Oct 14 22:52:37.909 INFO blam! test ast::tests::ast_add_node_sets_root_to_inserted_node_when_first_node_is_added ... ok Oct 14 22:52:37.909 INFO blam! test ast::tests::ast_add_node_sets_root_to_parent_node_when_parent_of_root_is_set ... ok Oct 14 22:52:37.909 INFO blam! test ast::tests::ast_graph_with_two_disconnected_graphs_is_not_contiguous ... ok Oct 14 22:52:37.909 INFO blam! test ast::tests::ast_newly_created_graph_should_have_no_root ... ok Oct 14 22:52:37.909 INFO blam! test ast::type_node::tests::type_node_get_children_returns_no_children ... ok Oct 14 22:52:37.909 INFO blam! test ast::type_node::tests::type_node_get_parent_returns_none_when_node_has_no_parent ... ok Oct 14 22:52:37.909 INFO blam! test ast::type_node::tests::type_node_get_span_returns_span ... ok Oct 14 22:52:37.909 INFO blam! test ast::type_node::tests::type_node_get_value_returns_type ... ok Oct 14 22:52:37.909 INFO blam! test ast::type_node::tests::type_node_new_should_set_span_to_token_span ... ok Oct 14 22:52:37.909 INFO blam! test ast::type_node::tests::type_node_set_parent_fails_when_node_already_has_parent ... ok Oct 14 22:52:37.909 INFO blam! test ast::type_node::tests::type_node_set_parent_sets_parent_node ... ok Oct 14 22:52:37.909 INFO blam! test ast::type_node::tests::type_node_set_span_sets_span ... ok Oct 14 22:52:37.909 INFO blam! test ast::type_node::tests::type_node_visit_returns_void ... ok Oct 14 22:52:37.909 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_get_children_returns_operand ... ok Oct 14 22:52:37.909 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_get_parent_returns_none_when_node_has_no_parent ... ok Oct 14 22:52:37.909 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_get_span_returns_span ... ok Oct 14 22:52:37.909 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_get_value_returns_operator_value ... ok Oct 14 22:52:37.909 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_set_parent_fails_when_node_already_has_parent ... ok Oct 14 22:52:37.910 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_set_parent_sets_parent_node ... ok Oct 14 22:52:37.910 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_visit_returns_error_when_subtraction_overflows ... ok Oct 14 22:52:37.910 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_visit_returns_integer_operand_when_op_is_addition ... ok Oct 14 22:52:37.910 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_visit_returns_negative_integer_operand_when_op_is_subtraction ... ok Oct 14 22:52:37.910 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_visit_returns_negative_real_operand_when_op_is_subtraction ... ok Oct 14 22:52:37.910 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_visit_returns_real_operand_when_op_is_addition ... ok Oct 14 22:52:37.910 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_get_children_returns_variable_and_type ... ok Oct 14 22:52:37.910 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_get_parent_returns_none_when_node_has_no_parent ... ok Oct 14 22:52:37.910 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_get_span_returns_span ... ok Oct 14 22:52:37.910 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_get_value_returns_none ... ok Oct 14 22:52:37.910 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_set_parent_fails_when_node_already_has_parent ... ok Oct 14 22:52:37.910 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_set_parent_sets_parent_node ... ok Oct 14 22:52:37.910 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_visit_added_entry_has_correct_type ... ok Oct 14 22:52:37.911 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_visit_adds_entry_to_symbol_table ... ok Oct 14 22:52:37.911 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_visit_returns_error_if_entry_already_exists ... ok Oct 14 22:52:37.911 INFO blam! test ast::variable_node::tests::variable_node_get_children_returns_no_children ... ok Oct 14 22:52:37.911 INFO blam! test ast::variable_node::tests::variable_node_get_parent_returns_none_when_node_has_no_parent ... ok Oct 14 22:52:37.917 INFO blam! test ast::program_node::tests::program_node_set_parent_fails_when_node_already_has_parent ... ok Oct 14 22:52:37.917 INFO blam! test ast::program_node::tests::program_node_set_parent_sets_parent_node ... ok Oct 14 22:52:37.917 INFO blam! test ast::tests::ast_add_node_returns_one_after_second_element_is_added ... ok Oct 14 22:52:37.917 INFO blam! test ast::tests::ast_add_node_returns_zero_after_first_element_is_added ... ok Oct 14 22:52:37.918 INFO blam! test ast::tests::ast_add_node_root_points_to_first_added_element_when_two_unrelated_nodes_are_added ... ok Oct 14 22:52:37.918 INFO blam! test ast::tests::ast_add_node_parent_links_are_updated_when_node_with_child_links_is_added ... ok Oct 14 22:52:37.918 INFO blam! test ast::variable_node::tests::variable_node_get_span_returns_span ... ok Oct 14 22:52:37.923 INFO blam! test ast::variable_node::tests::variable_node_visit_returns_error_if_variable_doesnt_exist ... ok Oct 14 22:52:37.924 INFO blam! test ast::variable_node::tests::variable_node_visit_returns_error_if_variable_is_uninitialized ... ok Oct 14 22:52:37.925 INFO blam! test ast::variable_node::tests::variable_node_get_value_returns_variable_name ... ok Oct 14 22:52:37.925 INFO blam! test ast::variable_node::tests::variable_node_set_parent_fails_when_node_already_has_parent ... ok Oct 14 22:52:37.925 INFO blam! test ast::variable_node::tests::variable_node_set_parent_sets_parent_node ... ok Oct 14 22:52:37.929 INFO blam! test interpreter::tests::interpreter_assigns_multiple_variables ... ok Oct 14 22:52:37.943 INFO blam! test ast::variable_node::tests::variable_node_visit_returns_value_if_variable_exists ... ok Oct 14 22:52:37.943 INFO blam! test interpreter::tests::interpreter_can_assign_value_of_expression_with_variable_to_other_variable ... ok Oct 14 22:52:37.975 INFO blam! test interpreter::tests::interpreter_returns_result_of_expr_if_input_consists_of_expr_in_parentheses ... ok Oct 14 22:52:37.987 INFO blam! test interpreter::tests::interpreter_should_add_values_when_expression_is_addition ... ok Oct 14 22:52:37.987 INFO blam! test interpreter::tests::interpreter_can_assign_value_of_variable_to_other_variable ... ok Oct 14 22:52:37.988 INFO blam! test interpreter::tests::interpreter_can_evaluate_nested_expressions ... ok Oct 14 22:52:37.988 INFO blam! test interpreter::tests::interpreter_returns_error_when_number_is_assigned_to_undeclared_variable ... ok Oct 14 22:52:37.988 INFO blam! test interpreter::tests::interpreter_returns_error_when_assigning_unknown_variable_to_other_variable ... ok Oct 14 22:52:37.988 INFO blam! test interpreter::tests::interpreter_handles_nested_compound_statements ... ok Oct 14 22:52:38.014 INFO blam! test interpreter::tests::interpreter_should_divide_values_when_expression_is_division ... ok Oct 14 22:52:38.015 INFO blam! test interpreter::tests::interpreter_returns_integer_if_input_consists_of_integer_in_parentheses ... ok Oct 14 22:52:38.015 INFO blam! test interpreter::tests::interpreter_should_evaluate_chained_multiplications_and_divisions_from_left_to_right ... ok Oct 14 22:52:38.016 INFO blam! test interpreter::tests::interpreter_should_give_precedence_to_multiplication_and_division ... ok Oct 14 22:52:38.016 INFO blam! test interpreter::tests::interpreter_should_evaluate_chained_additions_and_subtractions_from_left_to_right ... ok Oct 14 22:52:38.016 INFO blam! test interpreter::tests::interpreter_should_interpret_chained_additions ... ok Oct 14 22:52:38.016 INFO blam! test interpreter::tests::interpreter_should_evaluate_chained_unary_operators ... ok Oct 14 22:52:38.023 INFO blam! test interpreter::tests::interpreter_should_interpret_chained_multiplications ... ok Oct 14 22:52:38.023 INFO blam! test interpreter::tests::interpreter_should_return_error_when_division_by_zero ... ok Oct 14 22:52:38.023 INFO blam! test interpreter::tests::interpreter_should_return_integer_value_if_input_consists_of_only_integer ... ok Oct 14 22:52:38.024 INFO blam! test interpreter::tests::interpreter_should_negate_integer_when_expression_is_unary_minus ... ok Oct 14 22:52:38.024 INFO blam! test ast::tests::ast_add_node_cannot_set_parent_of_node_which_already_has_a_parent ... ok Oct 14 22:52:38.024 INFO blam! test interpreter::tests::interpreter_should_negate_expression_when_expression_is_prefixed_with_unary_minus ... ok Oct 14 22:52:38.024 INFO blam! test interpreter::tests::interpreter_should_return_integer_when_expression_is_unary_plus ... ok Oct 14 22:52:38.024 INFO blam! test lexer::mock_lexer::tests::mocklexer_returns_eof_when_no_more_tokens_are_available ... ok Oct 14 22:52:38.024 INFO blam! test lexer::mock_lexer::tests::mocklexer_returns_first_token_when_calling_get_next_token_for_the_first_time ... ok Oct 14 22:52:38.025 INFO blam! test lexer::mock_lexer::tests::mocklexer_returns_second_token_when_calling_get_next_token_for_the_second_time ... ok Oct 14 22:52:38.025 INFO blam! test lexer::mock_lexer::tests::mocklexer_returns_token_with_value_none_when_encountering_novalue ... ok Oct 14 22:52:38.025 INFO blam! test interpreter::tests::interpreter_should_subtract_values_when_expression_is_subtraction ... ok Oct 14 22:52:38.025 INFO blam! test interpreter::tests::interpreter_should_return_negative_number_when_result_of_subtraction_is_negative ... ok Oct 14 22:52:38.025 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_advances_position_correctly_for_assign_token ... ok Oct 14 22:52:38.026 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_accepts_floating_point_numbers_with_leading_dot ... ok Oct 14 22:52:38.026 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_identifiers_can_start_with_underscore ... ok Oct 14 22:52:38.026 INFO blam! test interpreter::tests::interpreter_should_multiply_values_when_expression_is_multiplication ... ok Oct 14 22:52:38.026 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_identifiers_dont_end_with_underscore ... ok Oct 14 22:52:38.026 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_doesnt_ret_assign_tok_when_input_is_colon_not_followed_by_eq_sign ... ok Oct 14 22:52:38.026 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_assign_token_when_input_is_assignment_operator ... ok Oct 14 22:52:38.027 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_begin_token_when_input_is_begin_keyword_mixed_case ... ok Oct 14 22:52:38.027 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_comma_token_when_input_is_comma ... ok Oct 14 22:52:38.027 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_doesnt_return_colon_token_when_input_is_colon_followed_by_eq ... ok Oct 14 22:52:38.027 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_doesnt_return_assign_token_when_input_is_only_colon ... ok Oct 14 22:52:38.028 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_dot_token_when_input_is_dot ... ok Oct 14 22:52:38.028 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_end_token_when_input_is_end_keyword_lowercase ... ok Oct 14 22:52:38.028 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_end_token_when_input_is_end_keyword_uppercase ... ok Oct 14 22:52:38.028 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_identifier_token_when_input_is_string ... ok Oct 14 22:52:38.028 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_begin_token_when_input_is_begin_keyword_uppercase ... ok Oct 14 22:52:38.028 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_colon_token_when_input_is_colon ... ok Oct 14 22:52:38.029 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_identifiers_dont_start_with_digit ... ok Oct 14 22:52:38.029 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_non_alphanumeric_characters_are_not_part_of_identifier ... ok Oct 14 22:52:38.029 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_eof_when_input_is_empty ... ok Oct 14 22:52:38.029 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_float_division_when_input_is_float_division ... ok Oct 14 22:52:38.029 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_identifier_token_when_input_contains_digits ... ok Oct 14 22:52:38.029 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_op_value_float_division_when_input_is_float_division ... ok Oct 14 22:52:38.030 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_op_value_integer_division_when_input_is_integer_division ... ok Oct 14 22:52:38.030 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_operator_value_minus_when_input_is_operator_minus ... ok Oct 14 22:52:38.030 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_operator_value_plus_when_input_is_operator_plus ... ok Oct 14 22:52:38.031 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_operator_value_times_when_input_is_operator_times ... ok Oct 14 22:52:38.031 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_plus_when_input_is_plus ... ok Oct 14 22:52:38.031 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_program_token_when_input_is_program_keyword ... ok Oct 14 22:52:38.031 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_right_parenthesis_when_input_is_right_parenthesis ... ok Oct 14 22:52:38.032 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_semicolon_token_when_input_is_semicolon ... ok Oct 14 22:52:38.032 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_times_when_input_is_times ... ok Oct 14 22:52:38.032 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_token_or_error_when_input_is_not_empty ... ok Oct 14 22:52:38.032 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_type_integer_when_input_is_integer_keyword ... ok Oct 14 22:52:38.032 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_type_real_when_input_is_real_keyword ... ok Oct 14 22:52:38.032 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_type_specifier_token_when_input_is_integer_keyword ... ok Oct 14 22:52:38.032 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_type_specifier_token_when_input_is_real_keyword ... ok Oct 14 22:52:38.033 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_var_token_when_input_is_var_keyword ... ok Oct 14 22:52:38.033 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_integer_division_when_input_is_integer_division ... ok Oct 14 22:52:38.033 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_left_parenthesis_when_input_is_left_parenthesis ... ok Oct 14 22:52:38.033 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_next_token_when_called_second_time ... ok Oct 14 22:52:38.033 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_identifier_token_with_id_value_when_input_is_string ... ok Oct 14 22:52:38.033 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_should_skip_double_comments_separated_by_whitespace ... ok Oct 14 22:52:38.034 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_should_skip_double_comments ... ok Oct 14 22:52:38.034 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_should_skip_single_comment ... ok Oct 14 22:52:38.034 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_accepts_floating_point_numbers_with_trailing_dot ... ok Oct 14 22:52:38.034 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_accepts_floating_point_numbers_with_leading_dot ... ok Oct 14 22:52:38.034 INFO blam! test lexer::pascal_lexer::tests::lexer_identifiers_are_case_insensitive ... ok Oct 14 22:52:38.035 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_advances_position_correctly_when_parsing_float_with_trailing_dot ... ok Oct 14 22:52:38.035 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_should_skip_comments ... ok Oct 14 22:52:38.035 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_integer_value_when_input_is_digit ... ok Oct 14 22:52:38.035 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_integer_when_input_is_digit ... ok Oct 14 22:52:38.035 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_minus_when_input_is_minus ... ok Oct 14 22:52:38.035 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_advances_position_correctly_when_parsing_float_with_leading_dot ... ok Oct 14 22:52:38.036 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_only_advances_as_long_as_there_are_more_digits_in_the_flt_number ... ok Oct 14 22:52:38.036 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_should_advance_position_correctly ... ok Oct 14 22:52:38.036 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_should_return_error_when_input_is_larger_than_fit_in_i64 ... ok Oct 14 22:52:38.036 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_should_return_number_when_input_fits_in_i64 ... ok Oct 14 22:52:38.036 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_should_handle_whitespace_after_comment ... ok Oct 14 22:52:38.036 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_returns_floating_point_number_with_only_one_point ... ok Oct 14 22:52:38.037 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_returns_multi_digit_integer ... ok Oct 14 22:52:38.037 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_should_advance_position_correctly_when_parsing_float ... ok Oct 14 22:52:38.037 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_should_only_advance_as_long_as_there_are_more_digits ... ok Oct 14 22:52:38.037 INFO blam! test lexer::pascal_lexer::tests::lexer_should_recognize_expressions_that_begin_with_whitespace_characters ... ok Oct 14 22:52:38.037 INFO blam! test lexer::pascal_lexer::tests::lexer_skip_whitespace_should_skip_all_whitespaces_until_eof ... ok Oct 14 22:52:38.038 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_returns_floating_point_number ... ok Oct 14 22:52:38.038 INFO blam! test lexer::pascal_lexer::tests::lexer_should_recognize_expressions_that_contain_whitespace_characters ... ok Oct 14 22:52:38.038 INFO blam! test lexer::pascal_lexer::tests::lexer_skip_whitespace_should_skip_all_whitespaces_until_first_non_whitespace_char ... ok Oct 14 22:52:38.038 INFO blam! test lexer::pascal_lexer::tests::lexer_skip_comments_should_skip_all_characters_enclosed_in_curly_braces ... ok Oct 14 22:52:38.038 INFO blam! test lexer::pascal_lexer::tests::lexer_skip_whitespace_should_not_skip_non_whitespace_characters ... ok Oct 14 22:52:38.043 INFO blam! test parser::tests::parser_assignment_statement_doesnt_parse_assignment_without_variable_on_the_left ... ok Oct 14 22:52:38.043 INFO blam! test parser::tests::parser_assignment_statement_doesnt_parse_assignment_without_expression_on_the_right ... ok Oct 14 22:52:38.043 INFO blam! test lexer::pascal_lexer::tests::lexer_should_recognize_expressions_that_contain_multi_digit_integer ... ok Oct 14 22:52:38.043 INFO blam! test parser::tests::parser_assignment_statement_doesnt_parse_assignment_without_assign_token_in_the_middle ... ok Oct 14 22:52:38.055 INFO blam! test parser::tests::parser_assignment_statement_returns_error_when_missing_variable ... ok Oct 14 22:52:38.055 INFO blam! test parser::tests::parser_assignment_statement_returns_error_when_two_variables_on_lhs ... ok Oct 14 22:52:38.055 INFO blam! test parser::tests::parser_block_parses_compound_statement ... ok Oct 14 22:52:38.055 INFO blam! test parser::tests::parser_assignment_statement_returns_error_when_two_expressions_on_rhs ... ok Oct 14 22:52:38.056 INFO blam! test parser::tests::parser_assignment_statement_parses_assignment_statement_with_expression ... ok Oct 14 22:52:38.056 INFO blam! test parser::tests::parser_assignment_statement_returns_error_when_missing_assignment_operator ... ok Oct 14 22:52:38.056 INFO blam! test parser::tests::parser_block_parses_declarations_and_compound_statement ... ok Oct 14 22:52:38.071 INFO blam! test parser::tests::parser_compound_statement_parses_empty_statement_list ... ok Oct 14 22:52:38.071 INFO blam! test parser::tests::parser_block_returns_error_if_compound_statement_is_missing ... ok Oct 14 22:52:38.071 INFO blam! test parser::tests::parser_compound_statement_parses_compound_statement ... ok Oct 14 22:52:38.071 INFO blam! test parser::tests::parser_compound_statement_parses_nested_compound_statement ... ok Oct 14 22:52:38.079 INFO blam! test parser::tests::parser_compound_statement_returns_error_when_end_is_missing ... ok Oct 14 22:52:38.079 INFO blam! test parser::tests::parser_compound_statement_returns_error_when_end_occurs_twice ... ok Oct 14 22:52:38.079 INFO blam! test parser::tests::parser_block_returns_error_if_two_compound_statements_are_present ... ok Oct 14 22:52:38.080 INFO blam! test parser::tests::parser_assignment_statement_parses_assignment_statement ... ok Oct 14 22:52:38.083 INFO blam! test parser::tests::parser_block_returns_error_if_two_declaration_lists_are_present ... ok Oct 14 22:52:38.087 INFO blam! test parser::tests::parser_compound_statement_returns_error_when_begin_is_repeated_without_matching_end ... ok Oct 14 22:52:38.087 INFO blam! test parser::tests::parser_declarations_parses_multiple_variable_declarations ... ok Oct 14 22:52:38.087 INFO blam! test parser::tests::parser_assignment_statement_returns_error_when_having_two_assignment_operators ... ok Oct 14 22:52:38.087 INFO blam! test parser::tests::parser_declarations_returns_error_if_declarations_are_not_separated_by_semicolon ... ok Oct 14 22:52:38.095 INFO blam! test parser::tests::parser_declarations_parses_variable_declarations ... ok Oct 14 22:52:38.095 INFO blam! test parser::tests::parser_compound_statement_returns_error_when_begin_is_missing ... ok Oct 14 22:52:38.095 INFO blam! test parser::tests::parser_compound_statement_returns_error_when_statements_arent_separated_with_semicolons ... ok Oct 14 22:52:38.095 INFO blam! test parser::tests::parser_declarations_returns_error_if_declarations_are_not_terminated_by_semicolon ... ok Oct 14 22:52:38.096 INFO blam! test parser::tests::parser_eat_should_not_consume_token_if_it_has_the_wrong_type ... ok Oct 14 22:52:38.096 INFO blam! test parser::tests::parser_eat_should_consume_token_if_it_has_the_correct_type ... ok Oct 14 22:52:38.096 INFO blam! test parser::tests::parser_declarations_returns_error_if_var_token_is_missing ... ok Oct 14 22:52:38.096 INFO blam! test parser::tests::parser_declarations_returns_no_declarations_if_no_variable_declarations_are_present ... ok Oct 14 22:52:38.096 INFO blam! test parser::tests::parser_declarations_returns_error_if_var_token_is_repeated ... ok Oct 14 22:52:38.096 INFO blam! test parser::tests::parser_expr_should_create_integer_node_if_input_consists_of_only_integer ... ok Oct 14 22:52:38.097 INFO blam! test parser::tests::parser_expr_should_create_operator_node_when_expression_is_subtraction ... ok Oct 14 22:52:38.097 INFO blam! test parser::tests::parser_expr_should_create_operator_node_when_expression_is_addition ... ok Oct 14 22:52:38.097 INFO blam! test parser::tests::parser_expr_should_not_parse_empty_string ... ok Oct 14 22:52:38.097 INFO blam! test parser::tests::parser_expr_should_not_parse_expressions_that_dont_have_integer_after_operator ... ok Oct 14 22:52:38.097 INFO blam! test parser::tests::parser_expr_should_not_parse_expressions_that_dont_terminate_with_eof ... ok Oct 14 22:52:38.097 INFO blam! test parser::tests::parser_factor_creates_graph_of_expr_if_input_consists_of_expr_in_parentheses ... ok Oct 14 22:52:38.098 INFO blam! test parser::tests::parser_factor_creates_unary_operator_node_if_input_consists_of_unary_minus ... ok Oct 14 22:52:38.098 INFO blam! test parser::tests::parser_factor_creates_integer_node_if_input_consists_of_integer_in_parentheses ... ok Oct 14 22:52:38.098 INFO blam! test parser::tests::parser_factor_creates_unary_operator_node_if_input_consists_of_unary_plus ... ok Oct 14 22:52:38.098 INFO blam! test parser::tests::parser_factor_creates_variable_node_when_it_encounters_identifier ... ok Oct 14 22:52:38.098 INFO blam! test parser::tests::parser_factor_returns_error_if_input_consists_of_unary_division ... ok Oct 14 22:52:38.098 INFO blam! test parser::tests::parser_factor_returns_error_if_input_consists_of_unary_times ... ok Oct 14 22:52:38.099 INFO blam! test parser::tests::parser_factor_returns_error_if_operator_is_followed_by_rparen ... ok Oct 14 22:52:38.099 INFO blam! test parser::tests::parser_factor_returns_error_if_lparen_is_followed_by_rparen ... ok Oct 14 22:52:38.099 INFO blam! test parser::tests::parser_factor_returns_error_if_parentheses_are_mismatched ... ok Oct 14 22:52:38.099 INFO blam! test parser::tests::parser_factor_should_return_integer_node_if_input_consists_of_only_integer ... ok Oct 14 22:52:38.099 INFO blam! test parser::tests::parser_factor_should_return_real_node_if_input_consists_of_real_literal ... ok Oct 14 22:52:38.100 INFO blam! test parser::tests::parser_load_first_token_should_load_first_token ... ok Oct 14 22:52:38.100 INFO blam! test parser::tests::parser_parse_returns_error_when_ends_with_two_dots ... ok Oct 14 22:52:38.100 INFO blam! test parser::tests::parser_program_parses_program ... ok Oct 14 22:52:38.100 INFO blam! test parser::tests::parser_program_parses_program_name ... ok Oct 14 22:52:38.100 INFO blam! test parser::tests::parser_declarations_returns_error_if_declarations_are_terminated_by_two_semicolons ... ok Oct 14 22:52:38.101 INFO blam! test parser::tests::parser_declarations_returns_error_if_var_is_directly_followed_by_semicolon ... ok Oct 14 22:52:38.101 INFO blam! test parser::tests::parser_program_returns_error_when_dot_is_missing ... ok Oct 14 22:52:38.101 INFO blam! test parser::tests::parser_program_returns_error_when_compound_statement_is_missing ... ok Oct 14 22:52:38.101 INFO blam! test parser::tests::parser_program_returns_error_when_program_has_two_names ... ok Oct 14 22:52:38.101 INFO blam! test parser::tests::parser_program_returns_error_when_two_compound_statements_are_present ... ok Oct 14 22:52:38.101 INFO blam! test parser::tests::parser_start_returns_error_if_parentheses_are_mismatched ... ok Oct 14 22:52:38.102 INFO blam! test parser::tests::parser_program_returns_error_when_semicolon_after_program_name_is_missing ... ok Oct 14 22:52:38.102 INFO blam! test parser::tests::parser_program_returns_error_when_two_semicolons_after_program_name ... ok Oct 14 22:52:38.102 INFO blam! test parser::tests::parser_program_returns_error_when_program_name_is_missing ... ok Oct 14 22:52:38.102 INFO blam! test parser::tests::parser_statement_list_can_end_with_semicolon ... ok Oct 14 22:52:38.102 INFO blam! test parser::tests::parser_statement_list_returns_assignment_statement_if_statement_is_assignment ... ok Oct 14 22:52:38.103 INFO blam! test parser::tests::parser_statement_list_can_begin_with_semicolon ... ok Oct 14 22:52:38.103 INFO blam! test parser::tests::parser_statement_list_parses_empty_input ... ok Oct 14 22:52:38.103 INFO blam! test parser::tests::parser_statement_list_returns_only_first_stmt_when_stmts_are_not_separated_by_semicolon ... ok Oct 14 22:52:38.103 INFO blam! test parser::tests::parser_statement_list_returns_error_when_multiple_statements_not_separated_by_semicolon ... ok Oct 14 22:52:38.103 INFO blam! test parser::tests::parser_statement_list_returns_three_statements_when_given_three_statements ... ok Oct 14 22:52:38.103 INFO blam! test parser::tests::parser_statement_list_returns_error_when_statements_not_separated_by_semicolon ... ok Oct 14 22:52:38.103 INFO blam! test parser::tests::parser_statement_list_returns_two_statements_when_statements_are_separated_by_semicolon ... ok Oct 14 22:52:38.104 INFO blam! test parser::tests::parser_statement_returns_compound_statement_if_statement_is_compound_statement ... ok Oct 14 22:52:38.104 INFO blam! test parser::tests::parser_statement_returns_none_if_no_statement_is_present ... ok Oct 14 22:52:38.104 INFO blam! test parser::tests::parser_statement_returns_assignment_statement_if_statement_is_assignment_statement ... ok Oct 14 22:52:38.104 INFO blam! test parser::tests::parser_statement_returns_error_when_both_statement_types_are_not_separated_by_semicolon ... ok Oct 14 22:52:38.104 INFO blam! test parser::tests::parser_term_should_create_operator_node_when_expression_is_multiplication ... ok Oct 14 22:52:38.104 INFO blam! test parser::tests::parser_term_should_not_parse_empty_string ... ok Oct 14 22:52:38.105 INFO blam! test parser::tests::parser_term_should_create_operator_node_when_expression_is_integer_division ... ok Oct 14 22:52:38.105 INFO blam! test parser::tests::parser_term_should_return_integer_node_if_input_consists_of_only_integer ... ok Oct 14 22:52:38.105 INFO blam! test parser::tests::parser_program_returns_error_when_program_keyword_is_missing ... ok Oct 14 22:52:38.105 INFO blam! test parser::tests::parser_program_returns_error_when_program_keyword_occurs_twice ... ok Oct 14 22:52:38.105 INFO blam! test parser::tests::parser_type_spec_parses_real_integer_specifier ... ok Oct 14 22:52:38.105 INFO blam! test parser::tests::parser_type_spec_returns_error_when_two_different_type_specifiers_are_present ... ok Oct 14 22:52:38.106 INFO blam! test parser::tests::parser_type_spec_returns_error_when_no_type_specifier_is_present ... ok Oct 14 22:52:38.106 INFO blam! test parser::tests::parser_var_decl_parses_single_variable_declaration ... ok Oct 14 22:52:38.106 INFO blam! test parser::tests::parser_var_decl_parses_three_variable_declarations ... ok Oct 14 22:52:38.106 INFO blam! test parser::tests::parser_declarations_returns_error_if_var_is_not_followed_by_variable_declarations ... ok Oct 14 22:52:38.106 INFO blam! test parser::tests::parser_type_spec_returns_error_when_two_integer_type_specifiers_are_present ... ok Oct 14 22:52:38.106 INFO blam! test parser::tests::parser_type_spec_returns_error_when_two_real_type_specifiers_are_present ... ok Oct 14 22:52:38.106 INFO blam! test parser::tests::parser_term_should_create_operator_node_when_expression_is_float_division ... ok Oct 14 22:52:38.107 INFO blam! test parser::tests::parser_term_should_not_parse_expressions_that_dont_terminate_with_eof ... ok Oct 14 22:52:38.107 INFO blam! test parser::tests::parser_type_spec_parses_integer_type_specifier ... ok Oct 14 22:52:38.107 INFO blam! test parser::tests::parser_term_should_not_parse_expressions_that_dont_have_integer_after_operator ... ok Oct 14 22:52:38.107 INFO blam! test parser::tests::parser_var_decl_returns_error_when_two_type_specifiers_are_present ... ok Oct 14 22:52:38.107 INFO blam! test parser::tests::parser_var_decl_returns_err_when_second_and_third_identifier_are_not_separated_by_comma ... ok Oct 14 22:52:38.108 INFO blam! test parser::tests::parser_var_decl_returns_error_when_no_identifier_is_present ... ok Oct 14 22:52:38.108 INFO blam! test parser::tests::parser_var_decl_returns_error_when_no_identifier_is_present_after_comma ... ok Oct 14 22:52:38.108 INFO blam! test parser::tests::parser_var_decl_returns_error_when_no_type_specifier_is_present ... ok Oct 14 22:52:38.108 INFO blam! test parser::tests::parser_var_decl_returns_error_when_two_identifiers_are_separated_by_two_commas ... ok Oct 14 22:52:38.108 INFO blam! test parser::tests::parser_var_decl_returns_error_when_two_identifiers_are_not_separated_by_comma ... ok Oct 14 22:52:38.108 INFO blam! test parser::tests::parser_var_decl_parses_two_variable_declarations ... ok Oct 14 22:52:38.108 INFO blam! test parser::tests::parser_variable_returns_error_when_token_is_no_identifier ... ok Oct 14 22:52:38.109 INFO blam! test parser::tests::parser_variable_creates_variable_node_when_token_is_identifier ... ok Oct 14 22:52:38.109 INFO blam! test parser::tests::parser_var_decl_returns_error_when_type_specifier_is_separated_by_two_colons ... ok Oct 14 22:52:38.109 INFO blam! test parser::tests::parser_var_decl_returns_error_when_type_specifier_is_not_after_colon ... ok Oct 14 22:52:38.110 INFO blam! Oct 14 22:52:38.110 INFO blam! test result: ok. 322 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out Oct 14 22:52:38.110 INFO blam! Oct 14 22:52:38.127 INFO kablam! su: No module specific data is present Oct 14 22:52:38.767 INFO running `"docker" "rm" "-f" "d96eae8137d22d8b3c56306254d347620ab1bcc263d4c4daade645c92848ca76"` Oct 14 22:52:39.068 INFO blam! d96eae8137d22d8b3c56306254d347620ab1bcc263d4c4daade645c92848ca76