@@ -2106,6 +2106,39 @@ TEST_F(LLVMCodeBuilderTest, ReadVariable)
21062106 ASSERT_EQ (testing::internal::GetCapturedStdout (), expected);
21072107}
21082108
2109+ TEST_F (LLVMCodeBuilderTest, SyncVariablesBeforeCallingFunction)
2110+ {
2111+ Sprite sprite;
2112+ sprite.setEngine (&m_engine);
2113+
2114+ auto var = std::make_shared<Variable>(" " , " " );
2115+ sprite.addVariable (var);
2116+
2117+ createBuilder (&sprite, true );
2118+
2119+ CompilerValue *v = m_builder->addConstValue (" abc" );
2120+ m_builder->createVariableWrite (var.get (), v);
2121+
2122+ v = m_builder->addConstValue (123 );
2123+ m_builder->createVariableWrite (var.get (), v);
2124+
2125+ m_builder->addTargetFunctionCall (" test_print_first_local_variable" , Compiler::StaticType::Void, {}, {});
2126+
2127+ v = m_builder->addConstValue (456 );
2128+ m_builder->createVariableWrite (var.get (), v);
2129+
2130+ auto code = m_builder->finalize ();
2131+ Script script (&sprite, nullptr , nullptr );
2132+ script.setCode (code);
2133+
2134+ Thread thread (&sprite, nullptr , &script);
2135+ auto ctx = code->createExecutionContext (&thread);
2136+ testing::internal::CaptureStdout ();
2137+ code->run (ctx.get ());
2138+
2139+ ASSERT_EQ (testing::internal::GetCapturedStdout (), " 123\n " );
2140+ }
2141+
21092142TEST_F (LLVMCodeBuilderTest, CastNonRawValueToUnknownType)
21102143{
21112144 Stage stage;
0 commit comments