127 lines
11 KiB
Plaintext
127 lines
11 KiB
Plaintext
Tests for ES6 class name semantics in class statements and expressions
|
|
|
|
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
|
|
|
|
|
|
Class statement
|
|
PASS A:::ReferenceError: Can't find variable: A
|
|
PASS 'use strict'; A:::ReferenceError: Can't find variable: A
|
|
PASS class {}:::SyntaxError: Class statements must have a name.
|
|
PASS 'use strict'; class {}:::SyntaxError: Class statements must have a name.
|
|
PASS class { constructor() {} }:::SyntaxError: Class statements must have a name.
|
|
PASS 'use strict'; class { constructor() {} }:::SyntaxError: Class statements must have a name.
|
|
PASS class A { constructor() {} }
|
|
PASS 'use strict'; class A { constructor() {} }
|
|
PASS class A { constructor() {} }; A.toString():::'class A { constructor() {} }'
|
|
PASS 'use strict'; class A { constructor() {} }; A.toString():::'class A { constructor() {} }'
|
|
PASS class A { constructor() {} }; (new A) instanceof A
|
|
PASS 'use strict'; class A { constructor() {} }; (new A) instanceof A
|
|
PASS class A { constructor() { this.base = A; } }; (new A).base.toString():::'class A { constructor() { this.base = A; } }'
|
|
PASS 'use strict'; class A { constructor() { this.base = A; } }; (new A).base.toString():::'class A { constructor() { this.base = A; } }'
|
|
PASS class A { constructor() {} }; class B extends A {};
|
|
PASS 'use strict'; class A { constructor() {} }; class B extends A {};
|
|
PASS class A { constructor() {} }; class B extends A { constructor() {} }; B.toString():::'class B extends A { constructor() {} }'
|
|
PASS 'use strict'; class A { constructor() {} }; class B extends A { constructor() {} }; B.toString():::'class B extends A { constructor() {} }'
|
|
PASS class A { constructor() {} }; class B extends A {}; (new B) instanceof A
|
|
PASS 'use strict'; class A { constructor() {} }; class B extends A {}; (new B) instanceof A
|
|
PASS class A { constructor() {} }; class B extends A {}; (new B) instanceof B
|
|
PASS 'use strict'; class A { constructor() {} }; class B extends A {}; (new B) instanceof B
|
|
PASS class A { constructor() {} }; class B extends A { constructor() { super(); this.base = A; this.derived = B; } }; (new B).base.toString():::'class A { constructor() {} }'
|
|
PASS 'use strict'; class A { constructor() {} }; class B extends A { constructor() { super(); this.base = A; this.derived = B; } }; (new B).base.toString():::'class A { constructor() {} }'
|
|
PASS class A { constructor() {} }; class B extends A { constructor() { super(); this.base = A; this.derived = B; } }; (new B).derived.toString():::'class B extends A { constructor() { super(); this.base = A; this.derived = B; } }'
|
|
PASS 'use strict'; class A { constructor() {} }; class B extends A { constructor() { super(); this.base = A; this.derived = B; } }; (new B).derived.toString():::'class B extends A { constructor() { super(); this.base = A; this.derived = B; } }'
|
|
|
|
Class expression
|
|
PASS A:::ReferenceError: Can't find variable: A
|
|
PASS 'use strict'; A:::ReferenceError: Can't find variable: A
|
|
PASS (class {})
|
|
PASS 'use strict'; (class {})
|
|
PASS (class { constructor(){} })
|
|
PASS 'use strict'; (class { constructor(){} })
|
|
PASS typeof (class {}):::"function"
|
|
PASS 'use strict'; typeof (class {}):::"function"
|
|
PASS (class A {})
|
|
PASS 'use strict'; (class A {})
|
|
PASS typeof (class A {}):::"function"
|
|
PASS 'use strict'; typeof (class A {}):::"function"
|
|
PASS (class A {}); A:::ReferenceError: Can't find variable: A
|
|
PASS 'use strict'; (class A {}); A:::ReferenceError: Can't find variable: A
|
|
PASS new (class A {})
|
|
PASS 'use strict'; new (class A {})
|
|
PASS typeof (new (class A {})):::"object"
|
|
PASS 'use strict'; typeof (new (class A {})):::"object"
|
|
PASS (new (class A { constructor() { this.base = A; } })).base
|
|
PASS 'use strict'; (new (class A { constructor() { this.base = A; } })).base
|
|
PASS (new (class A { constructor() { this.base = A; } })).base.toString():::"class A { constructor() { this.base = A; } }"
|
|
PASS 'use strict'; (new (class A { constructor() { this.base = A; } })).base.toString():::"class A { constructor() { this.base = A; } }"
|
|
PASS class A {}; (class B extends A {})
|
|
PASS 'use strict'; class A {}; (class B extends A {})
|
|
PASS class A {}; (class B extends A {}); B:::ReferenceError: Can't find variable: B
|
|
PASS 'use strict'; class A {}; (class B extends A {}); B:::ReferenceError: Can't find variable: B
|
|
PASS class A {}; new (class B extends A {})
|
|
PASS 'use strict'; class A {}; new (class B extends A {})
|
|
PASS class A {}; new (class B extends A { constructor() { super(); this.base = A; this.derived = B; } })
|
|
PASS 'use strict'; class A {}; new (class B extends A { constructor() { super(); this.base = A; this.derived = B; } })
|
|
PASS class A {}; (new (class B extends A { constructor() { super(); this.base = A; this.derived = B; } })) instanceof A
|
|
PASS 'use strict'; class A {}; (new (class B extends A { constructor() { super(); this.base = A; this.derived = B; } })) instanceof A
|
|
PASS class A { constructor() {} }; (new (class B extends A { constructor() { super(); this.base = A; this.derived = B; } })).base.toString():::'class A { constructor() {} }'
|
|
PASS 'use strict'; class A { constructor() {} }; (new (class B extends A { constructor() { super(); this.base = A; this.derived = B; } })).base.toString():::'class A { constructor() {} }'
|
|
PASS class A { constructor() {} }; (new (class B extends A { constructor() { super(); this.base = A; this.derived = B; } })).derived.toString():::'class B extends A { constructor() { super(); this.base = A; this.derived = B; } }'
|
|
PASS 'use strict'; class A { constructor() {} }; (new (class B extends A { constructor() { super(); this.base = A; this.derived = B; } })).derived.toString():::'class B extends A { constructor() { super(); this.base = A; this.derived = B; } }'
|
|
|
|
Class expression assignment to variable
|
|
PASS A:::ReferenceError: Can't find variable: A
|
|
PASS 'use strict'; A:::ReferenceError: Can't find variable: A
|
|
PASS var VarA = class {}
|
|
PASS 'use strict'; var VarA = class {}
|
|
PASS var VarA = class { constructor() {} }; VarA.toString():::'class { constructor() {} }'
|
|
PASS 'use strict'; var VarA = class { constructor() {} }; VarA.toString():::'class { constructor() {} }'
|
|
PASS VarA:::ReferenceError: Can't find variable: VarA
|
|
PASS 'use strict'; VarA:::ReferenceError: Can't find variable: VarA
|
|
PASS var VarA = class A { constructor() {} }
|
|
PASS 'use strict'; var VarA = class A { constructor() {} }
|
|
PASS var VarA = class A { constructor() {} }; VarA.toString():::'class A { constructor() {} }'
|
|
PASS 'use strict'; var VarA = class A { constructor() {} }; VarA.toString():::'class A { constructor() {} }'
|
|
PASS var VarA = class A { constructor() {} }; A.toString():::ReferenceError: Can't find variable: A
|
|
PASS 'use strict'; var VarA = class A { constructor() {} }; A.toString():::ReferenceError: Can't find variable: A
|
|
PASS var VarA = class A { constructor() {} }; (new VarA) instanceof VarA
|
|
PASS 'use strict'; var VarA = class A { constructor() {} }; (new VarA) instanceof VarA
|
|
PASS var VarA = class A { constructor() { this.base = A; } }; (new VarA).base.toString():::'class A { constructor() { this.base = A; } }'
|
|
PASS 'use strict'; var VarA = class A { constructor() { this.base = A; } }; (new VarA).base.toString():::'class A { constructor() { this.base = A; } }'
|
|
PASS var VarA = class A { constructor() {} }; var VarB = class B extends VarA { constructor() {} };
|
|
PASS 'use strict'; var VarA = class A { constructor() {} }; var VarB = class B extends VarA { constructor() {} };
|
|
PASS var VarA = class A { constructor() {} }; var VarB = class B extends VarA { constructor() {} }; B:::ReferenceError: Can't find variable: B
|
|
PASS 'use strict'; var VarA = class A { constructor() {} }; var VarB = class B extends VarA { constructor() {} }; B:::ReferenceError: Can't find variable: B
|
|
PASS var VarA = class A { constructor() {} }; var VarB = class B extends VarA { constructor() {} }; VarB.toString():::'class B extends VarA { constructor() {} }'
|
|
PASS 'use strict'; var VarA = class A { constructor() {} }; var VarB = class B extends VarA { constructor() {} }; VarB.toString():::'class B extends VarA { constructor() {} }'
|
|
PASS var VarA = class A { constructor() {} }; var VarB = class B extends VarA { }; (new VarB) instanceof VarA
|
|
PASS 'use strict'; var VarA = class A { constructor() {} }; var VarB = class B extends VarA { }; (new VarB) instanceof VarA
|
|
PASS var VarA = class A { constructor() {} }; var VarB = class B extends VarA { }; (new VarB) instanceof VarB
|
|
PASS 'use strict'; var VarA = class A { constructor() {} }; var VarB = class B extends VarA { }; (new VarB) instanceof VarB
|
|
PASS var VarA = class A { constructor() {} }; var VarB = class B extends VarA { constructor() { super(); this.base = VarA; this.derived = B; this.derivedVar = VarB; } }; (new VarB).base === VarA
|
|
PASS 'use strict'; var VarA = class A { constructor() {} }; var VarB = class B extends VarA { constructor() { super(); this.base = VarA; this.derived = B; this.derivedVar = VarB; } }; (new VarB).base === VarA
|
|
PASS var VarA = class A { constructor() {} }; var VarB = class B extends VarA { constructor() { super(); this.base = VarA; this.derived = B; this.derivedVar = VarB; } }; (new VarB).derived === VarB
|
|
PASS 'use strict'; var VarA = class A { constructor() {} }; var VarB = class B extends VarA { constructor() { super(); this.base = VarA; this.derived = B; this.derivedVar = VarB; } }; (new VarB).derived === VarB
|
|
PASS var VarA = class A { constructor() {} }; var VarB = class B extends VarA { constructor() { super(); this.base = VarA; this.derived = B; this.derivedVar = VarB; } }; (new VarB).derivedVar === VarB
|
|
PASS 'use strict'; var VarA = class A { constructor() {} }; var VarB = class B extends VarA { constructor() { super(); this.base = VarA; this.derived = B; this.derivedVar = VarB; } }; (new VarB).derivedVar === VarB
|
|
|
|
Class statement binding in other circumstances
|
|
PASS var result = A; result:::ReferenceError: Can't find variable: A
|
|
PASS 'use strict'; var result = A; result:::ReferenceError: Can't find variable: A
|
|
PASS var result = A; class A {}; result:::ReferenceError: Cannot access uninitialized variable.
|
|
PASS 'use strict'; var result = A; class A {}; result:::ReferenceError: Cannot access uninitialized variable.
|
|
PASS class A { constructor() { A = 1; } }; new A:::TypeError: Attempted to assign to readonly property.
|
|
PASS 'use strict'; class A { constructor() { A = 1; } }; new A:::TypeError: Attempted to assign to readonly property.
|
|
PASS class A { constructor() { } }; A = 1; A:::1
|
|
PASS 'use strict'; class A { constructor() { } }; A = 1; A:::1
|
|
PASS class A {}; var result = A; result
|
|
PASS 'use strict'; class A {}; var result = A; result
|
|
PASS eval('var Foo = 10'); Foo:::10
|
|
PASS 'use strict'; eval('var Foo = 10'); Foo:::ReferenceError: Can't find variable: Foo
|
|
PASS eval('class Bar { constructor() {} }; Bar.toString()');:::'class Bar { constructor() {} }'
|
|
PASS 'use strict'; eval('class Bar { constructor() {} }'); Bar.toString():::ReferenceError: Can't find variable: Bar
|
|
PASS successfullyParsed
|
|
|
|
TEST COMPLETE
|
|
|