@@ -300,6 +300,7 @@ TEST_F(CompilerTest, AddObscuredInput)
300300
301301 compiler.addInstruction (vm::OP_HALT);
302302 ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_CHECKPOINT, vm::OP_NULL, vm::OP_PRINT, vm::OP_CONST, 0 , vm::OP_PRINT, vm::OP_NULL, vm::OP_PRINT, vm::OP_HALT }));
303+ ASSERT_EQ (compiler.unsupportedBlocks (), std::unordered_set<std::string>({ " test_block2" }));
303304}
304305
305306TEST_F (CompilerTest, AddNoShadowInput)
@@ -328,6 +329,14 @@ TEST_F(CompilerTest, AddNoShadowInput)
328329 ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_CHECKPOINT, vm::OP_NULL, vm::OP_PRINT, vm::OP_CONST, 0 , vm::OP_NULL, vm::OP_PRINT, vm::OP_HALT }));
329330 ASSERT_EQ (compiler.constValues ().size (), 1 );
330331 ASSERT_EQ (compiler.constValues ()[0 ], " test" );
332+ ASSERT_EQ (compiler.unsupportedBlocks (), std::unordered_set<std::string>({ " test_block2" }));
333+
334+ Input input4 (" TEST_INPUT4" , Input::Type::NoShadow);
335+ std::shared_ptr<Block> block3 = std::make_shared<Block>(" " , " test_block3" );
336+ input4.setValueBlock (block3);
337+ compiler.addInput (&input4);
338+ compiler.addInstruction (vm::OP_PRINT);
339+ ASSERT_EQ (compiler.unsupportedBlocks (), std::unordered_set<std::string>({ " test_block2" , " test_block3" }));
331340}
332341
333342TEST_F (CompilerTest, ResolveInput)
@@ -841,3 +850,26 @@ TEST_F(CompilerTest, EdgeActivatedHatPredicate)
841850 ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_CONST, 1 , vm::OP_PRINT, vm::OP_HALT }));
842851 ASSERT_EQ (compiler.constValues (), std::vector<Value>({ true , " test" }));
843852}
853+
854+ TEST_F (CompilerTest, UnsupportedBlocks)
855+ {
856+ auto block1 = std::make_shared<Block>(" b1" , " block1" );
857+
858+ auto block2 = std::make_shared<Block>(" b2" , " block2" );
859+ block2->setParent (block1);
860+ block1->setNext (block2);
861+
862+ auto block3 = std::make_shared<Block>(" b3" , " block3" );
863+ block3->setCompileFunction ([](Compiler *) {});
864+ block3->setParent (block2);
865+ block2->setNext (block3);
866+
867+ auto block4 = std::make_shared<Block>(" b4" , " block4" );
868+ block4->setParent (block3);
869+ block3->setNext (block4);
870+
871+ INIT_COMPILER (engine, compiler);
872+ compiler.compile (block1);
873+
874+ ASSERT_EQ (compiler.unsupportedBlocks (), std::unordered_set<std::string>({ " block1" , " block2" , " block4" }));
875+ }
0 commit comments