72 lines
6.2 KiB
Plaintext
72 lines
6.2 KiB
Plaintext
Tests for ES6 class syntax "extends"
|
|
|
|
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
|
|
|
|
|
|
PASS (new Base) instanceof Base
|
|
PASS Object.getPrototypeOf(new Base):::Base.prototype
|
|
PASS (new Derived) instanceof Derived
|
|
PASS Object.getPrototypeOf(new Derived):::Derived.prototype
|
|
PASS Object.getPrototypeOf(Derived.prototype):::Base.prototype
|
|
PASS (new Derived).baseMethod():::"base"
|
|
PASS (new Derived).overridenMethod():::"derived"
|
|
PASS Derived.staticBaseMethod():::"base"
|
|
PASS Derived.staticOverridenMethod():::"derived"
|
|
PASS x = class extends:::SyntaxError: Unexpected end of script
|
|
PASS x = class extends:::SyntaxError: Unexpected end of script
|
|
PASS x = class extends Base {:::SyntaxError: Unexpected end of script
|
|
PASS x = class extends Base { }
|
|
PASS x = class extends Base { constructor() { } }
|
|
PASS x.__proto__:::Base
|
|
PASS Object.getPrototypeOf(x):::Base
|
|
PASS x.prototype.__proto__:::Base.prototype
|
|
PASS Object.getPrototypeOf(x.prototype):::Base.prototype
|
|
PASS x = class extends null { constructor() { } }; x.__proto__:::Function.prototype
|
|
PASS x.__proto__:::Function.prototype
|
|
PASS x = class extends 3 { constructor() { } }; x.__proto__:::TypeError: The superclass is not a constructor.
|
|
PASS x = class extends "abc" { constructor() { } }; x.__proto__:::TypeError: The superclass is not a constructor.
|
|
PASS baseWithBadPrototype = function () {}; baseWithBadPrototype.prototype = 3; new baseWithBadPrototype
|
|
PASS x = class extends baseWithBadPrototype { constructor() { } }:::TypeError: The value of the superclass's prototype property is not an object or null.
|
|
PASS baseWithBadPrototype.prototype = "abc"
|
|
PASS x = class extends baseWithBadPrototype { constructor() { } }:::TypeError: The value of the superclass's prototype property is not an object or null.
|
|
PASS baseWithBadPrototype.prototype = null; x = class extends baseWithBadPrototype { constructor() { } }
|
|
PASS x = 1; c = class extends ++x { constructor() { } };:::SyntaxError: Unexpected token '++'
|
|
PASS x = 1; c = class extends x++ { constructor() { } };:::SyntaxError: Unexpected token '++'. Expected opening '{' at the start of a class body.
|
|
PASS x = 1; c = class extends (++x) { constructor() { } };:::TypeError: The superclass is not a constructor.
|
|
PASS x = 1; c = class extends (x++) { constructor() { } };:::TypeError: The superclass is not a constructor.
|
|
PASS x = 1; try { c = class extends (++x) { constructor() { } } } catch (e) { }; x:::2
|
|
PASS x = 1; try { c = class extends (x++) { constructor() { } } } catch (e) { }; x:::2
|
|
PASS namespace = {}; namespace.A = class { }; namespace.B = class extends namespace.A { }
|
|
PASS namespace = {}; namespace.A = class A { }; namespace.B = class B extends namespace.A { }
|
|
PASS namespace = {}; namespace.A = class { constructor() { } }; namespace.B = class extends namespace.A { constructor() { } }
|
|
PASS namespace = {}; namespace.A = class A { constructor() { } }; namespace.B = class B extends namespace.A { constructor() { } }
|
|
PASS namespace = {}; namespace.A = class { constructor() { } }; namespace.B = class extends (namespace.A) { constructor() { } }
|
|
PASS namespace = {}; namespace.A = class { constructor() { } }; namespace.B = class extends namespace["A"] { constructor() { } }
|
|
PASS namespace = {}; namespace.A = class { constructor() { } }; function getClassA() { return namespace.A }; namespace.B = class extends getClassA() { constructor() { } }
|
|
PASS namespace = {}; namespace.A = class { constructor() { } }; function getClass(prop) { return namespace[prop] }; namespace.B = class extends getClass("A") { constructor() { } }
|
|
PASS namespace = {}; namespace.A = class { constructor() { } }; namespace.B = class extends (false||null||namespace.A) { constructor() { } }
|
|
PASS namespace = {}; namespace.A = class { constructor() { } }; namespace.B = class extends false||null||namespace.A { constructor() { } }:::SyntaxError: Unexpected token '||'. Expected opening '{' at the start of a class body.
|
|
PASS x = 1; namespace = {}; namespace.A = class { constructor() { } }; namespace.B = class extends (x++, namespace.A) { constructor() { } };
|
|
PASS x = 1; namespace = {}; namespace.A = class { constructor() { } }; namespace.B = class extends (namespace.A, x++) { constructor() { } };:::TypeError: The superclass is not a constructor.
|
|
PASS namespace = {}; namespace.A = class { constructor() { } }; namespace.B = class extends new namespace.A { constructor() { } }:::TypeError: The superclass is not a constructor.
|
|
PASS namespace = {}; namespace.A = class { constructor() { } }; namespace.B = class extends new namespace.A() { constructor() { } }:::TypeError: The superclass is not a constructor.
|
|
PASS x = 1; namespace = {}; namespace.A = class { constructor() { } }; try { namespace.B = class extends (x++, namespace.A) { constructor() { } } } catch (e) { } x:::2
|
|
PASS x = 1; namespace = {}; namespace.A = class { constructor() { } }; try { namespace.B = class extends (namespace.A, x++) { constructor() { } } } catch (e) { } x:::2
|
|
PASS Object.getPrototypeOf((class { constructor () { } }).prototype):::Object.prototype
|
|
PASS Object.getPrototypeOf((class extends null { constructor () { super(); } }).prototype):::null
|
|
PASS new (class extends undefined { constructor () { this } }):::TypeError: The superclass is not a constructor.
|
|
PASS x = undefined; new (class extends x { constructor () { super(); } }):::TypeError: The superclass is not a constructor.
|
|
PASS class x {}; new (class extends null { constructor () { return new x; } }) instanceof x
|
|
PASS new (class extends null { constructor () { this; } }):::ReferenceError: 'super()' must be called in derived constructor before accessing |this| or returning non-object.
|
|
PASS new (class extends null { constructor () { super(); } }):::TypeError: function is not a constructor (evaluating 'super()')
|
|
PASS x = {}; new (class extends null { constructor () { return x } }):::x
|
|
PASS y = 12; class C extends null { constructor () { return y; } }; new C;:::TypeError: Cannot return a non-object type in the constructor of a derived class.
|
|
PASS class x {}; new (class extends null { constructor () { return new x; } }) instanceof x
|
|
PASS x = null; Object.getPrototypeOf((class extends x { }).prototype):::null
|
|
PASS Object.prototype.isPrototypeOf(class { })
|
|
PASS Function.prototype.isPrototypeOf(class { })
|
|
PASS successfullyParsed
|
|
|
|
TEST COMPLETE
|
|
|