Skip to content

Commit 7c4f6a5

Browse files
committed
[1.8>1.9] [MERGE #4548 @akroshg] Passing correct module specifier when setting a parent
Merge pull request #4548 from akroshg:setparent
2 parents 7949441 + 2fd420b commit 7c4f6a5

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

bin/NativeTests/JsRTApiTest.cpp

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2233,6 +2233,54 @@ namespace JsRTApiTest
22332233

22342234
}
22352235

2236+
static JsErrorCode CALLBACK Success_FIMC1(_In_ JsModuleRecord referencingModule, _In_ JsValueRef specifier, _Outptr_result_maybenull_ JsModuleRecord* dependentModuleRecord)
2237+
{
2238+
JsModuleRecord moduleRecord = JS_INVALID_REFERENCE;
2239+
LPCWSTR specifierStr;
2240+
size_t length;
2241+
2242+
JsErrorCode errorCode = JsStringToPointer(specifier, &specifierStr, &length);
2243+
REQUIRE(errorCode == JsNoError);
2244+
REQUIRE(!wcscmp(specifierStr, _u("foo.js")));
2245+
2246+
JsValueRef specifier1 = nullptr;
2247+
REQUIRE(JsPointerToString(_u("./foo.js"), wcslen(_u("./foo.js")), &specifier1) == JsNoError);
2248+
2249+
errorCode = JsInitializeModuleRecord(referencingModule, specifier1, &moduleRecord);
2250+
REQUIRE(errorCode == JsNoError);
2251+
*dependentModuleRecord = moduleRecord;
2252+
successTest.childModule = moduleRecord;
2253+
return JsNoError;
2254+
}
2255+
2256+
void PassingDifferentModuleSpecifierTest(JsRuntimeAttributes attributes, JsRuntimeHandle runtime)
2257+
{
2258+
JsModuleRecord requestModule = JS_INVALID_REFERENCE;
2259+
JsValueRef specifier;
2260+
2261+
REQUIRE(JsPointerToString(_u(""), 1, &specifier) == JsNoError);
2262+
REQUIRE(JsInitializeModuleRecord(nullptr, specifier, &requestModule) == JsNoError);
2263+
successTest.mainModule = requestModule;
2264+
REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_FetchImportedModuleCallback, Success_FIMC1) == JsNoError);
2265+
REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_FetchImportedModuleFromScriptCallback, Success_FIMC1) == JsNoError);
2266+
REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_NotifyModuleReadyCallback, Succes_NMRC) == JsNoError);
2267+
2268+
JsValueRef errorObject = JS_INVALID_REFERENCE;
2269+
const char* fileContent = "import {x} from 'foo.js'";
2270+
JsErrorCode errorCode = JsParseModuleSource(requestModule, 0, (LPBYTE)fileContent,
2271+
(unsigned int)strlen(fileContent), JsParseModuleSourceFlags_DataIsUTF8, &errorObject);
2272+
2273+
CHECK(errorCode == JsNoError);
2274+
CHECK(errorObject == JS_INVALID_REFERENCE);
2275+
REQUIRE(successTest.childModule != JS_INVALID_REFERENCE);
2276+
}
2277+
2278+
TEST_CASE("ApiTest_PassingDifferentModuleSpecifierTest", "[ApiTest]")
2279+
{
2280+
JsRTApiTest::WithSetup(JsRuntimeAttributeEnableExperimentalFeatures, PassingDifferentModuleSpecifierTest);
2281+
2282+
}
2283+
22362284
ModuleResponseData reentrantParseData;
22372285
static JsErrorCode CALLBACK ReentrantParse_FIMC(_In_ JsModuleRecord referencingModule, _In_ JsValueRef specifier, _Outptr_result_maybenull_ JsModuleRecord* dependentModuleRecord)
22382286
{

lib/Runtime/Language/SourceTextModuleRecord.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -723,7 +723,6 @@ namespace Js
723723
this->parentModuleList = RecyclerNew(recycler, ModuleRecordList, recycler);
724724
}
725725
bool contains = this->parentModuleList->Contains(parentRecord);
726-
Assert(!contains);
727726
if (!contains)
728727
{
729728
this->parentModuleList->Add(parentRecord);

0 commit comments

Comments
 (0)