| OLD | NEW | 
|---|
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 // Flags: --harmony-sloppy | 5 // Flags: --harmony-sloppy | 
| 6 | 6 | 
| 7 (function TestBasics() { | 7 (function TestBasics() { | 
| 8   var C = class C {} | 8   var C = class C {} | 
| 9   assertEquals(typeof C, 'function'); | 9   assertEquals(typeof C, 'function'); | 
| 10   assertEquals(C.__proto__, Function.prototype); | 10   assertEquals(C.__proto__, Function.prototype); | 
| (...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 618 | 618 | 
| 619 (function TestDefaultConstructorNoCrash() { | 619 (function TestDefaultConstructorNoCrash() { | 
| 620   // Regression test for https://code.google.com/p/v8/issues/detail?id=3661 | 620   // Regression test for https://code.google.com/p/v8/issues/detail?id=3661 | 
| 621   class C {} | 621   class C {} | 
| 622   assertThrows(function () {C();}, TypeError); | 622   assertThrows(function () {C();}, TypeError); | 
| 623   assertThrows(function () {C(1);}, TypeError); | 623   assertThrows(function () {C(1);}, TypeError); | 
| 624   assertTrue(new C() instanceof C); | 624   assertTrue(new C() instanceof C); | 
| 625   assertTrue(new C(1) instanceof C); | 625   assertTrue(new C(1) instanceof C); | 
| 626 })(); | 626 })(); | 
| 627 | 627 | 
|  | 628 (function TestConstructorCall(){ | 
|  | 629   var realmIndex = Realm.create(); | 
|  | 630   var otherTypeError = Realm.eval(realmIndex, "TypeError"); | 
|  | 631   var A = Realm.eval(realmIndex, '"use strict"; class A {}'); | 
|  | 632   var instance = new A(); | 
|  | 633   var constructor = instance.constructor; | 
|  | 634   var otherTypeError = Realm.eval(realmIndex, 'TypeError'); | 
|  | 635   if (otherTypeError === TypeError) { | 
|  | 636     throw Error('Should not happen!'); | 
|  | 637   } | 
|  | 638 | 
|  | 639   // ES6 9.2.1[[Call]] throws a TypeError in the caller context/Realm when the | 
|  | 640   // called function is a classConstructor | 
|  | 641   assertThrows(function() { Realm.eval(realmIndex, "A()") }, otherTypeError); | 
|  | 642   assertThrows(function() { instance.constructor() }, TypeError); | 
|  | 643   assertThrows(function() { A() }, TypeError); | 
|  | 644 | 
|  | 645   // ES6 9.3.1 call() first activates the callee context before invoking the | 
|  | 646   // method. The TypeError from the constructor is thus thrown in the other | 
|  | 647   // Realm. | 
|  | 648   assertThrows(function() { Realm.eval(realmIndex, "A.call()") }, | 
|  | 649       otherTypeError); | 
|  | 650   assertThrows(function() { constructor.call() }, otherTypeError); | 
|  | 651   assertThrows(function() { A.call() }, otherTypeError); | 
|  | 652 })(); | 
| 628 | 653 | 
| 629 (function TestDefaultConstructor() { | 654 (function TestDefaultConstructor() { | 
| 630   var calls = 0; | 655   var calls = 0; | 
| 631   class Base { | 656   class Base { | 
| 632     constructor() { | 657     constructor() { | 
| 633       calls++; | 658       calls++; | 
| 634     } | 659     } | 
| 635   } | 660   } | 
| 636   class Derived extends Base {} | 661   class Derived extends Base {} | 
| 637   var object = new Derived; | 662   var object = new Derived; | 
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 939   testClassRestrictedProperties(ClassWithDefaultConstructor); | 964   testClassRestrictedProperties(ClassWithDefaultConstructor); | 
| 940   testClassRestrictedProperties(Class); | 965   testClassRestrictedProperties(Class); | 
| 941   testClassRestrictedProperties(DerivedClassWithDefaultConstructor); | 966   testClassRestrictedProperties(DerivedClassWithDefaultConstructor); | 
| 942   testClassRestrictedProperties(DerivedClass); | 967   testClassRestrictedProperties(DerivedClass); | 
| 943   testClassRestrictedProperties(class { method() {} }); | 968   testClassRestrictedProperties(class { method() {} }); | 
| 944   testClassRestrictedProperties(class { constructor() {} method() {} }); | 969   testClassRestrictedProperties(class { constructor() {} method() {} }); | 
| 945   testClassRestrictedProperties(class extends Class { }); | 970   testClassRestrictedProperties(class extends Class { }); | 
| 946   testClassRestrictedProperties( | 971   testClassRestrictedProperties( | 
| 947       class extends Class { constructor() { super(); } }); | 972       class extends Class { constructor() { super(); } }); | 
| 948 })(); | 973 })(); | 
| OLD | NEW | 
|---|