@@ -444,7 +444,7 @@ class CallbackWrapper {
444444 CallbackWrapper (napi_value this_arg, size_t args_length, void * data)
445445 : _this(this_arg), _args_length(args_length), _data(data) {}
446446
447- virtual bool IsConstructCall () = 0;
447+ virtual napi_value NewTarget () = 0;
448448 virtual void Args (napi_value* buffer, size_t bufferlength) = 0;
449449 virtual void SetReturnValue (napi_value value) = 0;
450450
@@ -473,8 +473,7 @@ class CallbackWrapperBase : public CallbackWrapper {
473473 ->Value ();
474474 }
475475
476- /* virtual*/
477- bool IsConstructCall () override { return false ; }
476+ napi_value NewTarget () override { return nullptr ; }
478477
479478 protected:
480479 void InvokeCallback () {
@@ -522,8 +521,13 @@ class FunctionCallbackWrapper
522521 const v8::FunctionCallbackInfo<v8::Value>& cbinfo)
523522 : CallbackWrapperBase(cbinfo, cbinfo.Length()) {}
524523
525- /* virtual*/
526- bool IsConstructCall () override { return _cbinfo.IsConstructCall (); }
524+ napi_value NewTarget () override {
525+ if (_cbinfo.IsConstructCall ()) {
526+ return v8impl::JsValueFromV8LocalValue (_cbinfo.NewTarget ());
527+ } else {
528+ return nullptr ;
529+ }
530+ }
527531
528532 /* virtual*/
529533 void Args (napi_value* buffer, size_t buffer_length) override {
@@ -1878,18 +1882,17 @@ napi_status napi_get_cb_info(
18781882 return napi_clear_last_error (env);
18791883}
18801884
1881- napi_status napi_is_construct_call (napi_env env,
1882- napi_callback_info cbinfo,
1883- bool * result) {
1884- // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because no V8 APIs are called.
1885+ napi_status napi_get_new_target (napi_env env,
1886+ napi_callback_info cbinfo,
1887+ napi_value* result) {
18851888 CHECK_ENV (env);
18861889 CHECK_ARG (env, cbinfo);
18871890 CHECK_ARG (env, result);
18881891
18891892 v8impl::CallbackWrapper* info =
18901893 reinterpret_cast <v8impl::CallbackWrapper*>(cbinfo);
18911894
1892- *result = info->IsConstructCall ();
1895+ *result = info->NewTarget ();
18931896 return napi_clear_last_error (env);
18941897}
18951898
0 commit comments