@@ -451,7 +451,7 @@ class CallbackWrapper {
451451 CallbackWrapper (napi_value this_arg, size_t args_length, void * data)
452452 : _this(this_arg), _args_length(args_length), _data(data) {}
453453
454- virtual bool IsConstructCall () = 0;
454+ virtual napi_value NewTarget () = 0;
455455 virtual void Args (napi_value* buffer, size_t bufferlength) = 0;
456456 virtual void SetReturnValue (napi_value value) = 0;
457457
@@ -480,8 +480,7 @@ class CallbackWrapperBase : public CallbackWrapper {
480480 ->Value ();
481481 }
482482
483- /* virtual*/
484- bool IsConstructCall () override { return false ; }
483+ napi_value NewTarget () override { return nullptr ; }
485484
486485 protected:
487486 void InvokeCallback () {
@@ -529,8 +528,13 @@ class FunctionCallbackWrapper
529528 const v8::FunctionCallbackInfo<v8::Value>& cbinfo)
530529 : CallbackWrapperBase(cbinfo, cbinfo.Length()) {}
531530
532- /* virtual*/
533- bool IsConstructCall () override { return _cbinfo.IsConstructCall (); }
531+ napi_value NewTarget () override {
532+ if (_cbinfo.IsConstructCall ()) {
533+ return v8impl::JsValueFromV8LocalValue (_cbinfo.NewTarget ());
534+ } else {
535+ return nullptr ;
536+ }
537+ }
534538
535539 /* virtual*/
536540 void Args (napi_value* buffer, size_t buffer_length) override {
@@ -1883,18 +1887,17 @@ napi_status napi_get_cb_info(
18831887 return napi_clear_last_error (env);
18841888}
18851889
1886- napi_status napi_is_construct_call (napi_env env,
1887- napi_callback_info cbinfo,
1888- bool * result) {
1889- // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because no V8 APIs are called.
1890+ napi_status napi_get_new_target (napi_env env,
1891+ napi_callback_info cbinfo,
1892+ napi_value* result) {
18901893 CHECK_ENV (env);
18911894 CHECK_ARG (env, cbinfo);
18921895 CHECK_ARG (env, result);
18931896
18941897 v8impl::CallbackWrapper* info =
18951898 reinterpret_cast <v8impl::CallbackWrapper*>(cbinfo);
18961899
1897- *result = info->IsConstructCall ();
1900+ *result = info->NewTarget ();
18981901 return napi_clear_last_error (env);
18991902}
19001903
0 commit comments