Store the ScriptInterface& in ModuleLoader::Result

During hotloading the `ScriptRequest` was constructed from a
`JSContext*`. That requires that already an other `ScriptRequest` is
active. Which isn't always the case.
Now The `ScriptRequest` is constructed from a `ScriptInterface&`.

Storing a `ScriptInterface&` in the `ModuleLoader::Result` allows to
remove the `m_Result` as it is retrieved from the `ScriptInterface`.
This commit is contained in:
phosit
2025-06-11 14:51:52 +02:00
committed by phosit
parent 25c53cb0ac
commit b8348bec55
3 changed files with 18 additions and 10 deletions
+10 -2
View File
@@ -686,10 +686,18 @@ public:
TS_ASSERT_STR_NOT_CONTAINS(logger.GetOutput(), "blah blah blah");
}
void test_ResultDestructionAfterScriptRequestDestruction()
void test_HotloadAfterScriptRequestDestruction()
{
ScriptInterface script{"Test", "Test", g_ScriptContext, AllowAllPredicate};
auto _ = script.GetModuleLoader().LoadModule(ScriptRequest{script}, "empty.js");
auto result = script.GetModuleLoader().LoadModule(ScriptRequest{script}, "empty.js");
g_ScriptContext->RunJobs();
auto iter = result.begin();
TS_ASSERT(iter->IsDone());
++iter;
ClearFromCache("empty.js");
g_ScriptContext->RunJobs();
TS_ASSERT(iter->IsDone());
}
void test_RestrictionNoPredicate()