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