"use strict"; function makeClosure(x) { return (f) => { if (x == 42) { x = 0; return f(f); } else return x; } } for (var i = 0; i < 1000; ++i) { var g = makeClosure(42); var h = makeClosure(41); var value = g(h); if (value != 41) throw "Wrong result, got: " + value; }