// GetPrivateName should throw when the receiver does not have the requested private property
let i, threw = false;
class C {
    #x = i;
    constructor() { if (i === 30) return { [Symbol.toStringTag]: "without #x"}; }
    static x(obj) { return obj.#x; }
    get [Symbol.toStringTag]() { return "with #x"; }
}

try {
    for (i = 0; i < 50; ++i) {
        let c = new C;
        let result = C.x(c);
        if (result !== i)
            throw new Error(`Expected C.x(${c}) to be ${i}, but found ${result}`);
    }
} catch (e) {
    threw = true;
    if (i !== 30 || e.constructor !== TypeError) {
        throw e;
    }
}

if (!threw)
    throw new Error("Expected TypeError, but no exception was thrown");
