1// Flags: --disable-proto=throw 2 3'use strict'; 4 5require('../common'); 6const assert = require('assert'); 7const vm = require('vm'); 8const { Worker, isMainThread } = require('worker_threads'); 9 10assert(Object.prototype.hasOwnProperty('__proto__')); 11 12assert.throws(() => { 13 // eslint-disable-next-line no-proto,no-unused-expressions 14 ({}).__proto__; 15}, { 16 code: 'ERR_PROTO_ACCESS' 17}); 18 19assert.throws(() => { 20 // eslint-disable-next-line no-proto 21 ({}).__proto__ = {}; 22}, { 23 code: 'ERR_PROTO_ACCESS', 24}); 25 26const ctx = vm.createContext(); 27 28assert.throws(() => { 29 vm.runInContext('({}).__proto__;', ctx); 30}, { 31 code: 'ERR_PROTO_ACCESS' 32}); 33 34assert.throws(() => { 35 vm.runInContext('({}).__proto__ = {};', ctx); 36}, { 37 code: 'ERR_PROTO_ACCESS', 38}); 39 40if (isMainThread) { 41 new Worker(__filename); 42} else { 43 process.exit(); 44} 45