]>
Commit | Line | Data |
---|---|---|
1e59de90 TL |
1 | /* |
2 | * Ensure Error .fileName, .lineNumber, and .stack are directly writable | |
3 | * without having to use Object.defineProperty(). This matches Duktape | |
4 | * 1.4.0 behavior. | |
5 | * | |
6 | * See: https://github.com/svaarala/duktape/pull/390. | |
7 | */ | |
8 | ||
9 | (function () { | |
10 | var err = new Error('test'); | |
11 | err.fileName = 999; | |
12 | if (err.fileName === 999) { return; } // already writable | |
13 | ||
14 | Object.defineProperties(Error.prototype, { | |
15 | fileName: { set: new Function('v', 'Object.defineProperty(this, "fileName", { value: v, writable: true, enumerable: false, configurable: true });') }, | |
16 | lineNumber: { set: new Function('v', 'Object.defineProperty(this, "lineNumber", { value: v, writable: true, enumerable: false, configurable: true });') }, | |
17 | stack: { set: new Function('v', 'Object.defineProperty(this, "stack", { value: v, writable: true, enumerable: false, configurable: true });') }, | |
18 | }); | |
19 | })(); |