@@ -2890,9 +2890,28 @@ CHAKRA_API JsCreateNamedFunction(_In_ JsValueRef name, _In_ JsNativeFunction nat
2890
2890
return JsCreateEnhancedFunctionHelper<true >(nativeFunction, name, callbackState, function);
2891
2891
}
2892
2892
2893
- void SetErrorMessage (Js::ScriptContext *scriptContext, JsValueRef newError, JsValueRef message)
2893
+ void SetErrorMessage (Js::ScriptContext *scriptContext, Js::JavascriptError * newError, JsValueRef message)
2894
2894
{
2895
- Js::JavascriptOperators::OP_SetProperty (newError, Js::PropertyIds::message, message, scriptContext);
2895
+ // ECMA262 #sec-error-message
2896
+ if (!Js::JavascriptOperators::IsUndefined (message))
2897
+ {
2898
+ Js::JavascriptString *messageStr = nullptr ;
2899
+ if (Js::JavascriptString::Is (message))
2900
+ {
2901
+ messageStr = Js::JavascriptString::FromVar (message);
2902
+ }
2903
+ else
2904
+ {
2905
+ messageStr = Js::JavascriptConversion::ToString (message, scriptContext);
2906
+ }
2907
+
2908
+ Js::PropertyDescriptor desc;
2909
+ desc.SetValue (messageStr);
2910
+ desc.SetWritable (true );
2911
+ desc.SetEnumerable (false );
2912
+ desc.SetConfigurable (true );
2913
+ Js::JavascriptOperators::SetPropertyDescriptor (newError, Js::PropertyIds::message, desc);
2914
+ }
2896
2915
}
2897
2916
2898
2917
CHAKRA_API JsCreateError (_In_ JsValueRef message, _Out_ JsValueRef *error)
@@ -2904,7 +2923,7 @@ CHAKRA_API JsCreateError(_In_ JsValueRef message, _Out_ JsValueRef *error)
2904
2923
PARAM_NOT_NULL (error);
2905
2924
*error = nullptr ;
2906
2925
2907
- JsValueRef newError = scriptContext->GetLibrary ()->CreateError ();
2926
+ Js::JavascriptError * newError = scriptContext->GetLibrary ()->CreateError ();
2908
2927
SetErrorMessage (scriptContext, newError, message);
2909
2928
*error = newError;
2910
2929
@@ -2923,7 +2942,7 @@ CHAKRA_API JsCreateRangeError(_In_ JsValueRef message, _Out_ JsValueRef *error)
2923
2942
PARAM_NOT_NULL (error);
2924
2943
*error = nullptr ;
2925
2944
2926
- JsValueRef newError = scriptContext->GetLibrary ()->CreateRangeError ();
2945
+ Js::JavascriptError * newError = scriptContext->GetLibrary ()->CreateRangeError ();
2927
2946
SetErrorMessage (scriptContext, newError, message);
2928
2947
*error = newError;
2929
2948
@@ -2942,7 +2961,7 @@ CHAKRA_API JsCreateReferenceError(_In_ JsValueRef message, _Out_ JsValueRef *err
2942
2961
PARAM_NOT_NULL (error);
2943
2962
*error = nullptr ;
2944
2963
2945
- JsValueRef newError = scriptContext->GetLibrary ()->CreateReferenceError ();
2964
+ Js::JavascriptError * newError = scriptContext->GetLibrary ()->CreateReferenceError ();
2946
2965
SetErrorMessage (scriptContext, newError, message);
2947
2966
*error = newError;
2948
2967
@@ -2961,7 +2980,7 @@ CHAKRA_API JsCreateSyntaxError(_In_ JsValueRef message, _Out_ JsValueRef *error)
2961
2980
PARAM_NOT_NULL (error);
2962
2981
*error = nullptr ;
2963
2982
2964
- JsValueRef newError = scriptContext->GetLibrary ()->CreateSyntaxError ();
2983
+ Js::JavascriptError * newError = scriptContext->GetLibrary ()->CreateSyntaxError ();
2965
2984
SetErrorMessage (scriptContext, newError, message);
2966
2985
*error = newError;
2967
2986
@@ -2980,7 +2999,7 @@ CHAKRA_API JsCreateTypeError(_In_ JsValueRef message, _Out_ JsValueRef *error)
2980
2999
PARAM_NOT_NULL (error);
2981
3000
*error = nullptr ;
2982
3001
2983
- JsValueRef newError = scriptContext->GetLibrary ()->CreateTypeError ();
3002
+ Js::JavascriptError * newError = scriptContext->GetLibrary ()->CreateTypeError ();
2984
3003
SetErrorMessage (scriptContext, newError, message);
2985
3004
*error = newError;
2986
3005
@@ -2999,7 +3018,7 @@ CHAKRA_API JsCreateURIError(_In_ JsValueRef message, _Out_ JsValueRef *error)
2999
3018
PARAM_NOT_NULL (error);
3000
3019
*error = nullptr ;
3001
3020
3002
- JsValueRef newError = scriptContext->GetLibrary ()->CreateURIError ();
3021
+ Js::JavascriptError * newError = scriptContext->GetLibrary ()->CreateURIError ();
3003
3022
SetErrorMessage (scriptContext, newError, message);
3004
3023
*error = newError;
3005
3024
0 commit comments