<p>This page tests issues of scope with nested functions.</p>
<pre id="console"></pre>

<script>
function log(s)
{
    document.getElementById("console").appendChild(document.createTextNode(s + "\n"));
}

function shouldBe(evalA, a, b)
{
    if (evalA === b) {
        log("PASS: " + a + " should be " + b + " and is.");
    } else {
        log("FAIL: " + a + " should be " + b + " but instead is " + evalA + ".");
    }
}

if (window.layoutTestController)
    layoutTestController.dumpAsText();

log("Before parsing f:");
log("-----");
shouldBe(typeof f, "typeof f", "function");
shouldBe(typeof f.f1, "typeof f.f1", "undefined");

function f(x)
{
    function f1() {
        log("\nIn call to f:");
        log("-----");
        shouldBe(typeof f, "typeof f", "function");
        shouldBe(typeof f1, "typeof f1", "function");
        shouldBe(typeof f.f1, "typeof f.f1", "undefined");
        shouldBe(typeof x, "typeof x", "number");
        shouldBe(typeof y, "typeof y", "undefined");
    }

    f1();
}
f.y = 1;

log("\nAfter parsing f, but before calling f:");
log("-----");
shouldBe(typeof f, "typeof f", "function");
shouldBe(typeof f.f1, "typeof f.f1", "undefined");

f(1);
</script>
