diff --git a/deps/chakrashim/core/bin/NativeTests/JsRTApiTest.cpp b/deps/chakrashim/core/bin/NativeTests/JsRTApiTest.cpp index e98a1ddac00..54afa7ff2a7 100644 --- a/deps/chakrashim/core/bin/NativeTests/JsRTApiTest.cpp +++ b/deps/chakrashim/core/bin/NativeTests/JsRTApiTest.cpp @@ -1091,6 +1091,48 @@ namespace JsRTApiTest REQUIRE(JsGetProperty(exceptionMetadata, property, &metadataValue) == JsNoError); REQUIRE(JsGetValueType(metadataValue, &type) == JsNoError); CHECK(type == JsString); + + // Following requires eval to be enabled - no point in testing it if we've disabled eval + if (!(attributes & JsRuntimeAttributeDisableEval)) + { + REQUIRE(JsRunScript(_u("eval('var a = b');"), JS_SOURCE_CONTEXT_NONE, _u(""), nullptr) == JsErrorScriptException); + REQUIRE(JsHasException(&value) == JsNoError); + CHECK(value == true); + + REQUIRE(JsGetAndClearExceptionWithMetadata(&exceptionMetadata) == JsNoError); + REQUIRE(JsHasException(&value) == JsNoError); + CHECK(value == false); + + REQUIRE(JsGetPropertyIdFromName(_u("exception"), &property) == JsNoError); + REQUIRE(JsGetProperty(exceptionMetadata, property, &metadataValue) == JsNoError); + REQUIRE(JsGetValueType(metadataValue, &type) == JsNoError); + CHECK(type == JsError); + + REQUIRE(JsGetPropertyIdFromName(_u("line"), &property) == JsNoError); + REQUIRE(JsGetProperty(exceptionMetadata, property, &metadataValue) == JsNoError); + REQUIRE(JsGetValueType(metadataValue, &type) == JsNoError); + CHECK(type == JsNumber); + + REQUIRE(JsGetPropertyIdFromName(_u("column"), &property) == JsNoError); + REQUIRE(JsGetProperty(exceptionMetadata, property, &metadataValue) == JsNoError); + REQUIRE(JsGetValueType(metadataValue, &type) == JsNoError); + CHECK(type == JsNumber); + + REQUIRE(JsGetPropertyIdFromName(_u("length"), &property) == JsNoError); + REQUIRE(JsGetProperty(exceptionMetadata, property, &metadataValue) == JsNoError); + REQUIRE(JsGetValueType(metadataValue, &type) == JsNoError); + CHECK(type == JsNumber); + + REQUIRE(JsGetPropertyIdFromName(_u("url"), &property) == JsNoError); + REQUIRE(JsGetProperty(exceptionMetadata, property, &metadataValue) == JsNoError); + REQUIRE(JsGetValueType(metadataValue, &type) == JsNoError); + CHECK(type == JsString); + + REQUIRE(JsGetPropertyIdFromName(_u("source"), &property) == JsNoError); + REQUIRE(JsGetProperty(exceptionMetadata, property, &metadataValue) == JsNoError); + REQUIRE(JsGetValueType(metadataValue, &type) == JsNoError); + CHECK(type == JsString); + } } TEST_CASE("ApiTest_ExceptionHandlingTest", "[ApiTest]") diff --git a/deps/chakrashim/core/lib/Runtime/Library/JavascriptExceptionMetadata.cpp b/deps/chakrashim/core/lib/Runtime/Library/JavascriptExceptionMetadata.cpp index 7d298766f24..6e74d0d81c7 100644 --- a/deps/chakrashim/core/lib/Runtime/Library/JavascriptExceptionMetadata.cpp +++ b/deps/chakrashim/core/lib/Runtime/Library/JavascriptExceptionMetadata.cpp @@ -91,7 +91,7 @@ namespace Js { Js::JavascriptNumber::New(0, scriptContext), scriptContext); Js::JavascriptOperators::OP_SetProperty(metadata, Js::PropertyIds::url, - Js::JavascriptString::NewCopySz(functionBody->GetSourceContextInfo()->url, scriptContext), scriptContext); + Js::JavascriptString::NewCopySz(functionBody->GetSourceName(), scriptContext), scriptContext); LPCUTF8 functionSource = sourceInfo->GetSource(_u("Jsrt::JsExperimentalGetAndClearExceptionWithMetadata"));