// Copyright 2017 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. let {session, contextGroup, Protocol} = InspectorTest.start('Test for Runtime.globalLexicalScopeVariablesNames'); (async function test() { InspectorTest.log('Running \'let a = 1\''); Protocol.Runtime.evaluate({expression: 'let a = 1'}); await dumpGlobalScopeVariables(); InspectorTest.log('Running \'let b = 2\''); Protocol.Runtime.evaluate({expression: 'let b = 2'}); await dumpGlobalScopeVariables(); InspectorTest.log('Running \'let b = 3\''); Protocol.Runtime.evaluate({expression: 'let b = 3'}); await dumpGlobalScopeVariables(); InspectorTest.log('Running \'const c = 4\''); Protocol.Runtime.evaluate({expression: 'const c = 4'}); await dumpGlobalScopeVariables(); InspectorTest.log('Running \'var d = 5\''); InspectorTest.log('(should not be in list of scoped variables)'); Protocol.Runtime.evaluate({expression: 'var d = 5'}); await dumpGlobalScopeVariables(); InspectorTest.log('Running \'class Foo{}\''); Protocol.Runtime.evaluate({expression: 'class Foo{}'}); await dumpGlobalScopeVariables(); InspectorTest.log('Adding script with scope variables'); contextGroup.addScript(` let e = 1; const f = 2; const g = 3; class Boo {}; `); await dumpGlobalScopeVariables(); InspectorTest.completeTest(); })(); async function dumpGlobalScopeVariables() { let {result:{names}} = await Protocol.Runtime.globalLexicalScopeNames(); InspectorTest.log('Values:'); for (let name of names) { let {result:{result}} = await Protocol.Runtime.evaluate({expression: name}); if (result.value) { InspectorTest.log(`${name} = ${result.value}`); } else { InspectorTest.log(`${name} =`); InspectorTest.logMessage(result); } } InspectorTest.log(''); }