| 'use strict'; |
| |
| // https://github.com/nodejs/node/issues/31808 |
| // function declarations currently call [[Set]] instead of [[DefineOwnProperty]] |
| // in VM contexts, which violates the ECMA-262 specification: |
| // https://tc39.es/ecma262/#sec-createglobalfunctionbinding |
| |
| const common = require('../common'); |
| const vm = require('vm'); |
| const assert = require('assert'); |
| |
| const ctx = vm.createContext(); |
| Object.defineProperty(ctx, 'x', { |
| enumerable: true, |
| configurable: true, |
| get: common.mustNotCall('ctx.x getter must not be called'), |
| set: common.mustNotCall('ctx.x setter must not be called'), |
| }); |
| |
| vm.runInContext('function x() {}', ctx); |
| assert.strictEqual(typeof ctx.x, 'function'); |