Upload Kmake

This commit is contained in:
Gorochu
2026-05-26 23:36:42 -07:00
parent ba051b2f74
commit 555ec72358
41615 changed files with 13344630 additions and 1 deletions

View File

@ -0,0 +1,11 @@
{
'targets': [
{
'target_name': 'test_new_target',
'defines': [ 'V8_DEPRECATION_WARNINGS=1' ],
'sources': [
'test_new_target.c'
]
}
]
}

View File

@ -0,0 +1,21 @@
'use strict';
const common = require('../../common');
const assert = require('assert');
const binding = require(`./build/${common.buildType}/test_new_target`);
class Class extends binding.BaseClass {
constructor() {
super();
this.method();
}
method() {
this.ok = true;
}
}
assert.ok(new Class() instanceof binding.BaseClass);
assert.ok(new Class().ok);
assert.ok(binding.OrdinaryFunction());
assert.ok(
new binding.Constructor(binding.Constructor) instanceof binding.Constructor);

View File

@ -0,0 +1,70 @@
#include <js_native_api.h>
#include "../common.h"
#include "../entry_point.h"
static napi_value BaseClass(napi_env env, napi_callback_info info) {
napi_value newTargetArg;
NODE_API_CALL(env, napi_get_new_target(env, info, &newTargetArg));
napi_value thisArg;
NODE_API_CALL(env, napi_get_cb_info(env, info, NULL, NULL, &thisArg, NULL));
napi_value undefined;
NODE_API_CALL(env, napi_get_undefined(env, &undefined));
// this !== new.target since we are being invoked through super()
bool result;
NODE_API_CALL(env, napi_strict_equals(env, newTargetArg, thisArg, &result));
NODE_API_ASSERT(env, !result, "this !== new.target");
// new.target !== undefined because we should be called as a new expression
NODE_API_ASSERT(env, newTargetArg != NULL, "newTargetArg != NULL");
NODE_API_CALL(env, napi_strict_equals(env, newTargetArg, undefined, &result));
NODE_API_ASSERT(env, !result, "new.target !== undefined");
return thisArg;
}
static napi_value Constructor(napi_env env, napi_callback_info info) {
bool result;
napi_value newTargetArg;
NODE_API_CALL(env, napi_get_new_target(env, info, &newTargetArg));
size_t argc = 1;
napi_value argv;
napi_value thisArg;
NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, &argv, &thisArg, NULL));
napi_value undefined;
NODE_API_CALL(env, napi_get_undefined(env, &undefined));
// new.target !== undefined because we should be called as a new expression
NODE_API_ASSERT(env, newTargetArg != NULL, "newTargetArg != NULL");
NODE_API_CALL(env, napi_strict_equals(env, newTargetArg, undefined, &result));
NODE_API_ASSERT(env, !result, "new.target !== undefined");
// arguments[0] should be Constructor itself (test harness passed it)
NODE_API_CALL(env, napi_strict_equals(env, newTargetArg, argv, &result));
NODE_API_ASSERT(env, result, "new.target === Constructor");
return thisArg;
}
static napi_value OrdinaryFunction(napi_env env, napi_callback_info info) {
napi_value newTargetArg;
NODE_API_CALL(env, napi_get_new_target(env, info, &newTargetArg));
NODE_API_ASSERT(env, newTargetArg == NULL, "newTargetArg == NULL");
napi_value _true;
NODE_API_CALL(env, napi_get_boolean(env, true, &_true));
return _true;
}
EXTERN_C_START
napi_value Init(napi_env env, napi_value exports) {
const napi_property_descriptor desc[] = {
DECLARE_NODE_API_PROPERTY("BaseClass", BaseClass),
DECLARE_NODE_API_PROPERTY("OrdinaryFunction", OrdinaryFunction),
DECLARE_NODE_API_PROPERTY("Constructor", Constructor)
};
NODE_API_CALL(env, napi_define_properties(env, exports, 3, desc));
return exports;
}
EXTERN_C_END