From 0095e23002a48d612fb1ad5244817fd25e1c25e6 Mon Sep 17 00:00:00 2001 From: Akrosh Gandhi Date: Tue, 16 Jan 2018 16:18:38 -0800 Subject: [PATCH] deps: update ChakraCore to Microsoft/ChakraCore@12a738b390 [1.8>1.9] [MERGE #4540 @akroshg] Module : SetModuleHostInfo's error propagation properly and useless assert removal. Merge pull request #4540 from akroshg:sethostinfo Reviewed-By: chakrabot --- .../core/bin/NativeTests/JsRTApiTest.cpp | 41 +++++++++++++++++++ .../core/lib/Jsrt/Core/JsrtCore.cpp | 6 ++- .../Language/SourceTextModuleRecord.cpp | 1 - 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/deps/chakrashim/core/bin/NativeTests/JsRTApiTest.cpp b/deps/chakrashim/core/bin/NativeTests/JsRTApiTest.cpp index d3f7b83ba50..bbad814de6e 100644 --- a/deps/chakrashim/core/bin/NativeTests/JsRTApiTest.cpp +++ b/deps/chakrashim/core/bin/NativeTests/JsRTApiTest.cpp @@ -2192,6 +2192,47 @@ namespace JsRTApiTest } + void SetModuleHostInfoTest(JsRuntimeAttributes attributes, JsRuntimeHandle runtime) + { + JsModuleRecord requestModule = JS_INVALID_REFERENCE; + JsValueRef specifier = nullptr; + + REQUIRE(JsPointerToString(_u("mod1.js"), wcslen(_u("mod1.js")), &specifier) == JsNoError); + REQUIRE(JsInitializeModuleRecord(nullptr, specifier, &requestModule) == JsNoError); + JsValueRef error = nullptr, errorMsg = nullptr; + REQUIRE(JsPointerToString(_u("test error"), wcslen(_u("test error")), &errorMsg) == JsNoError); + REQUIRE(JsCreateError(errorMsg, &error) == JsNoError); + + REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_Exception, error) == JsNoError); + + JsValueRef errorOut = nullptr; + JsGetModuleHostInfo(requestModule, JsModuleHostInfo_Exception, &errorOut); + REQUIRE(errorOut == error); + + //REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_Exception, nullptr) == JsNoError); + + REQUIRE(JsPointerToString(_u("mod2.js"), wcslen(_u("mod2.js")), &specifier) == JsNoError); + REQUIRE(JsInitializeModuleRecord(nullptr, specifier, &requestModule) == JsNoError); + + successTest.mainModule = requestModule; + REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_NotifyModuleReadyCallback, Succes_NMRC) == JsNoError); + + // Parsing + JsValueRef errorObject1 = JS_INVALID_REFERENCE; + const char* fileContent = "var x = 10"; + REQUIRE(JsParseModuleSource(requestModule, 0, (LPBYTE)fileContent, + (unsigned int)strlen(fileContent), JsParseModuleSourceFlags_DataIsUTF8, &errorObject1) == JsNoError); + + // This should not pass + REQUIRE(JsSetModuleHostInfo(requestModule, JsModuleHostInfo_Exception, error) != JsNoError); + } + + TEST_CASE("ApiTest_SetModuleHostInfoTest", "[ApiTest]") + { + JsRTApiTest::WithSetup(JsRuntimeAttributeEnableExperimentalFeatures, SetModuleHostInfoTest); + + } + 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/Jsrt/Core/JsrtCore.cpp b/deps/chakrashim/core/lib/Jsrt/Core/JsrtCore.cpp index b6ab444ec58..eaa3bf96659 100644 --- a/deps/chakrashim/core/lib/Jsrt/Core/JsrtCore.cpp +++ b/deps/chakrashim/core/lib/Jsrt/Core/JsrtCore.cpp @@ -158,8 +158,10 @@ JsSetModuleHostInfo( switch (moduleHostInfo) { case JsModuleHostInfo_Exception: - moduleRecord->OnHostException(hostInfo); - break; + { + HRESULT hr = moduleRecord->OnHostException(hostInfo); + return (hr == NOERROR) ? JsNoError : JsErrorInvalidArgument; + } case JsModuleHostInfo_HostDefined: moduleRecord->SetHostDefined(hostInfo); break; diff --git a/deps/chakrashim/core/lib/Runtime/Language/SourceTextModuleRecord.cpp b/deps/chakrashim/core/lib/Runtime/Language/SourceTextModuleRecord.cpp index 682c343f978..d894dd14e88 100644 --- a/deps/chakrashim/core/lib/Runtime/Language/SourceTextModuleRecord.cpp +++ b/deps/chakrashim/core/lib/Runtime/Language/SourceTextModuleRecord.cpp @@ -960,7 +960,6 @@ namespace Js { return E_INVALIDARG; } - AssertMsg(!WasParsed(), "shouldn't be called after a module is parsed"); if (WasParsed()) { return E_INVALIDARG;