%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const common = require('../common'); const assert = require('assert'); const { spawn } = require('child_process'); const replProcess = spawn(process.argv0, ['--interactive'], { stdio: ['pipe', 'pipe', 'inherit'], windowsHide: true, }); replProcess.on('error', common.mustNotCall()); const replReadyState = (async function* () { let ready; const SPACE = ' '.charCodeAt(); const BRACKET = '>'.charCodeAt(); const DOT = '.'.charCodeAt(); replProcess.stdout.on('data', (data) => { ready = data[data.length - 1] === SPACE && ( data[data.length - 2] === BRACKET || ( data[data.length - 2] === DOT && data[data.length - 3] === DOT && data[data.length - 4] === DOT )); }); const processCrashed = new Promise((resolve, reject) => replProcess.on('exit', reject) ); while (true) { await Promise.race([new Promise(setImmediate), processCrashed]); if (ready) { ready = false; yield; } } })(); async function writeLn(data, expectedOutput) { await replReadyState.next(); if (expectedOutput) { replProcess.stdout.once('data', common.mustCall((data) => assert.match(data.toString('utf8'), expectedOutput) )); } await new Promise((resolve, reject) => replProcess.stdin.write( `${data}\n`, (err) => (err ? reject(err) : resolve()) )); } async function main() { await writeLn( 'const ArrayIteratorPrototype =' + ' Object.getPrototypeOf(Array.prototype[Symbol.iterator]());' ); await writeLn('delete Array.prototype[Symbol.iterator];'); await writeLn('delete ArrayIteratorPrototype.next;'); await writeLn( 'for(const x of [3, 2, 1]);', /Uncaught TypeError: \[3,2,1\] is not iterable/ ); await writeLn('.exit'); assert(!replProcess.connected); } main().then(common.mustCall());