description(
"Tests that the DFG knows that a function that appears like Math.abs could potentially use value in arbitrary ways, and not just in a context that converts values to numbers."
);

function foo(f, array, i) {
    return f(array[i]);
}

function bar(value) {
    return value;
}

silentTestPass = true;
noInline(foo);

for (var i = 0; i < 200; i = dfgIncrement({f:foo, i:i + 1, n:100})) {
    var f, array, expected;
    if (i == 190) {
        f = "bar";
        array = "[, 1.5]";
        expected = "void 0";
    } else {
        f = "Math.abs";
        array = "[1.5]";
        expected = "Math.abs(1.5)";
    }
    shouldBe("foo(" + f + ", " + array + ", 0)", expected);
}

