• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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