From bf5c71f951f8b3af32567d677de2054244226a96 Mon Sep 17 00:00:00 2001 From: Akrosh Gandhi Date: Wed, 17 Jan 2018 03:01:33 -0800 Subject: [PATCH] deps: update ChakraCore to Microsoft/ChakraCore@7c4f6a5e48 [1.8>1.9] [MERGE #4548 @akroshg] Passing correct module specifier when setting a parent Merge pull request #4548 from akroshg:setparent Reviewed-By: chakrabot --- .../core/bin/NativeTests/JsRTApiTest.cpp | 48 +++++++++++++++++++ .../Language/SourceTextModuleRecord.cpp | 1 - 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/deps/chakrashim/core/bin/NativeTests/JsRTApiTest.cpp b/deps/chakrashim/core/bin/NativeTests/JsRTApiTest.cpp index bbad814de6e..e98a1ddac00 100644 --- a/deps/chakrashim/core/bin/NativeTests/JsRTApiTest.cpp +++ b/deps/chakrashim/core/bin/NativeTests/JsRTApiTest.cpp @@ -2233,6 +2233,54 @@ namespace JsRTApiTest } + static JsErrorCode CALLBACK Success_FIMC1(_In_ JsModuleRecord referencingModule, _In_ JsValueRef specifier, _Outptr_result_maybenull_ JsModuleRecord* dependentModuleRecord) + { + JsModuleRecord moduleRecord = JS_INVALID_REFERENCE; + LPCWSTR specifierStr; + size_t length; + + JsErrorCode errorCode = JsStringToPointer(specifier, &specifierStr, &length); + REQUIRE(errorCode == JsNoError); + REQUIRE(!wcscmp(specifierStr, _u("foo.js"))); + + JsValueRef specifier1 = nullptr; + REQUIRE(JsPointerToString(_u("./foo.js"), wcslen(_u("./foo.js")), &specifier1) == JsNoError); + + errorCode = JsInitializeModuleRecord(referencingModule, specifier1, &moduleRecord); + REQUIRE(errorCode == JsNoError); + *dependentModuleRecord = moduleRecord; + successTest.childModule = moduleRecord; + return JsNoError; + } + + void PassingDifferentModuleSpecifierTest(JsRuntimeAttributes attributes, JsRuntimeHandle runtime) + { + JsModuleRecord requestModule = JS_INVALID_REFERENCE; + JsValueRef specifier; + + REQUIRE(JsPointerToString(_u(""), 1, &specifier) == JsNoError); + REQUIRE(JsInitializeModuleRecord(nullptr, specifier, &requestModule) == JsNoError); + successTest.mainModule = requestModule; + REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_FetchImportedModuleCallback, Success_FIMC1) == JsNoError); + REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_FetchImportedModuleFromScriptCallback, Success_FIMC1) == JsNoError); + REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_NotifyModuleReadyCallback, Succes_NMRC) == JsNoError); + + JsValueRef errorObject = JS_INVALID_REFERENCE; + const char* fileContent = "import {x} from 'foo.js'"; + JsErrorCode errorCode = JsParseModuleSource(requestModule, 0, (LPBYTE)fileContent, + (unsigned int)strlen(fileContent), JsParseModuleSourceFlags_DataIsUTF8, &errorObject); + + CHECK(errorCode == JsNoError); + CHECK(errorObject == JS_INVALID_REFERENCE); + REQUIRE(successTest.childModule != JS_INVALID_REFERENCE); + } + + TEST_CASE("ApiTest_PassingDifferentModuleSpecifierTest", "[ApiTest]") + { + JsRTApiTest::WithSetup(JsRuntimeAttributeEnableExperimentalFeatures, PassingDifferentModuleSpecifierTest); + + } + ModuleResponseData reentrantParseData; static JsErrorCode CALLBACK ReentrantParse_FIMC(_In_ JsModuleRecord referencingModule, _In_ JsValueRef specifier, _Outptr_result_maybenull_ JsModuleRecord* dependentModuleRecord) { diff --git a/deps/chakrashim/core/lib/Runtime/Language/SourceTextModuleRecord.cpp b/deps/chakrashim/core/lib/Runtime/Language/SourceTextModuleRecord.cpp index f5b84d0a1ae..c96da16aefa 100644 --- a/deps/chakrashim/core/lib/Runtime/Language/SourceTextModuleRecord.cpp +++ b/deps/chakrashim/core/lib/Runtime/Language/SourceTextModuleRecord.cpp @@ -723,7 +723,6 @@ namespace Js this->parentModuleList = RecyclerNew(recycler, ModuleRecordList, recycler); } bool contains = this->parentModuleList->Contains(parentRecord); - Assert(!contains); if (!contains) { this->parentModuleList->Add(parentRecord);