GeezerVison is showing github.com — src: make napi_create_reference accept symbol · nodejs/node@f74fe2a
File treeExpand file treeCollapse file tree Open diff view settings test/js-native-api/test_reference
Expand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboardExpand all lines: src/js_native_api_v8.cc +3-3Lines changed: 3 additions & 3 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -2454,9 +2454,9 @@ napi_status napi_create_reference(napi_env env, | 2454 | 2454 | CHECK_ARG(env, result); | 2455 | 2455 |
| 2456 | 2456 | v8::Local<v8::Value> v8_value = v8impl::V8LocalValueFromJsValue(value); | 2457 | | - | 2458 | | - if (!(v8_value->IsObject() || v8_value->IsFunction())) { | 2459 | | - return napi_set_last_error(env, napi_object_expected); | | 2457 | + if (!(v8_value->IsObject() || v8_value->IsFunction() || | | 2458 | + v8_value->IsSymbol())) { | | 2459 | + return napi_set_last_error(env, napi_invalid_arg); | 2460 | 2460 | } | 2461 | 2461 |
| 2462 | 2462 | v8impl::Reference* reference = | |
Collapse file Copy file name to clipboardExpand all lines: test/js-native-api/test_reference/test.js +7Lines changed: 7 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -14,6 +14,13 @@ assert.strictEqual(test_reference.finalizeCount, 0); | 14 | 14 | // Run each test function in sequence, | 15 | 15 | // with an async delay and GC call between each. | 16 | 16 | async function runTests() { | | 17 | + (() => { | | 18 | + const symbol = test_reference.createSymbol('testSym'); | | 19 | + test_reference.createReference(symbol, 0); | | 20 | + assert.strictEqual(test_reference.referenceValue, symbol); | | 21 | + })(); | | 22 | + test_reference.deleteReference(); | | 23 | + | 17 | 24 | (() => { | 18 | 25 | const value = test_reference.createExternal(); | 19 | 26 | assert.strictEqual(test_reference.finalizeCount, 0); | |
Collapse file Copy file name to clipboardExpand all lines: test/js-native-api/test_reference/test_reference.c +15Lines changed: 15 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -35,6 +35,20 @@ static napi_value CreateExternal(napi_env env, napi_callback_info info) { | 35 | 35 | return result; | 36 | 36 | } | 37 | 37 |
| | 38 | +static napi_value CreateSymbol(napi_env env, napi_callback_info info) { | | 39 | + | | 40 | + size_t argc = 1; | | 41 | + napi_value args[1]; | | 42 | + | | 43 | + NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL,NULL)); | | 44 | + NAPI_ASSERT(env, argc == 1, "Expect one argument only (symbol description)"); | | 45 | + | | 46 | + napi_value result_symbol; | | 47 | + | | 48 | + NAPI_CALL(env, napi_create_symbol(env, args[0], &result_symbol)); | | 49 | + return result_symbol; | | 50 | +} | | 51 | + | 38 | 52 | static napi_value | 39 | 53 | CreateExternalWithFinalize(napi_env env, napi_callback_info info) { | 40 | 54 | napi_value result; | @@ -178,6 +192,7 @@ napi_value Init(napi_env env, napi_value exports) { | 178 | 192 | CreateExternalWithFinalize), | 179 | 193 | DECLARE_NAPI_PROPERTY("checkExternal", CheckExternal), | 180 | 194 | DECLARE_NAPI_PROPERTY("createReference", CreateReference), | | 195 | + DECLARE_NAPI_PROPERTY("createSymbol", CreateSymbol), | 181 | 196 | DECLARE_NAPI_PROPERTY("deleteReference", DeleteReference), | 182 | 197 | DECLARE_NAPI_PROPERTY("incrementRefcount", IncrementRefcount), | 183 | 198 | DECLARE_NAPI_PROPERTY("decrementRefcount", DecrementRefcount), | |
|