blob: fbc69586570c034de8503f8a131e35be373089bd [file] [log] [blame] [edit]
// This file tests subclassing arrays.
class A extends Array { }
class B extends A { get 1() { return 1; } }
class C extends B { }
function test() {
a = new A();
b = new B();
c = new C();
if (!Array.isArray(a) || !Array.isArray(b) || !Array.isArray(c))
throw "subclasses are not arrays";
if (!(a instanceof Array && a instanceof A))
throw "b has incorrect prototype chain";
if (!(b instanceof Array && b instanceof A && b instanceof B))
throw "b has incorrect prototype chain";
if (!(c instanceof Array && c instanceof A && c instanceof B && c instanceof C))
throw "c has incorrect prototype chain";
a[1] = 2;
b[1] = 2;
c[1] = 2;
if (a[1] !== 2 || b[1] !== 1 || c[1] !== 1)
throw "bad indexing type";
}
noInline(test);
for(i = 0; i < testLoopCount; i++)
test();