<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.testRunner)
    testRunner.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>
