blob: 1d0129e60b0d598b449d5dd205b2f6192247847b [file] [log] [blame]
function assert(a, e) {
if (a !== e)
throw new Error("Expected: " + e + " but got: " + a);
}
(() => {
class Base {
C = class {
method() {
return this.#mBase();
}
}
#mBase() {
return 4;
}
}
let base = new Base();
let c = new base.C();
assert(c.method.call(base), 4);
try {
c.method();
} catch (e) {
assert(e instanceof TypeError, true);
}
})();
// Test shadow methods
(() => {
class Base {
method() {
return this.#m();
}
C = class {
method(o) {
return o.#m();
}
#m() {
return this.foo;
}
foo = 4;
};
#m() {
return "foo";
}
}
let base = new Base();
let c = new base.C();
assert(c.method(c), 4);
assert(base.method(), "foo");
try {
c.method(base);
} catch (e) {
assert(e instanceof TypeError, true);
}
})();