summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJohn-David Dalton <john.david.dalton@gmail.com>2017-10-01 16:14:45 -0700
committerRich Trott <rtrott@gmail.com>2017-10-04 15:49:36 -0700
commit42a2a9badb6974e47b98aaee052e9710f34b93e8 (patch)
treeb7b6b05ccb7807e5d4fd4bad7071c96d8a024a9e /lib
parent6e172beaf0390b037549c8484f4513bb79ccc84e (diff)
downloadandroid-node-v8-42a2a9badb6974e47b98aaee052e9710f34b93e8.tar.gz
android-node-v8-42a2a9badb6974e47b98aaee052e9710f34b93e8.tar.bz2
android-node-v8-42a2a9badb6974e47b98aaee052e9710f34b93e8.zip
errors: make `code` and `name` properties settable
For internal errors, make `code` and `name` settable while keeping them non-own properties by default. PR-URL: https://github.com/nodejs/node/pull/15694 Fixes: https://github.com/nodejs/node/issues/15658 Reviewed-By: Evan Lucas <evanlucas@me.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Diffstat (limited to 'lib')
-rwxr-xr-xlib/internal/errors.js36
1 files changed, 30 insertions, 6 deletions
diff --git a/lib/internal/errors.js b/lib/internal/errors.js
index e3c18b48c7..6b9c31a528 100755
--- a/lib/internal/errors.js
+++ b/lib/internal/errors.js
@@ -11,9 +11,8 @@
const kCode = Symbol('code');
const messages = new Map();
-const {
- kMaxLength
-} = process.binding('buffer');
+const { kMaxLength } = process.binding('buffer');
+const { defineProperty } = Object;
// Lazily loaded
var util = null;
@@ -22,11 +21,36 @@ function makeNodeError(Base) {
return class NodeError extends Base {
constructor(key, ...args) {
super(message(key, args));
- this[kCode] = this.code = key;
- Object.defineProperty(this, 'name', {
+ defineProperty(this, kCode, {
configurable: true,
enumerable: false,
- value: `${super.name} [${this[kCode]}]`,
+ value: key,
+ writable: true
+ });
+ }
+
+ get name() {
+ return `${super.name} [${this[kCode]}]`;
+ }
+
+ set name(value) {
+ defineProperty(this, 'name', {
+ configurable: true,
+ enumerable: true,
+ value,
+ writable: true
+ });
+ }
+
+ get code() {
+ return this[kCode];
+ }
+
+ set code(value) {
+ defineProperty(this, 'code', {
+ configurable: true,
+ enumerable: true,
+ value,
writable: true
});
}