function-gname.js (787B)
1 function bytecode(f) { 2 if (typeof disassemble !== "function") 3 return "unavailable"; 4 var d = disassemble(f); 5 return d.slice(d.indexOf("main:"), d.indexOf("\n\n")); 6 } 7 8 function hasGname(f, v) { 9 // Do a try-catch that prints the full stack, so we can tell 10 // _which_ part of this test failed. 11 try { 12 var b = bytecode(f); 13 if (b != "unavailable") { 14 assertEq(b.includes(`GetGName "${v}"`), true); 15 assertEq(b.includes(`GetName "${v}"`), false); 16 } 17 } catch (e) { 18 print(e.stack); 19 throw e; 20 } 21 } 22 23 var x = "outer"; 24 25 var f1 = new Function("assertEq(x, 'outer')"); 26 f1(); 27 hasGname(f1, 'x'); 28 29 { 30 let x = "inner"; 31 var f3 = new Function("assertEq(x, 'outer')"); 32 f3(); 33 hasGname(f3, 'x'); 34 }