function assert(v, e, m) {
    if (v !== e)
        throw new Error(m);
}

let o = {
    [Symbol.toPrimitive]: function() {
        throw new Error("Calling @toPrimitive");
    }
}

try {
    o < Symbol(2);
    assert(true, false, "")
} catch(e) {
    assert(e.message, "Calling @toPrimitive", "Bad Exception when object is left operand");
}

try {
    Symbol(2) < o;
    assert(true, false, "")
} catch(e) {
    assert(e instanceof TypeError, true, "Bad Exception when Symbol is left operand");
}

o = {
    [Symbol.toPrimitive]: function() {
        return 2n;
    },

    toString: function() {
        throw new Error("Should never call toString");
    },

    valueOf: function() {
        throw new Error("Should never call valueOf");
    }
}

assert(o < 3n, true, "ToPrimitive(2n) < 3n");

o = {
    toString: function() {
        throw new Error("Should never call toString");
    },

    valueOf: function() {
        return 2n;
    }
}

assert(o < 3n, true, "valueOf(2n) < 3n");

