summaryrefslogtreecommitdiffstats
path: root/src/civetweb/src/third_party/duktape-1.8.0/polyfills/duktape-error-setter-writable.js
blob: 5d487cdfebefdd7f3dc05ac0ab29a7a45ebc2cc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
 *  Ensure Error .fileName, .lineNumber, and .stack are directly writable
 *  without having to use Object.defineProperty().  This matches Duktape
 *  1.4.0 behavior.
 *
 *  See: https://github.com/svaarala/duktape/pull/390.
 */

(function () {
    var err = new Error('test');
    err.fileName = 999;
    if (err.fileName === 999) { return; }  // already writable

    Object.defineProperties(Error.prototype, {
        fileName: { set: new Function('v', 'Object.defineProperty(this, "fileName", { value: v, writable: true, enumerable: false, configurable: true });') },
        lineNumber: { set: new Function('v', 'Object.defineProperty(this, "lineNumber", { value: v, writable: true, enumerable: false, configurable: true });') },
        stack: { set: new Function('v', 'Object.defineProperty(this, "stack", { value: v, writable: true, enumerable: false, configurable: true });') },
    });
})();