@@ -446,7 +446,7 @@ class CallbackWrapper {
446446 CallbackWrapper (napi_value this_arg, size_t args_length, void * data)
447447 : _this(this_arg), _args_length(args_length), _data(data) {}
448448
449- virtual bool IsConstructCall () = 0;
449+ virtual napi_value NewTarget () = 0;
450450 virtual void Args (napi_value* buffer, size_t bufferlength) = 0;
451451 virtual void SetReturnValue (napi_value value) = 0;
452452
@@ -475,8 +475,7 @@ class CallbackWrapperBase : public CallbackWrapper {
475475 ->Value ();
476476 }
477477
478- /* virtual*/
479- bool IsConstructCall () override { return false ; }
478+ napi_value NewTarget () override { return nullptr ; }
480479
481480 protected:
482481 void InvokeCallback () {
@@ -524,8 +523,13 @@ class FunctionCallbackWrapper
524523 const v8::FunctionCallbackInfo<v8::Value>& cbinfo)
525524 : CallbackWrapperBase(cbinfo, cbinfo.Length()) {}
526525
527- /* virtual*/
528- bool IsConstructCall () override { return _cbinfo.IsConstructCall (); }
526+ napi_value NewTarget () override {
527+ if (_cbinfo.IsConstructCall ()) {
528+ return v8impl::JsValueFromV8LocalValue (_cbinfo.NewTarget ());
529+ } else {
530+ return nullptr ;
531+ }
532+ }
529533
530534 /* virtual*/
531535 void Args (napi_value* buffer, size_t buffer_length) override {
@@ -1874,18 +1878,17 @@ napi_status napi_get_cb_info(
18741878 return napi_clear_last_error (env);
18751879}
18761880
1877- napi_status napi_is_construct_call (napi_env env,
1878- napi_callback_info cbinfo,
1879- bool * result) {
1880- // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because no V8 APIs are called.
1881+ napi_status napi_get_new_target (napi_env env,
1882+ napi_callback_info cbinfo,
1883+ napi_value* result) {
18811884 CHECK_ENV (env);
18821885 CHECK_ARG (env, cbinfo);
18831886 CHECK_ARG (env, result);
18841887
18851888 v8impl::CallbackWrapper* info =
18861889 reinterpret_cast <v8impl::CallbackWrapper*>(cbinfo);
18871890
1888- *result = info->IsConstructCall ();
1891+ *result = info->NewTarget ();
18891892 return napi_clear_last_error (env);
18901893}
18911894
0 commit comments