diff options
author | vladimir <vlad2t@hotmail.com> | 2016-07-12 23:09:12 +0200 |
---|---|---|
committer | cjihrig <cjihrig@gmail.com> | 2016-08-04 11:44:40 -0400 |
commit | 320f433dcdb411da22d8ee9427bbdf5b071faca2 (patch) | |
tree | 859f5a07381e755da9b986452f087048e4943ebe /test/fixtures/deprecated-userland-subclass.js | |
parent | e1643ccc5a5ecf7cb779472d244459469c9971a1 (diff) | |
download | android-node-v8-320f433dcdb411da22d8ee9427bbdf5b071faca2.tar.gz android-node-v8-320f433dcdb411da22d8ee9427bbdf5b071faca2.tar.bz2 android-node-v8-320f433dcdb411da22d8ee9427bbdf5b071faca2.zip |
util: support classes in util.deprecate()
Classes cannot be instantiated without new, but util.deprecate()
uses Function.prototype.apply(). This commit uses new.target to
detect constructor calls, allowing classes to be deprecated.
PR-URL: https://github.com/nodejs/node/pull/7690
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Michaƫl Zasso <mic.besace@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'test/fixtures/deprecated-userland-subclass.js')
-rw-r--r-- | test/fixtures/deprecated-userland-subclass.js | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/test/fixtures/deprecated-userland-subclass.js b/test/fixtures/deprecated-userland-subclass.js new file mode 100644 index 0000000000..2df374ad7d --- /dev/null +++ b/test/fixtures/deprecated-userland-subclass.js @@ -0,0 +1,19 @@ +const util = require('util'); +const assert = require('assert'); + +class deprecatedClass { +} + +const deprecated = util.deprecate(deprecatedClass, 'deprecatedClass is deprecated.'); + +class subclass extends deprecated { + constructor() { + super(); + } +} + +const instance = new subclass(); + +assert(instance instanceof subclass); +assert(instance instanceof deprecated); +assert(instance instanceof deprecatedClass); |