<p>This page tests for a crash when throwing an exception from a callback provided
to String.prototype.replace.
</p>

<p>If the test passes, you'll see a series of PASS messages below.
</p>

<pre id="console"></pre>

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

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

// these should not crash

try {
    (function () {
        "aa".replace(/a/g, function() {
            var bogus;
            bogus.property;
        });
    })();
} catch(e) {
    log ("PASS: You didn't crash.");
}

try {
    (function () {
        "aa".replace("a", function() {
            ({})();
        });
    })();
} catch(e) {
    log ("PASS: You didn't crash.");
}

// this should not continue execution after an exception

var message = "PASS: String.prototype.replace did not continue executing after an exception was thrown.";
try {
    (function () {
        var count = 0;
        "aa".replace(/a/g, function() {
            if (++count > 1)
                message = "FAIL: String.prototype.replace continued executing after an exception was thrown.";

            var bogus;
            bogus.property;
        });
    })();
} catch(e) {
    try {
        (function x() { return 'blargh'.replace(/a/g, x) })()
    } catch(e) {
        log (message);
    }
}

</script>
