mirror of https://github.com/lukechilds/node.git
Browse Source
Add a test that checks that new.target inheritance works when inheriting from a constructor defined in C++. PR-URL: https://github.com/nodejs/node/pull/9689 Refs: https://github.com/nodejs/node/issues/9288 Refs: https://github.com/nodejs/node/pull/9293 Reviewed-By: Anna Henningsen <anna@addaleax.net>v4.x
committed by
Myles Borins
3 changed files with 43 additions and 0 deletions
@ -0,0 +1,16 @@ |
|||
#include <node.h> |
|||
#include <v8.h> |
|||
|
|||
namespace { |
|||
|
|||
inline void NewClass(const v8::FunctionCallbackInfo<v8::Value>&) {} |
|||
|
|||
inline void Initialize(v8::Local<v8::Object> binding) { |
|||
auto isolate = binding->GetIsolate(); |
|||
binding->Set(v8::String::NewFromUtf8(isolate, "Class"), |
|||
v8::FunctionTemplate::New(isolate, NewClass)->GetFunction()); |
|||
} |
|||
|
|||
NODE_MODULE(binding, Initialize) |
|||
|
|||
} // anonymous namespace
|
@ -0,0 +1,9 @@ |
|||
{ |
|||
'targets': [ |
|||
{ |
|||
'target_name': 'binding', |
|||
'defines': [ 'V8_DEPRECATION_WARNINGS=1' ], |
|||
'sources': [ 'binding.cc' ] |
|||
} |
|||
] |
|||
} |
@ -0,0 +1,18 @@ |
|||
'use strict'; |
|||
|
|||
const common = require('../../common'); |
|||
const assert = require('assert'); |
|||
const binding = require(`./build/${common.buildType}/binding`); |
|||
|
|||
class Class extends binding.Class { |
|||
constructor() { |
|||
super(); |
|||
this.method(); |
|||
} |
|||
method() { |
|||
this.ok = true; |
|||
} |
|||
} |
|||
|
|||
assert.ok(new Class() instanceof binding.Class); |
|||
assert.ok(new Class().ok); |
Loading…
Reference in new issue