Tests that Runtime.evaluate with REPL mode correctly detects side-effects. Test "let" declaration is side-effecting { id : result : { exceptionDetails : { columnNumber : -1 exception : { className : EvalError description : EvalError: Possible side-effect in debug-evaluate objectId : subtype : error type : object } exceptionId : lineNumber : -1 scriptId : text : Uncaught } result : { className : EvalError description : EvalError: Possible side-effect in debug-evaluate objectId : subtype : error type : object } } } Test "const" declaration is side-effecting { id : result : { exceptionDetails : { columnNumber : -1 exception : { className : EvalError description : EvalError: Possible side-effect in debug-evaluate objectId : subtype : error type : object } exceptionId : lineNumber : -1 scriptId : text : Uncaught } result : { className : EvalError description : EvalError: Possible side-effect in debug-evaluate objectId : subtype : error type : object } } } Test "const" with side-effects works afterwards { id : result : { result : { type : undefined } } } Test side-effect free expressions can be eagerly evaluated { id : result : { result : { description : 3 type : number value : 3 } } } { id : result : { result : { type : string value : hello REPL } } } { id : result : { result : { className : Promise description : Promise objectId : subtype : promise type : object } } }