mirror of https://github.com/nodejs/node.git
22 lines
688 B
JavaScript
22 lines
688 B
JavaScript
|
'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');
|