| function shouldBe(actual, expected) { |
| if (actual !== expected) |
| throw new Error('bad value: ' + actual); |
| } |
| |
| { |
| let object = { |
| n() |
| { |
| return 42; |
| } |
| }; |
| |
| let derived = { |
| m() |
| { |
| return eval("super.n()"); |
| } |
| }; |
| Object.setPrototypeOf(derived, object); |
| shouldBe(derived.m(), 42); |
| // Cached. |
| shouldBe(derived.m(), 42); |
| } |
| |
| { |
| let object = { |
| l() |
| { |
| return 42; |
| } |
| }; |
| |
| let derived = { |
| m() |
| { |
| return eval("super.l()"); |
| } |
| }; |
| Object.setPrototypeOf(derived, object); |
| shouldBe(derived.m(), 42); |
| // Cached. |
| shouldBe(derived.m(), 42); |
| |
| class Parent { |
| l() |
| { |
| return 55; |
| } |
| } |
| |
| class Derived extends Parent { |
| m() |
| { |
| return eval("super.l()"); |
| } |
| } |
| let instance = new Derived(); |
| // Under the strict code, not cached. |
| shouldBe(instance.l(), 55); |
| shouldBe(instance.l(), 55); |
| } |