@@ -863,14 +863,13 @@ napi_status napi_set_property(napi_env env,
863863 CHECK_ARG (env, key);
864864 CHECK_ARG (env, value);
865865
866+ // Use the *ForKey APIs so the key can be a string or a symbol; converting to
867+ // a JSString would coerce (and break) symbol keys.
866868 JSValueRef exception{};
867- JSString key_str{ToJSString (env, key, &exception)};
868- CHECK_JSC (env, exception);
869-
870- JSObjectSetProperty (
869+ JSObjectSetPropertyForKey (
871870 env->context ,
872871 ToJSObject (env, object),
873- key_str ,
872+ ToJSValue (key) ,
874873 ToJSValue (value),
875874 kJSPropertyAttributeNone ,
876875 &exception);
@@ -888,13 +887,12 @@ napi_status napi_has_property(napi_env env,
888887 CHECK_ARG (env, key);
889888
890889 JSValueRef exception{};
891- JSString key_str{ToJSString (env, key, &exception)};
892- CHECK_JSC (env, exception);
893-
894- *result = JSObjectHasProperty (
890+ *result = JSObjectHasPropertyForKey (
895891 env->context ,
896892 ToJSObject (env, object),
897- key_str);
893+ ToJSValue (key),
894+ &exception);
895+ CHECK_JSC (env, exception);
898896 return napi_ok;
899897}
900898
@@ -907,13 +905,10 @@ napi_status napi_get_property(napi_env env,
907905 CHECK_ARG (env, result);
908906
909907 JSValueRef exception{};
910- JSString key_str{ToJSString (env, key, &exception)};
911- CHECK_JSC (env, exception);
912-
913- *result = ToNapi (JSObjectGetProperty (
908+ *result = ToNapi (JSObjectGetPropertyForKey (
914909 env->context ,
915910 ToJSObject (env, object),
916- key_str ,
911+ ToJSValue (key) ,
917912 &exception));
918913 CHECK_JSC (env, exception);
919914
@@ -925,16 +920,14 @@ napi_status napi_delete_property(napi_env env,
925920 napi_value key,
926921 bool * result) {
927922 CHECK_ENV (env);
923+ CHECK_ARG (env, key);
928924 CHECK_ARG (env, result);
929925
930926 JSValueRef exception{};
931- JSString key_str{ToJSString (env, key, &exception)};
932- CHECK_JSC (env, exception);
933-
934- *result = JSObjectDeleteProperty (
927+ *result = JSObjectDeletePropertyForKey (
935928 env->context ,
936929 ToJSObject (env, object),
937- key_str ,
930+ ToJSValue (key) ,
938931 &exception);
939932 CHECK_JSC (env, exception);
940933
@@ -2604,6 +2597,8 @@ napi_status napi_run_script_source(napi_env env,
26042597 JSString script_str{ToJSString (env, script, &exception)};
26052598 CHECK_JSC (env, exception);
26062599
2600+
2601+
26072602 JSValueRef return_value{JSEvaluateScript (
26082603 env->context , script_str, nullptr , JSString (source_url), 0 , &exception)};
26092604 CHECK_JSC (env, exception);
0 commit comments