infer-uninitialized-closure-var.js   [plain text]


function foo(p) {
    var x;
    
    noInline(f);
    
    if (p) {
        var f = function() { return x; }
        
        foo(false);
        
        for (var i = 0; i < 10000; ++i) {
            var result = f();
            if (result !== void 0)
                throw "Error: bad result (1): " + result;
        }
        
        x = 43;
        
        var result = f();
        if (result != 43)
            throw "Error: bad result (2): " + result;
    } else
        x = 42;
}

foo(true);