description(
'Test for regression against <a href="https://bugs.webkit.org/show_bug.cgi?id=95815">'
);

function testPostIncConstVarWithIgnoredResult()
{
    var okay = false;
    const a = {
        valueOf: (function(){
            okay = true;
        })
    };

    a++;

    return okay;
}

function testPreIncConstVarWithIgnoredResult()
{
    var okay = false;
    const a = {
        valueOf: (function(){
            okay = true;
        })
    };

    ++a;

    return okay;
}

function testPreIncConstVarWithAssign()
{
    var okay = false;
    var x = 42;
    const a = {
        valueOf: (function(){
            throw x == 42;
        })
    };

    try {
        x = ++a;
    } catch (e) {
        okay = e
    };

    return okay;
}

shouldThrow('testPostIncConstVarWithIgnoredResult()');
shouldThrow('testPreIncConstVarWithIgnoredResult()');
shouldBeTrue('testPreIncConstVarWithAssign() instanceof TypeError');

successfullyParsed = true;
