diff --git a/cli/napi/js_native_api.rs b/cli/napi/js_native_api.rs index d531c72c81d24c..e79307714d811a 100644 --- a/cli/napi/js_native_api.rs +++ b/cli/napi/js_native_api.rs @@ -1437,10 +1437,12 @@ fn napi_define_properties( for property in properties { let name = if !property.utf8name.is_null() { let name_str = CStr::from_ptr(property.utf8name).to_str().unwrap(); - v8::String::new(scope, name_str).ok_or(Error::GenericFailure)? + v8::String::new(scope, name_str) + .ok_or(Error::GenericFailure)? + .into() } else { let property_value = napi_value_unchecked(property.name); - v8::Local::::try_from(property_value) + v8::Local::::try_from(property_value) .map_err(|_| Error::NameExpected)? }; @@ -1461,7 +1463,7 @@ fn napi_define_properties( desc.set_enumerable(property.attributes & napi_enumerable != 0); desc.set_configurable(property.attributes & napi_configurable != 0); - let define_maybe = object.define_property(scope, name.into(), &desc); + let define_maybe = object.define_property(scope, name, &desc); return_status_if_false!( env_ptr, !define_maybe.unwrap_or(false), diff --git a/test_napi/properties_test.js b/test_napi/properties_test.js index 36ede10332d28a..b5f0c079424ce7 100644 --- a/test_napi/properties_test.js +++ b/test_napi/properties_test.js @@ -15,4 +15,10 @@ Deno.test("napi properties", () => { assertEquals(properties.test_simple_property, { nice: 69, }); + + assertEquals(properties.key_v8_string, 1); + const symbols = Object.getOwnPropertySymbols(properties); + assertEquals(symbols.length, 1); + assertEquals(symbols[0].description, "key_v8_symbol"); + assertEquals(properties[symbols[0]], 1); }); diff --git a/test_napi/src/properties.rs b/test_napi/src/properties.rs index 1b6c9488b308af..339699a05e793c 100644 --- a/test_napi/src/properties.rs +++ b/test_napi/src/properties.rs @@ -82,27 +82,26 @@ pub fn init(env: napi_env, exports: napi_value) { attributes: enumerable, value: number, }, - // TODO(@littledivy): Fix this. - // napi_property_descriptor { - // utf8name: ptr::null(), - // name: name_value, - // method: None, - // getter: None, - // setter: None, - // data: ptr::null_mut(), - // attributes: enumerable, - // value: number, - // }, - // napi_property_descriptor { - // utf8name: ptr::null(), - // name: name_symbol, - // method: None, - // getter: None, - // setter: None, - // data: ptr::null_mut(), - // attributes: enumerable, - // value: number, - // }, + napi_property_descriptor { + utf8name: ptr::null(), + name: name_value, + method: None, + getter: None, + setter: None, + data: ptr::null_mut(), + attributes: enumerable, + value: number, + }, + napi_property_descriptor { + utf8name: ptr::null(), + name: name_symbol, + method: None, + getter: None, + setter: None, + data: ptr::null_mut(), + attributes: enumerable, + value: number, + }, ]; assert_napi_ok!(napi_define_properties(