Nov 01 11:30:48.514 INFO testing df5602/interpreter_tutorial against 1.30.0 for beta-1.31-1
Nov 01 11:30:48.515 INFO running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/beta-1.31-1/worker-4/1.30.0:/target:rw,Z" "-v" "/mnt/big/crater/work/local/test-source/worker-4/beta-1.31-1/1.30.0:/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 +1.30.0 build --frozen" "-e" "CARGO_TARGET_DIR=/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/cargo-home" "-e" "RUSTUP_HOME=/rustup-home" "-m" "1536M" "--network" "none" "crater"`
Nov 01 11:30:48.934 INFO blam! 20a856b54f1efa23b99930cff9e8f918918ae2a032ea9abcb498bf0236e35a7d
Nov 01 11:30:48.936 INFO running `"docker" "start" "-a" "20a856b54f1efa23b99930cff9e8f918918ae2a032ea9abcb498bf0236e35a7d"`
Nov 01 11:30:50.162 INFO kablam! usermod: no changes
Nov 01 11:30:50.271 INFO kablam!    Compiling leftpad v0.2.0
Nov 01 11:30:51.105 INFO kablam!    Compiling interpreter_tutorial v0.1.0 (/source)
Nov 01 11:30:51.613 INFO kablam! warning: unused macro definition
Nov 01 11:30:51.613 INFO kablam!  --> src/ast/macros.rs:1:1
Nov 01 11:30:51.613 INFO kablam!   |
Nov 01 11:30:51.613 INFO kablam! 1 | / macro_rules! int_node {
Nov 01 11:30:51.613 INFO kablam! 2 | |     ($ast:expr, $value:expr) => {{
Nov 01 11:30:51.613 INFO kablam! 3 | |         let node = NumberNode::new(Value::Integer($value), 
Nov 01 11:30:51.613 INFO kablam! 4 | |                                    Token::new(TokenType::IntegerLiteral, 
Nov 01 11:30:51.613 INFO kablam! ... |
Nov 01 11:30:51.613 INFO kablam! 8 | |     }}
Nov 01 11:30:51.613 INFO kablam! 9 | | }
Nov 01 11:30:51.613 INFO kablam!   | |_^
Nov 01 11:30:51.613 INFO kablam!   |
Nov 01 11:30:51.613 INFO kablam!   = note: #[warn(unused_macros)] on by default
Nov 01 11:30:51.613 INFO kablam! 
Nov 01 11:30:51.613 INFO kablam! warning: unused macro definition
Nov 01 11:30:51.613 INFO kablam!   --> src/ast/macros.rs:11:1
Nov 01 11:30:51.613 INFO kablam!    |
Nov 01 11:30:51.613 INFO kablam! 11 | / macro_rules! real_node {
Nov 01 11:30:51.613 INFO kablam! 12 | |     ($ast:expr, $value:expr) => {{
Nov 01 11:30:51.613 INFO kablam! 13 | |         let node = NumberNode::new(Value::Real($value), 
Nov 01 11:30:51.613 INFO kablam! 14 | |                                    Token::new(TokenType::RealLiteral, 
Nov 01 11:30:51.613 INFO kablam! ...  |
Nov 01 11:30:51.613 INFO kablam! 18 | |     }}
Nov 01 11:30:51.613 INFO kablam! 19 | | }
Nov 01 11:30:51.613 INFO kablam!    | |_^
Nov 01 11:30:51.613 INFO kablam! 
Nov 01 11:30:51.613 INFO kablam! warning: unused macro definition
Nov 01 11:30:51.613 INFO kablam!   --> src/ast/macros.rs:21:1
Nov 01 11:30:51.613 INFO kablam!    |
Nov 01 11:30:51.613 INFO kablam! 21 | / macro_rules! binop_node {
Nov 01 11:30:51.613 INFO kablam! 22 | |     ($ast:expr, $left:expr, $right:expr, $op:expr) => {{
Nov 01 11:30:51.613 INFO kablam! 23 | |         let node = BinaryOperatorNode::new($left, $right, $op,
Nov 01 11:30:51.613 INFO kablam! 24 | |                                            Token::new(TokenType::Operator,
Nov 01 11:30:51.613 INFO kablam! ...  |
Nov 01 11:30:51.613 INFO kablam! 28 | |     }}
Nov 01 11:30:51.614 INFO kablam! 29 | | }
Nov 01 11:30:51.614 INFO kablam!    | |_^
Nov 01 11:30:51.614 INFO kablam! 
Nov 01 11:30:51.614 INFO kablam! warning: unused macro definition
Nov 01 11:30:51.614 INFO kablam!   --> src/ast/macros.rs:31:1
Nov 01 11:30:51.614 INFO kablam!    |
Nov 01 11:30:51.614 INFO kablam! 31 | / macro_rules! unop_node {
Nov 01 11:30:51.614 INFO kablam! 32 | |     ($ast:expr, $operand:expr, $op:expr) => {{
Nov 01 11:30:51.614 INFO kablam! 33 | |         let node = UnaryOperatorNode::new($operand, $op,
Nov 01 11:30:51.614 INFO kablam! 34 | |                                           Token::new(TokenType::Operator,
Nov 01 11:30:51.614 INFO kablam! ...  |
Nov 01 11:30:51.614 INFO kablam! 38 | |     }}
Nov 01 11:30:51.614 INFO kablam! 39 | | }
Nov 01 11:30:51.614 INFO kablam!    | |_^
Nov 01 11:30:51.614 INFO kablam! 
Nov 01 11:30:51.614 INFO kablam! warning: unused macro definition
Nov 01 11:30:51.614 INFO kablam!   --> src/ast/macros.rs:41:1
Nov 01 11:30:51.614 INFO kablam!    |
Nov 01 11:30:51.614 INFO kablam! 41 | / macro_rules! cmpd_stmt_node {
Nov 01 11:30:51.614 INFO kablam! 42 | |     ($ast:expr, $statements:expr) => {{
Nov 01 11:30:51.614 INFO kablam! 43 | |         let node = CompoundStmtNode::new($statements,
Nov 01 11:30:51.614 INFO kablam! 44 | |                                          Token::new(TokenType::Begin, None, Span::default()),
Nov 01 11:30:51.614 INFO kablam! ...  |
Nov 01 11:30:51.614 INFO kablam! 47 | |     }}
Nov 01 11:30:51.614 INFO kablam! 48 | | }
Nov 01 11:30:51.614 INFO kablam!    | |_^
Nov 01 11:30:51.614 INFO kablam! 
Nov 01 11:30:51.614 INFO kablam! warning: unused macro definition
Nov 01 11:30:51.614 INFO kablam!   --> src/ast/macros.rs:50:1
Nov 01 11:30:51.614 INFO kablam!    |
Nov 01 11:30:51.614 INFO kablam! 50 | / macro_rules! var_node {
Nov 01 11:30:51.614 INFO kablam! 51 | |     ($ast:expr, $name:expr) => {{
Nov 01 11:30:51.614 INFO kablam! 52 | |         let node = VariableNode::new($name.to_string(),
Nov 01 11:30:51.614 INFO kablam! 53 | |                                      Token::new(TokenType::Identifier,
Nov 01 11:30:51.614 INFO kablam! ...  |
Nov 01 11:30:51.614 INFO kablam! 57 | |     }}
Nov 01 11:30:51.614 INFO kablam! 58 | | }
Nov 01 11:30:51.614 INFO kablam!    | |_^
Nov 01 11:30:51.614 INFO kablam! 
Nov 01 11:30:51.631 INFO kablam! warning: unused macro definition
Nov 01 11:30:51.631 INFO kablam!   --> src/ast/macros.rs:60:1
Nov 01 11:30:51.631 INFO kablam!    |
Nov 01 11:30:51.631 INFO kablam! 60 | / macro_rules! assign_node {
Nov 01 11:30:51.631 INFO kablam! 61 | |     ($ast:expr, $var:expr, $expr:expr) => {{
Nov 01 11:30:51.631 INFO kablam! 62 | |         let node = AssignmentStmtNode::new($var, $expr,
Nov 01 11:30:51.631 INFO kablam! 63 | |                                            Token::new(TokenType::Assign, None, Span::default()));
Nov 01 11:30:51.631 INFO kablam! 64 | |         $ast.add_node(node)
Nov 01 11:30:51.631 INFO kablam! 65 | |     }}
Nov 01 11:30:51.631 INFO kablam! 66 | | }
Nov 01 11:30:51.631 INFO kablam!    | |_^
Nov 01 11:30:51.631 INFO kablam! 
Nov 01 11:30:51.631 INFO kablam! warning: unused macro definition
Nov 01 11:30:51.631 INFO kablam!   --> src/ast/macros.rs:68:1
Nov 01 11:30:51.631 INFO kablam!    |
Nov 01 11:30:51.631 INFO kablam! 68 | / macro_rules! block_node {
Nov 01 11:30:51.631 INFO kablam! 69 | |     ($ast:expr, $declarations:expr, $cmpd_stmt:expr) => {{
Nov 01 11:30:51.631 INFO kablam! 70 | |         let node = BlockNode::new($declarations, $cmpd_stmt);
Nov 01 11:30:51.631 INFO kablam! 71 | |         $ast.add_node(node)
Nov 01 11:30:51.631 INFO kablam! 72 | |     }}
Nov 01 11:30:51.631 INFO kablam! 73 | | }
Nov 01 11:30:51.631 INFO kablam!    | |_^
Nov 01 11:30:51.631 INFO kablam! 
Nov 01 11:30:51.631 INFO kablam! warning: unused macro definition
Nov 01 11:30:51.631 INFO kablam!   --> src/ast/macros.rs:75:1
Nov 01 11:30:51.631 INFO kablam!    |
Nov 01 11:30:51.631 INFO kablam! 75 | / macro_rules! type_node {
Nov 01 11:30:51.631 INFO kablam! 76 | |     ($ast:expr, $type_spec:expr) => {{
Nov 01 11:30:51.631 INFO kablam! 77 | |         let node = TypeNode::new($type_spec,
Nov 01 11:30:51.631 INFO kablam! 78 | |                                  Token::new(TokenType::TypeSpecifier,
Nov 01 11:30:51.631 INFO kablam! ...  |
Nov 01 11:30:51.631 INFO kablam! 82 | |     }}
Nov 01 11:30:51.631 INFO kablam! 83 | | }
Nov 01 11:30:51.631 INFO kablam!    | |_^
Nov 01 11:30:51.631 INFO kablam! 
Nov 01 11:30:51.631 INFO kablam! warning: unused macro definition
Nov 01 11:30:51.631 INFO kablam!   --> src/ast/macros.rs:85:1
Nov 01 11:30:51.631 INFO kablam!    |
Nov 01 11:30:51.631 INFO kablam! 85 | / macro_rules! var_decl_node {
Nov 01 11:30:51.631 INFO kablam! 86 | |     ($ast:expr, $var_name:expr, $type_spec:expr) => {{
Nov 01 11:30:51.631 INFO kablam! 87 | |         let node = VariableDeclNode::new($var_name, $type_spec);
Nov 01 11:30:51.631 INFO kablam! 88 | |         $ast.add_node(node)
Nov 01 11:30:51.631 INFO kablam! 89 | |     }}
Nov 01 11:30:51.631 INFO kablam! 90 | | }
Nov 01 11:30:51.631 INFO kablam!    | |_^
Nov 01 11:30:51.631 INFO kablam! 
Nov 01 11:30:51.631 INFO kablam! warning: unused macro definition
Nov 01 11:30:51.631 INFO kablam!   --> src/ast/macros.rs:92:1
Nov 01 11:30:51.631 INFO kablam!    |
Nov 01 11:30:51.631 INFO kablam! 92 | / macro_rules! program_node {
Nov 01 11:30:51.631 INFO kablam! 93 | |     ($ast:expr, $name:expr, $variable:expr, $block:expr) => {{
Nov 01 11:30:51.631 INFO kablam! 94 | |         let node = ProgramNode::new($name.to_string(), $variable, $block);
Nov 01 11:30:51.632 INFO kablam! 95 | |         $ast.add_node(node)
Nov 01 11:30:51.632 INFO kablam! 96 | |     }}
Nov 01 11:30:51.632 INFO kablam! 97 | | }
Nov 01 11:30:51.632 INFO kablam!    | |_^
Nov 01 11:30:51.632 INFO kablam! 
Nov 01 11:30:54.129 INFO kablam!     Finished dev [unoptimized + debuginfo] target(s) in 3.94s
Nov 01 11:30:54.132 INFO kablam! su: No module specific data is present
Nov 01 11:30:54.683 INFO running `"docker" "rm" "-f" "20a856b54f1efa23b99930cff9e8f918918ae2a032ea9abcb498bf0236e35a7d"`
Nov 01 11:30:54.829 INFO blam! 20a856b54f1efa23b99930cff9e8f918918ae2a032ea9abcb498bf0236e35a7d
Nov 01 11:30:54.835 INFO running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/beta-1.31-1/worker-4/1.30.0:/target:rw,Z" "-v" "/mnt/big/crater/work/local/test-source/worker-4/beta-1.31-1/1.30.0:/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 +1.30.0 test --frozen --no-run" "-e" "CARGO_TARGET_DIR=/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/cargo-home" "-e" "RUSTUP_HOME=/rustup-home" "-m" "1536M" "--network" "none" "crater"`
Nov 01 11:30:55.163 INFO blam! e5dbb67259633de805039e3498ad495494f7e43be16c6eafafbe6ae0eb5c7684
Nov 01 11:30:55.163 INFO running `"docker" "start" "-a" "e5dbb67259633de805039e3498ad495494f7e43be16c6eafafbe6ae0eb5c7684"`
Nov 01 11:30:55.747 INFO kablam! usermod: no changes
Nov 01 11:30:55.814 INFO kablam!    Compiling interpreter_tutorial v0.1.0 (/source)
Nov 01 11:30:56.757 INFO kablam! warning: unnecessary parentheses around function argument
Nov 01 11:30:56.757 INFO kablam!    --> src/ast/assignment_stmt_node.rs:251:50
Nov 01 11:30:56.757 INFO kablam!     |
Nov 01 11:30:56.757 INFO kablam! 251 |                                  real_node!(ast, (i64::MAX as f64 + 1000.0)));
Nov 01 11:30:56.757 INFO kablam!     |                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
Nov 01 11:30:56.757 INFO kablam!     |
Nov 01 11:30:56.757 INFO kablam!     = note: #[warn(unused_parens)] on by default
Nov 01 11:30:56.757 INFO kablam! 
Nov 01 11:30:56.757 INFO kablam! warning: unnecessary parentheses around function argument
Nov 01 11:30:56.757 INFO kablam!    --> src/ast/assignment_stmt_node.rs:251:50
Nov 01 11:30:56.757 INFO kablam!     |
Nov 01 11:30:56.757 INFO kablam! 251 |                                  real_node!(ast, (i64::MAX as f64 + 1000.0)));
Nov 01 11:30:56.757 INFO kablam!     |                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
Nov 01 11:30:56.757 INFO kablam! 
Nov 01 11:31:02.894 INFO kablam!     Finished dev [unoptimized + debuginfo] target(s) in 7.11s
Nov 01 11:31:02.905 INFO kablam! su: No module specific data is present
Nov 01 11:31:03.613 INFO running `"docker" "rm" "-f" "e5dbb67259633de805039e3498ad495494f7e43be16c6eafafbe6ae0eb5c7684"`
Nov 01 11:31:03.835 INFO blam! e5dbb67259633de805039e3498ad495494f7e43be16c6eafafbe6ae0eb5c7684
Nov 01 11:31:03.856 INFO running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/beta-1.31-1/worker-4/1.30.0:/target:rw,Z" "-v" "/mnt/big/crater/work/local/test-source/worker-4/beta-1.31-1/1.30.0:/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 +1.30.0 test --frozen" "-e" "CARGO_TARGET_DIR=/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/cargo-home" "-e" "RUSTUP_HOME=/rustup-home" "-m" "1536M" "--network" "none" "crater"`
Nov 01 11:31:04.331 INFO blam! de7a2355ec5eae3bed935d48d748c7b034231c0b3e5354b823051520f0eb398f
Nov 01 11:31:04.335 INFO running `"docker" "start" "-a" "de7a2355ec5eae3bed935d48d748c7b034231c0b3e5354b823051520f0eb398f"`
Nov 01 11:31:05.187 INFO kablam! usermod: no changes
Nov 01 11:31:05.227 INFO kablam!     Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Nov 01 11:31:05.231 INFO kablam!      Running /target/debug/deps/interpreter_tutorial-3388a4735532a452
Nov 01 11:31:05.233 INFO blam! 
Nov 01 11:31:05.233 INFO blam! running 322 tests
Nov 01 11:31:05.243 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_get_span_returns_span ... ok
Nov 01 11:31:05.243 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_get_children_returns_variable_and_expression ... ok
Nov 01 11:31:05.244 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_get_parent_returns_none_when_node_has_no_parent ... ok
Nov 01 11:31:05.251 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_visit_updates_entry_in_symbol_table_2 ... ok
Nov 01 11:31:05.251 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_visit_converts_the_expression_to_target_type_real ... ok
Nov 01 11:31:05.251 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_visit_updates_entry_in_symbol_table_1 ... ok
Nov 01 11:31:05.251 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_visit_converts_the_expression_to_target_type_integer ... ok
Nov 01 11:31:05.251 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_set_parent_fails_when_node_already_has_parent ... ok
Nov 01 11:31:05.251 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_set_parent_sets_parent_node ... ok
Nov 01 11:31:05.251 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_get_value_returns_none ... ok
Nov 01 11:31:05.251 INFO blam! test ast::assignment_stmt_node::tests::assignment_statement_node_visit_casting_to_integer_with_overflow_returns_error ... ok
Nov 01 11:31:05.263 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_get_value_returns_operator_value ... ok
Nov 01 11:31:05.263 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_set_parent_sets_parent_node ... ok
Nov 01 11:31:05.263 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_difference_of_integer_nodes_when_op_is_subtraction ... ok
Nov 01 11:31:05.263 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_get_parent_returns_none_when_node_has_no_parent ... ok
Nov 01 11:31:05.263 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_get_span_returns_span ... ok
Nov 01 11:31:05.263 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_set_parent_fails_when_node_already_has_parent ... ok
Nov 01 11:31:05.263 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_integer_div_gives_floored_quotient_if_one_operand_is_real ... ok
Nov 01 11:31:05.263 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_get_children_returns_left_and_right_children ... ok
Nov 01 11:31:05.263 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_quotient_of_nodes_when_op_is_float_division ... ok
Nov 01 11:31:05.268 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_error_when_op_is_division_and_rhs_is_zero ... ok
Nov 01 11:31:05.268 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_error_when_subtraction_overflows ... ok
Nov 01 11:31:05.268 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_error_when_addition_overflows ... ok
Nov 01 11:31:05.268 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_error_when_division_overflows ... ok
Nov 01 11:31:05.268 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_error_when_multiplication_overflows ... ok
Nov 01 11:31:05.268 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_product_of_integer_nodes_when_op_is_multiplication ... ok
Nov 01 11:31:05.268 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_quotient_of_integer_nodes_when_op_is_int_division ... ok
Nov 01 11:31:05.268 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_real_difference_if_at_least_one_operand_is_real ... ok
Nov 01 11:31:05.268 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_sum_of_integer_nodes_when_op_is_addition ... ok
Nov 01 11:31:05.268 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_real_product_if_at_least_one_operand_is_real ... ok
Nov 01 11:31:05.275 INFO blam! test ast::block_node::tests::block_node_get_children_returns_declarations_and_compound_statement ... ok
Nov 01 11:31:05.275 INFO blam! test ast::block_node::tests::block_node_get_parent_returns_none_when_node_has_no_parent ... ok
Nov 01 11:31:05.275 INFO blam! test ast::block_node::tests::block_node_set_parent_sets_parent_node ... ok
Nov 01 11:31:05.275 INFO blam! test ast::binary_operator_node::tests::binary_operator_node_visit_returns_real_sum_if_at_least_one_operand_is_a_real ... ok
Nov 01 11:31:05.275 INFO blam! test ast::block_node::tests::block_node_get_span_returns_span ... ok
Nov 01 11:31:05.275 INFO blam! test ast::block_node::tests::block_node_get_value_returns_none ... ok
Nov 01 11:31:05.275 INFO blam! test ast::block_node::tests::block_node_set_parent_fails_when_node_already_has_parent ... ok
Nov 01 11:31:05.275 INFO blam! test ast::block_node::tests::block_node_visit_returns_void ... ok
Nov 01 11:31:05.275 INFO blam! test ast::block_node::tests::block_node_visit_returns_error_when_visited_declaration_returns_error ... ok
Nov 01 11:31:05.275 INFO blam! test ast::compound_stmt_node::tests::compound_statement_node_set_parent_fails_when_node_already_has_parent ... ok
Nov 01 11:31:05.275 INFO blam! test ast::compound_stmt_node::tests::compound_statement_node_get_children_returns_statements ... ok
Nov 01 11:31:05.275 INFO blam! test ast::compound_stmt_node::tests::compound_statement_node_get_parent_returns_none_when_node_has_no_parent ... ok
Nov 01 11:31:05.275 INFO blam! test ast::compound_stmt_node::tests::compound_statement_node_get_span_returns_span ... ok
Nov 01 11:31:05.275 INFO blam! test ast::compound_stmt_node::tests::compound_statement_node_get_value_returns_none ... ok
Nov 01 11:31:05.275 INFO blam! test ast::number_node::tests::number_node_get_span_returns_span ... ok
Nov 01 11:31:05.275 INFO blam! test ast::number_node::tests::number_node_get_parent_returns_none_when_node_has_no_parent ... ok
Nov 01 11:31:05.275 INFO blam! test ast::number_node::tests::number_node_get_children_returns_no_children ... ok
Nov 01 11:31:05.275 INFO blam! test ast::number_node::tests::number_node_get_value_returns_real_value_if_it_contains_real_value ... ok
Nov 01 11:31:05.275 INFO blam! test ast::number_node::tests::number_node_set_parent_fails_when_node_already_has_parent ... ok
Nov 01 11:31:05.275 INFO blam! test ast::number_node::tests::number_node_new_should_set_span_to_token_span ... ok
Nov 01 11:31:05.275 INFO blam! test ast::number_node::tests::number_node_set_parent_sets_parent_node ... ok
Nov 01 11:31:05.275 INFO blam! test ast::number_node::tests::number_node_visit_returns_integer_value_if_node_contains_integer_value ... ok
Nov 01 11:31:05.275 INFO blam! test ast::number_node::tests::number_node_visit_returns_real_value_if_node_contains_real_value ... ok
Nov 01 11:31:05.275 INFO blam! test ast::program_node::tests::program_node_get_children_returns_variable_and_block_nodes ... ok
Nov 01 11:31:05.275 INFO blam! test ast::program_node::tests::program_node_get_parent_returns_none_when_node_has_no_parent ... ok
Nov 01 11:31:05.275 INFO blam! test ast::program_node::tests::program_node_get_value_returns_name ... ok
Nov 01 11:31:05.275 INFO blam! test ast::program_node::tests::program_node_set_parent_fails_when_node_already_has_parent ... ok
Nov 01 11:31:05.275 INFO blam! test ast::program_node::tests::program_node_set_parent_sets_parent_node ... ok
Nov 01 11:31:05.275 INFO blam! test ast::program_node::tests::program_node_visit_returns_void ... ok
Nov 01 11:31:05.275 INFO blam! test ast::compound_stmt_node::tests::compound_statement_node_set_parent_sets_parent_node ... ok
Nov 01 11:31:05.275 INFO blam! test ast::program_node::tests::program_node_visit_visits_block ... ok
Nov 01 11:31:05.275 INFO blam! test ast::tests::ast_add_node_create_contiguous_graph_when_non_connected_node_is_child_of_connected_node ... ok
Nov 01 11:31:05.279 INFO blam! test ast::block_node::tests::block_node_visit_visits_declarations ... ok
Nov 01 11:31:05.281 INFO blam! test ast::tests::ast_add_node_creates_non_contiguous_graph_when_two_unrelated_nodes_are_added ... ok
Nov 01 11:31:05.282 INFO blam! test ast::block_node::tests::block_node_visit_visits_compound_statement ... ok
Nov 01 11:31:05.282 INFO blam! test ast::compound_stmt_node::tests::compound_statement_node_visit_returns_void ... ok
Nov 01 11:31:05.282 INFO blam! test ast::program_node::tests::program_node_get_span_returns_span ... ok
Nov 01 11:31:05.282 INFO blam! test ast::number_node::tests::number_node_get_value_returns_integer_value_if_it_contains_integer_value ... ok
Nov 01 11:31:05.283 INFO blam! test ast::tests::ast_add_node_parent_links_are_updated_when_node_with_child_links_is_added ... ok
Nov 01 11:31:05.292 INFO blam! test ast::tests::ast_add_node_returns_one_after_second_element_is_added ... ok
Nov 01 11:31:05.292 INFO blam! test ast::tests::ast_add_node_creates_contiguous_graph_when_first_node_is_added ... ok
Nov 01 11:31:05.292 INFO blam! test ast::tests::ast_add_node_sets_root_to_inserted_node_when_first_node_is_added ... ok
Nov 01 11:31:05.292 INFO blam! test ast::tests::ast_add_node_root_points_to_first_added_element_when_two_unrelated_nodes_are_added ... ok
Nov 01 11:31:05.292 INFO blam! test ast::tests::ast_add_node_sets_root_to_parent_node_when_parent_of_root_is_set ... ok
Nov 01 11:31:05.292 INFO blam! test ast::tests::ast_add_node_returns_zero_after_first_element_is_added ... ok
Nov 01 11:31:05.292 INFO blam! test ast::type_node::tests::type_node_new_should_set_span_to_token_span ... ok
Nov 01 11:31:05.292 INFO blam! test ast::tests::ast_newly_created_graph_should_have_no_root ... ok
Nov 01 11:31:05.292 INFO blam! test ast::type_node::tests::type_node_get_children_returns_no_children ... ok
Nov 01 11:31:05.292 INFO blam! test ast::type_node::tests::type_node_set_parent_fails_when_node_already_has_parent ... ok
Nov 01 11:31:05.292 INFO blam! test ast::type_node::tests::type_node_set_parent_sets_parent_node ... ok
Nov 01 11:31:05.299 INFO blam! test ast::type_node::tests::type_node_set_span_sets_span ... ok
Nov 01 11:31:05.299 INFO blam! test ast::type_node::tests::type_node_get_span_returns_span ... ok
Nov 01 11:31:05.299 INFO blam! test ast::type_node::tests::type_node_get_value_returns_type ... ok
Nov 01 11:31:05.299 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_get_parent_returns_none_when_node_has_no_parent ... ok
Nov 01 11:31:05.310 INFO blam! test ast::tests::ast_graph_with_two_disconnected_graphs_is_not_contiguous ... ok
Nov 01 11:31:05.311 INFO blam! test ast::type_node::tests::type_node_visit_returns_void ... ok
Nov 01 11:31:05.311 INFO blam! test ast::type_node::tests::type_node_get_parent_returns_none_when_node_has_no_parent ... ok
Nov 01 11:31:05.311 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_get_span_returns_span ... ok
Nov 01 11:31:05.311 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_set_parent_fails_when_node_already_has_parent ... ok
Nov 01 11:31:05.311 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_get_children_returns_operand ... ok
Nov 01 11:31:05.311 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_get_value_returns_operator_value ... ok
Nov 01 11:31:05.311 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_visit_returns_negative_real_operand_when_op_is_subtraction ... ok
Nov 01 11:31:05.311 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_visit_returns_real_operand_when_op_is_addition ... ok
Nov 01 11:31:05.311 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_get_children_returns_variable_and_type ... ok
Nov 01 11:31:05.311 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_visit_returns_negative_integer_operand_when_op_is_subtraction ... ok
Nov 01 11:31:05.311 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_visit_returns_integer_operand_when_op_is_addition ... ok
Nov 01 11:31:05.311 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_visit_returns_error_when_subtraction_overflows ... ok
Nov 01 11:31:05.311 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_get_span_returns_span ... ok
Nov 01 11:31:05.311 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_set_parent_fails_when_node_already_has_parent ... ok
Nov 01 11:31:05.311 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_get_value_returns_none ... ok
Nov 01 11:31:05.311 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_set_parent_sets_parent_node ... ok
Nov 01 11:31:05.311 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_visit_added_entry_has_correct_type ... ok
Nov 01 11:31:05.314 INFO blam! test ast::unary_operator_node::tests::unary_operator_node_set_parent_sets_parent_node ... ok
Nov 01 11:31:05.314 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_get_parent_returns_none_when_node_has_no_parent ... ok
Nov 01 11:31:05.315 INFO blam! test ast::variable_node::tests::variable_node_get_parent_returns_none_when_node_has_no_parent ... ok
Nov 01 11:31:05.315 INFO blam! test ast::variable_node::tests::variable_node_get_span_returns_span ... ok
Nov 01 11:31:05.319 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_visit_adds_entry_to_symbol_table ... ok
Nov 01 11:31:05.319 INFO blam! test ast::variable_decl_node::tests::variable_decl_node_visit_returns_error_if_entry_already_exists ... ok
Nov 01 11:31:05.319 INFO blam! test ast::variable_node::tests::variable_node_get_children_returns_no_children ... ok
Nov 01 11:31:05.319 INFO blam! test ast::variable_node::tests::variable_node_set_parent_sets_parent_node ... ok
Nov 01 11:31:05.319 INFO blam! test ast::variable_node::tests::variable_node_set_parent_fails_when_node_already_has_parent ... ok
Nov 01 11:31:05.319 INFO blam! test ast::variable_node::tests::variable_node_get_value_returns_variable_name ... ok
Nov 01 11:31:05.319 INFO blam! test ast::variable_node::tests::variable_node_visit_returns_error_if_variable_doesnt_exist ... ok
Nov 01 11:31:05.319 INFO blam! test ast::variable_node::tests::variable_node_visit_returns_error_if_variable_is_uninitialized ... ok
Nov 01 11:31:05.319 INFO blam! test ast::variable_node::tests::variable_node_visit_returns_value_if_variable_exists ... ok
Nov 01 11:31:05.319 INFO blam! test interpreter::tests::interpreter_assigns_multiple_variables ... ok
Nov 01 11:31:05.319 INFO blam! test interpreter::tests::interpreter_returns_integer_if_input_consists_of_integer_in_parentheses ... ok
Nov 01 11:31:05.319 INFO blam! test interpreter::tests::interpreter_returns_error_when_number_is_assigned_to_undeclared_variable ... ok
Nov 01 11:31:05.319 INFO blam! test interpreter::tests::interpreter_can_assign_value_of_variable_to_other_variable ... ok
Nov 01 11:31:05.319 INFO blam! test interpreter::tests::interpreter_returns_error_when_assigning_unknown_variable_to_other_variable ... ok
Nov 01 11:31:05.332 INFO blam! test interpreter::tests::interpreter_handles_nested_compound_statements ... ok
Nov 01 11:31:05.339 INFO blam! test interpreter::tests::interpreter_returns_result_of_expr_if_input_consists_of_expr_in_parentheses ... ok
Nov 01 11:31:05.343 INFO blam! test interpreter::tests::interpreter_should_add_values_when_expression_is_addition ... ok
Nov 01 11:31:05.343 INFO blam! test interpreter::tests::interpreter_can_assign_value_of_expression_with_variable_to_other_variable ... ok
Nov 01 11:31:05.343 INFO blam! test interpreter::tests::interpreter_should_evaluate_chained_additions_and_subtractions_from_left_to_right ... ok
Nov 01 11:31:05.343 INFO blam! test interpreter::tests::interpreter_should_divide_values_when_expression_is_division ... ok
Nov 01 11:31:05.351 INFO blam! test interpreter::tests::interpreter_should_evaluate_chained_unary_operators ... ok
Nov 01 11:31:05.351 INFO blam! test interpreter::tests::interpreter_can_evaluate_nested_expressions ... ok
Nov 01 11:31:05.351 INFO blam! test interpreter::tests::interpreter_should_evaluate_chained_multiplications_and_divisions_from_left_to_right ... ok
Nov 01 11:31:05.359 INFO blam! test interpreter::tests::interpreter_should_negate_expression_when_expression_is_prefixed_with_unary_minus ... ok
Nov 01 11:31:05.359 INFO blam! test interpreter::tests::interpreter_should_negate_integer_when_expression_is_unary_minus ... ok
Nov 01 11:31:05.359 INFO blam! test interpreter::tests::interpreter_should_return_error_when_division_by_zero ... ok
Nov 01 11:31:05.359 INFO blam! test interpreter::tests::interpreter_should_give_precedence_to_multiplication_and_division ... ok
Nov 01 11:31:05.359 INFO blam! test interpreter::tests::interpreter_should_interpret_chained_additions ... ok
Nov 01 11:31:05.359 INFO blam! test interpreter::tests::interpreter_should_interpret_chained_multiplications ... ok
Nov 01 11:31:05.359 INFO blam! test interpreter::tests::interpreter_should_multiply_values_when_expression_is_multiplication ... ok
Nov 01 11:31:05.359 INFO blam! test interpreter::tests::interpreter_should_return_integer_value_if_input_consists_of_only_integer ... ok
Nov 01 11:31:05.359 INFO blam! test interpreter::tests::interpreter_should_return_negative_number_when_result_of_subtraction_is_negative ... ok
Nov 01 11:31:05.359 INFO blam! test interpreter::tests::interpreter_should_subtract_values_when_expression_is_subtraction ... ok
Nov 01 11:31:05.361 INFO blam! test lexer::mock_lexer::tests::mocklexer_returns_first_token_when_calling_get_next_token_for_the_first_time ... ok
Nov 01 11:31:05.361 INFO blam! test lexer::mock_lexer::tests::mocklexer_returns_eof_when_no_more_tokens_are_available ... ok
Nov 01 11:31:05.361 INFO blam! test lexer::mock_lexer::tests::mocklexer_returns_second_token_when_calling_get_next_token_for_the_second_time ... ok
Nov 01 11:31:05.361 INFO blam! test ast::tests::ast_add_node_cannot_set_parent_of_node_which_already_has_a_parent ... ok
Nov 01 11:31:05.361 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
Nov 01 11:31:05.361 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_accepts_floating_point_numbers_with_leading_dot ... ok
Nov 01 11:31:05.361 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_doesnt_return_assign_token_when_input_is_only_colon ... ok
Nov 01 11:31:05.361 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_advances_position_correctly_for_assign_token ... ok
Nov 01 11:31:05.361 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_doesnt_return_colon_token_when_input_is_colon_followed_by_eq ... ok
Nov 01 11:31:05.362 INFO blam! test lexer::mock_lexer::tests::mocklexer_returns_token_with_value_none_when_encountering_novalue ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_identifiers_can_start_with_underscore ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_begin_token_when_input_is_begin_keyword_uppercase ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_non_alphanumeric_characters_are_not_part_of_identifier ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_assign_token_when_input_is_assignment_operator ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_begin_token_when_input_is_begin_keyword_mixed_case ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_identifiers_dont_end_with_underscore ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_identifiers_dont_start_with_digit ... ok
Nov 01 11:31:05.387 INFO blam! test interpreter::tests::interpreter_should_return_integer_when_expression_is_unary_plus ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_colon_token_when_input_is_colon ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_float_division_when_input_is_float_division ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_eof_when_input_is_empty ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_end_token_when_input_is_end_keyword_lowercase ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_comma_token_when_input_is_comma ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_identifier_token_when_input_is_string ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_identifier_token_with_id_value_when_input_is_string ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_integer_division_when_input_is_integer_division ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_integer_value_when_input_is_digit ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_integer_when_input_is_digit ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_left_parenthesis_when_input_is_left_parenthesis ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_minus_when_input_is_minus ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_next_token_when_called_second_time ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_op_value_float_division_when_input_is_float_division ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_op_value_integer_division_when_input_is_integer_division ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_operator_value_minus_when_input_is_operator_minus ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_operator_value_plus_when_input_is_operator_plus ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_operator_value_times_when_input_is_operator_times ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_plus_when_input_is_plus ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_program_token_when_input_is_program_keyword ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_right_parenthesis_when_input_is_right_parenthesis ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_semicolon_token_when_input_is_semicolon ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_times_when_input_is_times ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_token_or_error_when_input_is_not_empty ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_type_integer_when_input_is_integer_keyword ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_type_real_when_input_is_real_keyword ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_type_specifier_token_when_input_is_integer_keyword ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_type_specifier_token_when_input_is_real_keyword ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_var_token_when_input_is_var_keyword ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_should_handle_whitespace_after_comment ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_should_skip_comments ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_should_skip_double_comments ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_should_skip_double_comments_separated_by_whitespace ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_should_skip_single_comment ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_identifiers_are_case_insensitive ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_accepts_floating_point_numbers_with_leading_dot ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_accepts_floating_point_numbers_with_trailing_dot ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_advances_position_correctly_when_parsing_float_with_leading_dot ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_advances_position_correctly_when_parsing_float_with_trailing_dot ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_only_advances_as_long_as_there_are_more_digits_in_the_flt_number ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_returns_floating_point_number ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_returns_floating_point_number_with_only_one_point ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_returns_multi_digit_integer ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_should_advance_position_correctly ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_should_advance_position_correctly_when_parsing_float ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_should_only_advance_as_long_as_there_are_more_digits ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_should_return_error_when_input_is_larger_than_fit_in_i64 ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_parse_number_should_return_number_when_input_fits_in_i64 ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_should_recognize_expressions_that_begin_with_whitespace_characters ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_should_recognize_expressions_that_contain_multi_digit_integer ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_should_recognize_expressions_that_contain_whitespace_characters ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_skip_comments_should_skip_all_characters_enclosed_in_curly_braces ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_skip_whitespace_should_not_skip_non_whitespace_characters ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_skip_whitespace_should_skip_all_whitespaces_until_eof ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_skip_whitespace_should_skip_all_whitespaces_until_first_non_whitespace_char ... ok
Nov 01 11:31:05.387 INFO blam! test parser::tests::parser_assignment_statement_doesnt_parse_assignment_without_assign_token_in_the_middle ... ok
Nov 01 11:31:05.387 INFO blam! test parser::tests::parser_assignment_statement_doesnt_parse_assignment_without_expression_on_the_right ... ok
Nov 01 11:31:05.387 INFO blam! test parser::tests::parser_assignment_statement_doesnt_parse_assignment_without_variable_on_the_left ... ok
Nov 01 11:31:05.387 INFO blam! test parser::tests::parser_assignment_statement_parses_assignment_statement ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_identifier_token_when_input_contains_digits ... ok
Nov 01 11:31:05.387 INFO blam! test parser::tests::parser_assignment_statement_returns_error_when_missing_assignment_operator ... ok
Nov 01 11:31:05.387 INFO blam! test parser::tests::parser_assignment_statement_returns_error_when_missing_variable ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_end_token_when_input_is_end_keyword_uppercase ... ok
Nov 01 11:31:05.387 INFO blam! test parser::tests::parser_assignment_statement_returns_error_when_two_expressions_on_rhs ... ok
Nov 01 11:31:05.387 INFO blam! test lexer::pascal_lexer::tests::lexer_get_next_token_returns_dot_token_when_input_is_dot ... ok
Nov 01 11:31:05.388 INFO blam! test parser::tests::parser_block_returns_error_if_compound_statement_is_missing ... ok
Nov 01 11:31:05.390 INFO blam! test parser::tests::parser_compound_statement_parses_compound_statement ... ok
Nov 01 11:31:05.390 INFO blam! test parser::tests::parser_compound_statement_parses_empty_statement_list ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_block_parses_declarations_and_compound_statement ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_block_parses_compound_statement ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_assignment_statement_returns_error_when_two_variables_on_lhs ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_block_returns_error_if_two_compound_statements_are_present ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_assignment_statement_parses_assignment_statement_with_expression ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_compound_statement_parses_nested_compound_statement ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_assignment_statement_returns_error_when_having_two_assignment_operators ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_block_returns_error_if_two_declaration_lists_are_present ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_compound_statement_returns_error_when_begin_is_repeated_without_matching_end ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_declarations_returns_error_if_declarations_are_not_separated_by_semicolon ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_declarations_parses_variable_declarations ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_declarations_parses_multiple_variable_declarations ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_declarations_returns_error_if_var_is_not_followed_by_variable_declarations ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_declarations_returns_error_if_declarations_are_terminated_by_two_semicolons ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_declarations_returns_error_if_var_is_directly_followed_by_semicolon ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_declarations_returns_error_if_declarations_are_not_terminated_by_semicolon ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_declarations_returns_error_if_var_token_is_missing ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_declarations_returns_no_declarations_if_no_variable_declarations_are_present ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_eat_should_consume_token_if_it_has_the_correct_type ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_declarations_returns_error_if_var_token_is_repeated ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_eat_should_not_consume_token_if_it_has_the_wrong_type ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_expr_should_create_integer_node_if_input_consists_of_only_integer ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_expr_should_create_operator_node_when_expression_is_addition ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_expr_should_create_operator_node_when_expression_is_subtraction ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_expr_should_not_parse_empty_string ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_expr_should_not_parse_expressions_that_dont_have_integer_after_operator ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_expr_should_not_parse_expressions_that_dont_terminate_with_eof ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_factor_creates_graph_of_expr_if_input_consists_of_expr_in_parentheses ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_factor_creates_integer_node_if_input_consists_of_integer_in_parentheses ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_factor_creates_unary_operator_node_if_input_consists_of_unary_minus ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_factor_creates_unary_operator_node_if_input_consists_of_unary_plus ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_factor_creates_variable_node_when_it_encounters_identifier ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_factor_returns_error_if_input_consists_of_unary_division ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_factor_returns_error_if_input_consists_of_unary_times ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_factor_returns_error_if_lparen_is_followed_by_rparen ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_factor_returns_error_if_operator_is_followed_by_rparen ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_factor_returns_error_if_parentheses_are_mismatched ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_factor_should_return_integer_node_if_input_consists_of_only_integer ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_factor_should_return_real_node_if_input_consists_of_real_literal ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_load_first_token_should_load_first_token ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_parse_returns_error_when_ends_with_two_dots ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_program_parses_program ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_program_parses_program_name ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_program_returns_error_when_compound_statement_is_missing ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_compound_statement_returns_error_when_begin_is_missing ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_program_returns_error_when_dot_is_missing ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_compound_statement_returns_error_when_end_is_missing ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_program_returns_error_when_program_keyword_is_missing ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_program_returns_error_when_program_has_two_names ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_program_returns_error_when_program_keyword_occurs_twice ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_compound_statement_returns_error_when_statements_arent_separated_with_semicolons ... ok
Nov 01 11:31:05.403 INFO blam! test parser::tests::parser_program_returns_error_when_semicolon_after_program_name_is_missing ... ok
Nov 01 11:31:05.404 INFO blam! test parser::tests::parser_compound_statement_returns_error_when_end_occurs_twice ... ok
Nov 01 11:31:05.404 INFO blam! test parser::tests::parser_statement_list_can_begin_with_semicolon ... ok
Nov 01 11:31:05.404 INFO blam! test parser::tests::parser_program_returns_error_when_two_semicolons_after_program_name ... ok
Nov 01 11:31:05.404 INFO blam! test parser::tests::parser_statement_list_returns_assignment_statement_if_statement_is_assignment ... ok
Nov 01 11:31:05.404 INFO blam! test parser::tests::parser_statement_list_can_end_with_semicolon ... ok
Nov 01 11:31:05.422 INFO blam! test parser::tests::parser_start_returns_error_if_parentheses_are_mismatched ... ok
Nov 01 11:31:05.422 INFO blam! test parser::tests::parser_program_returns_error_when_two_compound_statements_are_present ... ok
Nov 01 11:31:05.422 INFO blam! test parser::tests::parser_program_returns_error_when_program_name_is_missing ... ok
Nov 01 11:31:05.422 INFO blam! test parser::tests::parser_statement_list_parses_empty_input ... ok
Nov 01 11:31:05.422 INFO blam! test parser::tests::parser_statement_list_returns_error_when_multiple_statements_not_separated_by_semicolon ... ok
Nov 01 11:31:05.422 INFO blam! test parser::tests::parser_statement_list_returns_only_first_stmt_when_stmts_are_not_separated_by_semicolon ... ok
Nov 01 11:31:05.422 INFO blam! test parser::tests::parser_statement_list_returns_error_when_statements_not_separated_by_semicolon ... ok
Nov 01 11:31:05.422 INFO blam! test parser::tests::parser_statement_list_returns_three_statements_when_given_three_statements ... ok
Nov 01 11:31:05.422 INFO blam! test parser::tests::parser_statement_returns_error_when_both_statement_types_are_not_separated_by_semicolon ... ok
Nov 01 11:31:05.423 INFO blam! test parser::tests::parser_term_should_create_operator_node_when_expression_is_float_division ... ok
Nov 01 11:31:05.423 INFO blam! test parser::tests::parser_statement_list_returns_two_statements_when_statements_are_separated_by_semicolon ... ok
Nov 01 11:31:05.423 INFO blam! test parser::tests::parser_statement_returns_assignment_statement_if_statement_is_assignment_statement ... ok
Nov 01 11:31:05.423 INFO blam! test parser::tests::parser_term_should_not_parse_empty_string ... ok
Nov 01 11:31:05.423 INFO blam! test parser::tests::parser_statement_returns_compound_statement_if_statement_is_compound_statement ... ok
Nov 01 11:31:05.423 INFO blam! test parser::tests::parser_term_should_create_operator_node_when_expression_is_integer_division ... ok
Nov 01 11:31:05.423 INFO blam! test parser::tests::parser_statement_returns_none_if_no_statement_is_present ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_type_spec_returns_error_when_no_type_specifier_is_present ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_term_should_create_operator_node_when_expression_is_multiplication ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_type_spec_parses_integer_type_specifier ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_type_spec_parses_real_integer_specifier ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_term_should_return_integer_node_if_input_consists_of_only_integer ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_term_should_not_parse_expressions_that_dont_terminate_with_eof ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_term_should_not_parse_expressions_that_dont_have_integer_after_operator ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_var_decl_returns_err_when_second_and_third_identifier_are_not_separated_by_comma ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_var_decl_returns_error_when_no_identifier_is_present ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_type_spec_returns_error_when_two_real_type_specifiers_are_present ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_var_decl_parses_three_variable_declarations ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_var_decl_parses_two_variable_declarations ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_var_decl_returns_error_when_two_identifiers_are_not_separated_by_comma ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_var_decl_returns_error_when_two_identifiers_are_separated_by_two_commas ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_var_decl_returns_error_when_type_specifier_is_not_after_colon ... ok
Nov 01 11:31:05.425 INFO blam! test parser::tests::parser_var_decl_returns_error_when_type_specifier_is_separated_by_two_colons ... ok
Nov 01 11:31:05.426 INFO blam! test parser::tests::parser_variable_creates_variable_node_when_token_is_identifier ... ok
Nov 01 11:31:05.426 INFO blam! test parser::tests::parser_variable_returns_error_when_token_is_no_identifier ... ok
Nov 01 11:31:05.439 INFO blam! test parser::tests::parser_var_decl_returns_error_when_two_type_specifiers_are_present ... ok
Nov 01 11:31:05.439 INFO blam! test parser::tests::parser_var_decl_returns_error_when_no_type_specifier_is_present ... ok
Nov 01 11:31:05.439 INFO blam! test parser::tests::parser_var_decl_returns_error_when_no_identifier_is_present_after_comma ... ok
Nov 01 11:31:05.439 INFO blam! test parser::tests::parser_type_spec_returns_error_when_two_integer_type_specifiers_are_present ... ok
Nov 01 11:31:05.439 INFO blam! test parser::tests::parser_var_decl_parses_single_variable_declaration ... ok
Nov 01 11:31:05.439 INFO blam! test parser::tests::parser_type_spec_returns_error_when_two_different_type_specifiers_are_present ... ok
Nov 01 11:31:05.439 INFO blam! 
Nov 01 11:31:05.439 INFO blam! test result: ok. 322 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Nov 01 11:31:05.439 INFO blam! 
Nov 01 11:31:05.439 INFO kablam! su: No module specific data is present
Nov 01 11:31:05.976 INFO running `"docker" "rm" "-f" "de7a2355ec5eae3bed935d48d748c7b034231c0b3e5354b823051520f0eb398f"`
Nov 01 11:31:06.143 INFO blam! de7a2355ec5eae3bed935d48d748c7b034231c0b3e5354b823051520f0eb398f
