OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2015 the V8 project authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 // Flags: --allow-natives-syntax | |
6 | |
7 function receiver() { | |
8 return this; | |
9 } | |
10 | |
11 function construct(f) { | |
12 "use strict"; | |
13 class B {} | |
14 class C extends B { | |
15 bar() { return super.foo() } | |
16 } | |
17 B.prototype.foo = f; | |
18 return new C(); | |
19 } | |
20 | |
21 function check(x, value, type) { | |
22 assertEquals("object", typeof x); | |
23 assertInstanceof(x, type); | |
24 assertEquals(value, x); | |
25 } | |
26 | |
27 var o = construct(receiver); | |
28 check(o.bar.call(123), Object(123), Number); | |
29 check(o.bar.call("a"), Object("a"), String); | |
30 assertThrows("o.bar.call(null)", TypeError); | |
Michael Starzinger
2015/10/29 15:12:49
This call throws with the following exception. I a
Michael Starzinger
2015/10/29 16:28:56
As per offline discussion, I filed a separate issu
| |
31 assertThrows("o.bar.call(undefined)", TypeError); | |
32 | |
33 %OptimizeFunctionOnNextCall(o.bar); | |
34 check(o.bar.call(456), Object(456), Number); | |
35 check(o.bar.call("b"), Object("b"), String); | |
36 assertThrows("o.bar.call(null)", TypeError); | |
37 assertThrows("o.bar.call(undefined)", TypeError); | |
OLD | NEW |