using-in-class.js (1071B)
1 // |jit-test| skip-if: !getBuildConfiguration("explicit-resource-management"); --enable-explicit-resource-management 2 3 load(libdir + "asserts.js"); 4 5 const disposedInClassStatic = []; 6 class staticBlockClass { 7 static { 8 using x = { 9 value: 1, 10 [Symbol.dispose]() { 11 disposedInClassStatic.push(42); 12 } 13 }; 14 } 15 } 16 function testDisposalsInClassStatic() { 17 const example = new staticBlockClass(); 18 disposedInClassStatic.push(43); 19 } 20 testDisposalsInClassStatic(); 21 assertArrayEq(disposedInClassStatic, [42, 43]); 22 23 const disposedInDerivedCtor = []; 24 class baseClass { 25 constructor() { 26 disposedInDerivedCtor.push(43); 27 } 28 } 29 class subClass extends baseClass { 30 constructor() { 31 try { 32 using x = { 33 value: 1, 34 [Symbol.dispose]() { 35 disposedInDerivedCtor.push(42); 36 } 37 }; 38 } finally { 39 super(); 40 } 41 } 42 } 43 function testDisposalsInDerivedCtor() { 44 const example = new subClass(); 45 disposedInDerivedCtor.push(44); 46 } 47 testDisposalsInDerivedCtor(); 48 assertArrayEq(disposedInDerivedCtor, [42, 43, 44]);