dfg-to-primitive-pass-symbol.js   [plain text]


var shouldThrow = false;

// str concat generates op_to_primitive.
function toPrimitiveTarget() {
    if (shouldThrow) {
        return Symbol('Cocoa');
    }
    return 'Cocoa';
}
noInline(toPrimitiveTarget);

function doToPrimitive() {
    var value = toPrimitiveTarget();
    return value + "Cappuccino" + value;
}
noInline(doToPrimitive);

for (var i = 0; i < 10000; ++i) {
    var result = doToPrimitive();
    if (result !== "CocoaCappuccinoCocoa")
        throw "Error: bad result: " + result;
}

shouldThrow = true;

var didThrow;
try {
    shouldThrow = true;
    doToPrimitive();
} catch (e) {
    didThrow = e;
}

if (String(didThrow) !== "TypeError: Type error")
    throw "Error: didn't throw or threw wrong exception: " + didThrow;