Enable ES6 classes by default
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Mar 2015 05:55:46 +0000 (05:55 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Mar 2015 05:55:46 +0000 (05:55 +0000)
https://bugs.webkit.org/show_bug.cgi?id=142774

Reviewed by Gavin Barraclough.

.:

* Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

Enabled the feature and unskipped tests.

* Configurations/FeatureDefines.xcconfig:
* tests/stress/class-syntax-no-loop-tdz.js:
* tests/stress/class-syntax-no-tdz-in-catch.js:
* tests/stress/class-syntax-no-tdz-in-conditional.js:
* tests/stress/class-syntax-no-tdz-in-loop-no-inline-super.js:
* tests/stress/class-syntax-no-tdz-in-loop.js:
* tests/stress/class-syntax-no-tdz.js:
* tests/stress/class-syntax-tdz-in-catch.js:
* tests/stress/class-syntax-tdz-in-conditional.js:
* tests/stress/class-syntax-tdz-in-loop.js:
* tests/stress/class-syntax-tdz.js:

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

* Configurations/FeatureDefines.xcconfig:

Source/WTF:

* wtf/FeatureDefines.h:

Tools:

* Scripts/webkitperl/FeatureList.pm:

LayoutTests:

Unskipped tests and also fixed tests so that they can run under run-javascript-tests.

* TestExpectations: Unskipped tests.
* js/class-syntax-call-expected.txt:
* js/class-syntax-declaration-expected.txt:
* js/class-syntax-default-constructor-expected.txt:
* js/class-syntax-expression-expected.txt:
* js/class-syntax-extends-expected.txt:
* js/class-syntax-super-expected.txt:
* js/dom/reserved-words-as-property-expected.txt: Rebaselined now that "class" is a non-reserved keyword.
* js/script-tests/class-syntax-call.js: Don't refer to "window" object as it doesn't exit when ran inside jsc.
* js/script-tests/class-syntax-declaration.js: Rebaselined after r181611, which added default constructor support.
* js/script-tests/class-syntax-default-constructor.js: Don't refer to "window" object. Also replaced shouldNotBe
by an explicit !== check as the former is not supported when ran inside jsc.
* js/script-tests/class-syntax-expression.js: Rebaselined after r181611.
* js/script-tests/class-syntax-extends.js: Ditto. Also replaced evalAndLog by shouldNotThrow as the former is not
supported inside jsc.
* js/script-tests/class-syntax-super.js: Don't refer to "window" object as it doesn't exist inside jsc.
* sputnik/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.11-expected.txt:
* sputnik/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.27-expected.txt:
* sputnik/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.5-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@181618 268f45cc-cd09-0410-ab3c-d52691b4dbfc

42 files changed:
ChangeLog
LayoutTests/ChangeLog
LayoutTests/TestExpectations
LayoutTests/js/class-syntax-call-expected.txt
LayoutTests/js/class-syntax-declaration-expected.txt
LayoutTests/js/class-syntax-default-constructor-expected.txt
LayoutTests/js/class-syntax-expression-expected.txt
LayoutTests/js/class-syntax-extends-expected.txt
LayoutTests/js/class-syntax-super-expected.txt
LayoutTests/js/dom/reserved-words-as-property-expected.txt
LayoutTests/js/script-tests/class-syntax-call.js
LayoutTests/js/script-tests/class-syntax-declaration.js
LayoutTests/js/script-tests/class-syntax-default-constructor.js
LayoutTests/js/script-tests/class-syntax-expression.js
LayoutTests/js/script-tests/class-syntax-extends.js
LayoutTests/js/script-tests/class-syntax-super.js
LayoutTests/sputnik/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.11-expected.txt
LayoutTests/sputnik/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.27-expected.txt
LayoutTests/sputnik/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.5-expected.txt
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig
Source/JavaScriptCore/tests/stress/class-syntax-no-loop-tdz.js
Source/JavaScriptCore/tests/stress/class-syntax-no-tdz-in-catch.js
Source/JavaScriptCore/tests/stress/class-syntax-no-tdz-in-conditional.js
Source/JavaScriptCore/tests/stress/class-syntax-no-tdz-in-loop-no-inline-super.js
Source/JavaScriptCore/tests/stress/class-syntax-no-tdz-in-loop.js
Source/JavaScriptCore/tests/stress/class-syntax-no-tdz.js
Source/JavaScriptCore/tests/stress/class-syntax-tdz-in-catch.js
Source/JavaScriptCore/tests/stress/class-syntax-tdz-in-conditional.js
Source/JavaScriptCore/tests/stress/class-syntax-tdz-in-loop.js
Source/JavaScriptCore/tests/stress/class-syntax-tdz.js
Source/WTF/ChangeLog
Source/WTF/wtf/FeatureDefines.h
Source/WebCore/ChangeLog
Source/WebCore/Configurations/FeatureDefines.xcconfig
Source/WebKit/mac/ChangeLog
Source/WebKit/mac/Configurations/FeatureDefines.xcconfig
Source/WebKit2/ChangeLog
Source/WebKit2/Configurations/FeatureDefines.xcconfig
Source/cmake/WebKitFeatures.cmake
Tools/ChangeLog
Tools/Scripts/webkitperl/FeatureList.pm

index b4611ccbb2fc5ef11598e2e1d758bcc0f6db8801..eb29997398d076a7461019eb8cc67a86fcb8a828 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2015-03-16  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Enable ES6 classes by default
+        https://bugs.webkit.org/show_bug.cgi?id=142774
+
+        Reviewed by Gavin Barraclough.
+
+        * Source/cmake/WebKitFeatures.cmake:
+
 2015-03-16  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
 
         [CMake][EFL] Rearrange OptionEFL.cmake to improve readability 
index f81648d5dfb502aa2b1319906707c922524da5b8..e9da67ec93949a18c4d1e7862974b18c95834d29 100644 (file)
@@ -1,3 +1,32 @@
+2015-03-16  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Enable ES6 classes by default
+        https://bugs.webkit.org/show_bug.cgi?id=142774
+
+        Reviewed by Gavin Barraclough.
+
+        Unskipped tests and also fixed tests so that they can run under run-javascript-tests.
+
+        * TestExpectations: Unskipped tests.
+        * js/class-syntax-call-expected.txt:
+        * js/class-syntax-declaration-expected.txt:
+        * js/class-syntax-default-constructor-expected.txt:
+        * js/class-syntax-expression-expected.txt:
+        * js/class-syntax-extends-expected.txt:
+        * js/class-syntax-super-expected.txt:
+        * js/dom/reserved-words-as-property-expected.txt: Rebaselined now that "class" is a non-reserved keyword.
+        * js/script-tests/class-syntax-call.js: Don't refer to "window" object as it doesn't exit when ran inside jsc.
+        * js/script-tests/class-syntax-declaration.js: Rebaselined after r181611, which added default constructor support.
+        * js/script-tests/class-syntax-default-constructor.js: Don't refer to "window" object. Also replaced shouldNotBe
+        by an explicit !== check as the former is not supported when ran inside jsc.
+        * js/script-tests/class-syntax-expression.js: Rebaselined after r181611.
+        * js/script-tests/class-syntax-extends.js: Ditto. Also replaced evalAndLog by shouldNotThrow as the former is not
+        supported inside jsc.
+        * js/script-tests/class-syntax-super.js: Don't refer to "window" object as it doesn't exist inside jsc.
+        * sputnik/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.11-expected.txt:
+        * sputnik/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.27-expected.txt:
+        * sputnik/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.5-expected.txt:
+
 2015-03-16  Joseph Pecoraro  <pecoraro@apple.com>
 
         Web Inspector: Better Console Previews for Arrays / Small Objects
index 58f01464dd7d272c71f9bc31634045b40f2277d9..e170800f8aa650102970777ca43d425de649d739 100644 (file)
@@ -66,15 +66,6 @@ webkit.org/b/126166 [ Debug ] js/dfg-uint32array-overflow-values.html [ Skip ]
 
 webkit.org/b/127860 [ Debug ] js/function-apply-aliased.html [ Skip ]
 
-# ES6 class syntax hasn't been enabled yet.
-webkit.org/b/140491 js/class-syntax-call.html [ Failure ]
-webkit.org/b/140491 js/class-syntax-declaration.html [ Failure ]
-webkit.org/b/140491 js/class-syntax-default-constructor.html [ Failure ]
-webkit.org/b/140491 js/class-syntax-expression.html [ Failure ]
-webkit.org/b/140491 js/class-syntax-extends.html [ Failure ]
-webkit.org/b/140491 js/class-syntax-scoping.html [ Failure ]
-webkit.org/b/140491 js/class-syntax-super.html [ Failure ]
-
 # This test verifies dynamic manipulation of the mroot and msqrt elements.
 mathml/roots-removeChild.html [ ImageOnlyFailure ]
 
index 3109ee1b8aeb1ba5a12d42fcbd15062f3fefc53f..bfc0318abaea76f6504641b5dfa3dde9336a3845 100644 (file)
@@ -1,6 +1,11 @@
-PASS class A { constructor() {} }; window.A = A; new A did not throw exception.
+Tests for calling the constructors of ES6 classes
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS class A { constructor() {} }; new A did not throw exception.
 PASS A() threw exception TypeError: Cannot call a class constructor.
-PASS class B extends A { constructor() { super() } }; window.B = B; new A did not throw exception.
+PASS class B extends A { constructor() { super() } }; new B did not throw exception.
 PASS B() threw exception TypeError: Cannot call a class constructor.
 PASS new (class { constructor() {} })() did not throw exception.
 PASS (class { constructor() {} })() threw exception TypeError: Cannot call a class constructor.
index 148736372c8252e8b68ca092ffd0ef900091e7b8..93c5e4a02f527a393c4fa876f859e3a52dbf6829 100644 (file)
@@ -1,3 +1,8 @@
+Tests for ES6 class syntax declarations
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
 PASS constructorCallCount is 0
 PASS A.someStaticMethod() is staticMethodValue
 PASS (new A).someInstanceMethod() is instanceMethodValue
@@ -13,7 +18,7 @@ PASS A.prototype.constructor is A
 PASS class threw exception SyntaxError: Unexpected end of script.
 PASS class X { threw exception SyntaxError: Unexpected end of script.
 PASS class X { ( } threw exception SyntaxError: Unexpected token '('. Expected an indentifier..
-PASS class X {} threw exception SyntaxError: Class declaration without a constructor is not supported yet..
+PASS class X {} did not throw exception.
 PASS class X { constructor() {} constructor() {} } threw exception SyntaxError: Cannot declare multiple constructors in a single class..
 PASS class X { constructor() {} static constructor() { return staticMethodValue; } } did not throw exception.
 PASS X.constructor() is staticMethodValue
index 5d01d8597602aa1839689f9d98263aadbc313fc4..8553d86794367b9bd9e78397e66a45e23b5e77e3 100644 (file)
@@ -3,14 +3,14 @@ Tests for ES6 class syntax default constructor
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS class A { }; window.A = A; new A instanceof A is true
+PASS class A { }; new A instanceof A is true
 PASS A() threw exception TypeError: Cannot call a class constructor.
 PASS A.prototype.constructor instanceof Function is true
 PASS A.prototype.constructor.name is "A"
 PASS class B extends A { }; new B instanceof A; new B instanceof A is true
 PASS B() threw exception TypeError: Cannot call a class constructor.
 PASS B.prototype.constructor.name is "B"
-PASS A is not B
+PASS A !== B is true
 FAIL A.prototype.constructor should be function B() { super(...arguments); }. Was function A() { }.
 PASS new (class extends (class { constructor(a, b) { return [a, b]; } }) {})(1, 2) is [1, 2]
 PASS successfullyParsed is true
index fd51c9ab0c2bd9aa5135f34262634d18ee3886ef..38074617a151aa99a8729e9e6535462298bf3efa 100644 (file)
@@ -1,3 +1,8 @@
+Tests for ES6 class syntax expressions
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
 PASS constructorCallCount is 0
 PASS A.someStaticMethod() is staticMethodValue
 PASS (new A).someInstanceMethod() is instanceMethodValue
@@ -13,7 +18,7 @@ PASS A.prototype.constructor is A
 PASS x = class threw exception SyntaxError: Unexpected end of script.
 PASS x = class { threw exception SyntaxError: Unexpected end of script.
 PASS x = class { ( } threw exception SyntaxError: Unexpected token '('. Expected an indentifier..
-PASS x = class {} threw exception SyntaxError: Class declaration without a constructor is not supported yet..
+PASS x = class {} did not throw exception.
 PASS x = class { constructor() {} constructor() {} } threw exception SyntaxError: Cannot declare multiple constructors in a single class..
 PASS x = class { constructor() {} static constructor() { return staticMethodValue; } } did not throw exception.
 PASS x.constructor() is staticMethodValue
index c054bef2d83ab9da1ec7ebe67486a0036d6478b0..c336d61cdf9920d4fb1e3b5b7bf8375ee4eafc59 100644 (file)
@@ -12,7 +12,7 @@ PASS Derived.staticOverridenMethod() is "derived"
 PASS x = class extends threw exception SyntaxError: Unexpected end of script.
 PASS x = class extends threw exception SyntaxError: Unexpected end of script.
 PASS x = class extends Base { threw exception SyntaxError: Unexpected end of script.
-PASS x = class extends Base {} threw exception SyntaxError: Class declaration without a constructor is not supported yet..
+PASS x = class extends Base { } did not throw exception.
 PASS x = class extends Base { constructor() { } } did not throw exception.
 PASS x.__proto__ is Base
 PASS x.prototype.__proto__ is Base.prototype
@@ -20,9 +20,9 @@ PASS x = class extends null { constructor() { } }; x.__proto__ is Function.proto
 PASS x.__proto__ is Function.prototype
 PASS x = class extends 3 { constructor() { } }; x.__proto__ threw exception TypeError: The superclass is not an object..
 PASS x = class extends "abc" { constructor() { } }; x.__proto__ threw exception TypeError: The superclass is not an object..
-baseWithBadPrototype = class { constructor() { } }; baseWithBadPrototype.prototype = 3
+PASS baseWithBadPrototype = class { constructor() { } }; baseWithBadPrototype.prototype = 3 did not throw exception.
 PASS x = class extends baseWithBadPrototype { constructor() { } } threw exception TypeError: The superclass's prototype is not an object..
-baseWithBadPrototype.prototype = "abc"
+PASS baseWithBadPrototype.prototype = "abc" did not throw exception.
 PASS x = class extends baseWithBadPrototype { constructor() { } } threw exception TypeError: The superclass's prototype is not an object..
 PASS baseWithBadPrototype.prototype = null; x = class extends baseWithBadPrototype { constructor() { } } did not throw exception.
 PASS successfullyParsed is true
index 1f42791d7e5433d8ccba70832fef234440a36e0e..e636c88c3b9a672c394f4c36c2c4f4362b3d00f2 100644 (file)
@@ -27,12 +27,12 @@ PASS new (class { constructor() { return 1; } }) instanceof Object is true
 PASS new (class extends Base { constructor() { return undefined } }) is undefined
 PASS x = { }; new (class extends Base { constructor() { return x } }); is x
 PASS x instanceof Base is false
-PASS new (class extends Base { constructor() { } }) threw exception TypeError: Cannot return a non-object type in the constructor of a derived class..
+PASS new (class extends Base { constructor() { } }) threw exception ReferenceError: Cannot access uninitialized variable..
 PASS new (class extends Base { constructor() { return 1; } }) threw exception TypeError: Cannot return a non-object type in the constructor of a derived class..
 PASS new (class extends null { constructor() { return undefined } }) is undefined
 PASS x = { }; new (class extends null { constructor() { return x } }); is x
 PASS x instanceof Object is true
-PASS new (class extends null { constructor() { } }) threw exception TypeError: Cannot return a non-object type in the constructor of a derived class..
+PASS new (class extends null { constructor() { } }) threw exception ReferenceError: Cannot access uninitialized variable..
 PASS new (class extends null { constructor() { return 1; } }) threw exception TypeError: Cannot return a non-object type in the constructor of a derived class..
 PASS new (class extends null { constructor() { super() } }) did not throw exception.
 PASS new (class { constructor() { super() } }) threw exception SyntaxError: Cannot call super() in a base class constructor..
index 7e76234ae53d03eb63be4672f6bc41b4aa29507e..fbb02593b043098d94232a4fc9a6df498dc0bc37 100644 (file)
@@ -1047,36 +1047,36 @@ PASS "use strict";({ with: 42 }.with === 42) is true
 PASS (function(){"use strict";({ with: 42 }.with === 42)}); true is true
 PASS "use strict";({ get with(){}, set with(){}, parsedOkay: 42 }.parsedOkay === 42) is true
 PASS (function(){"use strict";({ get with(){}, set with(){}, parsedOkay: 42 }.parsedOkay === 42)}); true is true
-PASS var class; true threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS (function(){var class; true}); true threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS var class = 42; class === 42 threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS (function(){var class = 42; class === 42}); true threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS function g(class){  }; true threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS (function(){function g(class){  }; true}); true threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS /class/.test(function g(class){  }) threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS (function(){/class/.test(function g(class){  })}); true threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS try{}catch(class){}; true threw exception SyntaxError: Cannot use the reserved word 'class' as a catch variable name..
-PASS (function(){try{}catch(class){}; true}); true threw exception SyntaxError: Cannot use the reserved word 'class' as a catch variable name..
-PASS function class(){  }; true threw exception SyntaxError: Cannot use the reserved word 'class' as a function name..
-PASS (function(){function class(){  }; true}); true threw exception SyntaxError: Cannot use the reserved word 'class' as a function name..
+PASS var class; true threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS (function(){var class; true}); true threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS var class = 42; class === 42 threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS (function(){var class = 42; class === 42}); true threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS function g(class){  }; true threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS (function(){function g(class){  }; true}); true threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS /class/.test(function g(class){  }) threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS (function(){/class/.test(function g(class){  })}); true threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS try{}catch(class){}; true threw exception SyntaxError: Cannot use the keyword 'class' as a catch variable name..
+PASS (function(){try{}catch(class){}; true}); true threw exception SyntaxError: Cannot use the keyword 'class' as a catch variable name..
+PASS function class(){  }; true threw exception SyntaxError: Cannot use the keyword 'class' as a function name..
+PASS (function(){function class(){  }; true}); true threw exception SyntaxError: Cannot use the keyword 'class' as a function name..
 PASS ({ "class": 42 }.class === 42) is true
 PASS (function(){({ "class": 42 }.class === 42)}); true is true
 PASS ({ class: 42 }.class === 42) is true
 PASS (function(){({ class: 42 }.class === 42)}); true is true
 PASS ({ get class(){}, set class(){}, parsedOkay: 42 }.parsedOkay === 42) is true
 PASS (function(){({ get class(){}, set class(){}, parsedOkay: 42 }.parsedOkay === 42)}); true is true
-PASS "use strict";var class; true threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS (function(){"use strict";var class; true}); true threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS "use strict";var class = 42; class === 42 threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS (function(){"use strict";var class = 42; class === 42}); true threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS "use strict";function g(class){ "use strict"; }; true threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS (function(){"use strict";function g(class){ "use strict"; }; true}); true threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS "use strict";/class/.test(function g(class){ "use strict"; }) threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS (function(){"use strict";/class/.test(function g(class){ "use strict"; })}); true threw exception SyntaxError: Cannot use the reserved word 'class' as a variable name..
-PASS "use strict";try{}catch(class){}; true threw exception SyntaxError: Cannot use the reserved word 'class' as a catch variable name..
-PASS (function(){"use strict";try{}catch(class){}; true}); true threw exception SyntaxError: Cannot use the reserved word 'class' as a catch variable name..
-PASS "use strict";function class(){ "use strict"; }; true threw exception SyntaxError: Cannot use the reserved word 'class' as a function name..
-PASS (function(){"use strict";function class(){ "use strict"; }; true}); true threw exception SyntaxError: Cannot use the reserved word 'class' as a function name..
+PASS "use strict";var class; true threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS (function(){"use strict";var class; true}); true threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS "use strict";var class = 42; class === 42 threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS (function(){"use strict";var class = 42; class === 42}); true threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS "use strict";function g(class){ "use strict"; }; true threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS (function(){"use strict";function g(class){ "use strict"; }; true}); true threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS "use strict";/class/.test(function g(class){ "use strict"; }) threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS (function(){"use strict";/class/.test(function g(class){ "use strict"; })}); true threw exception SyntaxError: Cannot use the keyword 'class' as a variable name..
+PASS "use strict";try{}catch(class){}; true threw exception SyntaxError: Cannot use the keyword 'class' as a catch variable name..
+PASS (function(){"use strict";try{}catch(class){}; true}); true threw exception SyntaxError: Cannot use the keyword 'class' as a catch variable name..
+PASS "use strict";function class(){ "use strict"; }; true threw exception SyntaxError: Cannot use the keyword 'class' as a function name..
+PASS (function(){"use strict";function class(){ "use strict"; }; true}); true threw exception SyntaxError: Cannot use the keyword 'class' as a function name..
 PASS "use strict";({ "class": 42 }.class === 42) is true
 PASS (function(){"use strict";({ "class": 42 }.class === 42)}); true is true
 PASS "use strict";({ class: 42 }.class === 42) is true
@@ -1191,36 +1191,36 @@ PASS "use strict";({ export: 42 }.export === 42) is true
 PASS (function(){"use strict";({ export: 42 }.export === 42)}); true is true
 PASS "use strict";({ get export(){}, set export(){}, parsedOkay: 42 }.parsedOkay === 42) is true
 PASS (function(){"use strict";({ get export(){}, set export(){}, parsedOkay: 42 }.parsedOkay === 42)}); true is true
-PASS var extends; true threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS (function(){var extends; true}); true threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS var extends = 42; extends === 42 threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS (function(){var extends = 42; extends === 42}); true threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS function g(extends){  }; true threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS (function(){function g(extends){  }; true}); true threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS /extends/.test(function g(extends){  }) threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS (function(){/extends/.test(function g(extends){  })}); true threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS try{}catch(extends){}; true threw exception SyntaxError: Cannot use the reserved word 'extends' as a catch variable name..
-PASS (function(){try{}catch(extends){}; true}); true threw exception SyntaxError: Cannot use the reserved word 'extends' as a catch variable name..
-PASS function extends(){  }; true threw exception SyntaxError: Cannot use the reserved word 'extends' as a function name..
-PASS (function(){function extends(){  }; true}); true threw exception SyntaxError: Cannot use the reserved word 'extends' as a function name..
+PASS var extends; true threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS (function(){var extends; true}); true threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS var extends = 42; extends === 42 threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS (function(){var extends = 42; extends === 42}); true threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS function g(extends){  }; true threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS (function(){function g(extends){  }; true}); true threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS /extends/.test(function g(extends){  }) threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS (function(){/extends/.test(function g(extends){  })}); true threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS try{}catch(extends){}; true threw exception SyntaxError: Cannot use the keyword 'extends' as a catch variable name..
+PASS (function(){try{}catch(extends){}; true}); true threw exception SyntaxError: Cannot use the keyword 'extends' as a catch variable name..
+PASS function extends(){  }; true threw exception SyntaxError: Cannot use the keyword 'extends' as a function name..
+PASS (function(){function extends(){  }; true}); true threw exception SyntaxError: Cannot use the keyword 'extends' as a function name..
 PASS ({ "extends": 42 }.extends === 42) is true
 PASS (function(){({ "extends": 42 }.extends === 42)}); true is true
 PASS ({ extends: 42 }.extends === 42) is true
 PASS (function(){({ extends: 42 }.extends === 42)}); true is true
 PASS ({ get extends(){}, set extends(){}, parsedOkay: 42 }.parsedOkay === 42) is true
 PASS (function(){({ get extends(){}, set extends(){}, parsedOkay: 42 }.parsedOkay === 42)}); true is true
-PASS "use strict";var extends; true threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS (function(){"use strict";var extends; true}); true threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS "use strict";var extends = 42; extends === 42 threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS (function(){"use strict";var extends = 42; extends === 42}); true threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS "use strict";function g(extends){ "use strict"; }; true threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS (function(){"use strict";function g(extends){ "use strict"; }; true}); true threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS "use strict";/extends/.test(function g(extends){ "use strict"; }) threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS (function(){"use strict";/extends/.test(function g(extends){ "use strict"; })}); true threw exception SyntaxError: Cannot use the reserved word 'extends' as a variable name..
-PASS "use strict";try{}catch(extends){}; true threw exception SyntaxError: Cannot use the reserved word 'extends' as a catch variable name..
-PASS (function(){"use strict";try{}catch(extends){}; true}); true threw exception SyntaxError: Cannot use the reserved word 'extends' as a catch variable name..
-PASS "use strict";function extends(){ "use strict"; }; true threw exception SyntaxError: Cannot use the reserved word 'extends' as a function name..
-PASS (function(){"use strict";function extends(){ "use strict"; }; true}); true threw exception SyntaxError: Cannot use the reserved word 'extends' as a function name..
+PASS "use strict";var extends; true threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS (function(){"use strict";var extends; true}); true threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS "use strict";var extends = 42; extends === 42 threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS (function(){"use strict";var extends = 42; extends === 42}); true threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS "use strict";function g(extends){ "use strict"; }; true threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS (function(){"use strict";function g(extends){ "use strict"; }; true}); true threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS "use strict";/extends/.test(function g(extends){ "use strict"; }) threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS (function(){"use strict";/extends/.test(function g(extends){ "use strict"; })}); true threw exception SyntaxError: Cannot use the keyword 'extends' as a variable name..
+PASS "use strict";try{}catch(extends){}; true threw exception SyntaxError: Cannot use the keyword 'extends' as a catch variable name..
+PASS (function(){"use strict";try{}catch(extends){}; true}); true threw exception SyntaxError: Cannot use the keyword 'extends' as a catch variable name..
+PASS "use strict";function extends(){ "use strict"; }; true threw exception SyntaxError: Cannot use the keyword 'extends' as a function name..
+PASS (function(){"use strict";function extends(){ "use strict"; }; true}); true threw exception SyntaxError: Cannot use the keyword 'extends' as a function name..
 PASS "use strict";({ "extends": 42 }.extends === 42) is true
 PASS (function(){"use strict";({ "extends": 42 }.extends === 42)}); true is true
 PASS "use strict";({ extends: 42 }.extends === 42) is true
@@ -1263,36 +1263,36 @@ PASS "use strict";({ import: 42 }.import === 42) is true
 PASS (function(){"use strict";({ import: 42 }.import === 42)}); true is true
 PASS "use strict";({ get import(){}, set import(){}, parsedOkay: 42 }.parsedOkay === 42) is true
 PASS (function(){"use strict";({ get import(){}, set import(){}, parsedOkay: 42 }.parsedOkay === 42)}); true is true
-PASS var super; true threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS (function(){var super; true}); true threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS var super = 42; super === 42 threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS (function(){var super = 42; super === 42}); true threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS function g(super){  }; true threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS (function(){function g(super){  }; true}); true threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS /super/.test(function g(super){  }) threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS (function(){/super/.test(function g(super){  })}); true threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS try{}catch(super){}; true threw exception SyntaxError: Cannot use the reserved word 'super' as a catch variable name..
-PASS (function(){try{}catch(super){}; true}); true threw exception SyntaxError: Cannot use the reserved word 'super' as a catch variable name..
-PASS function super(){  }; true threw exception SyntaxError: Cannot use the reserved word 'super' as a function name..
-PASS (function(){function super(){  }; true}); true threw exception SyntaxError: Cannot use the reserved word 'super' as a function name..
+PASS var super; true threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS (function(){var super; true}); true threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS var super = 42; super === 42 threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS (function(){var super = 42; super === 42}); true threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS function g(super){  }; true threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS (function(){function g(super){  }; true}); true threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS /super/.test(function g(super){  }) threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS (function(){/super/.test(function g(super){  })}); true threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS try{}catch(super){}; true threw exception SyntaxError: Cannot use the keyword 'super' as a catch variable name..
+PASS (function(){try{}catch(super){}; true}); true threw exception SyntaxError: Cannot use the keyword 'super' as a catch variable name..
+PASS function super(){  }; true threw exception SyntaxError: Cannot use the keyword 'super' as a function name..
+PASS (function(){function super(){  }; true}); true threw exception SyntaxError: Cannot use the keyword 'super' as a function name..
 PASS ({ "super": 42 }.super === 42) is true
 PASS (function(){({ "super": 42 }.super === 42)}); true is true
 PASS ({ super: 42 }.super === 42) is true
 PASS (function(){({ super: 42 }.super === 42)}); true is true
 PASS ({ get super(){}, set super(){}, parsedOkay: 42 }.parsedOkay === 42) is true
 PASS (function(){({ get super(){}, set super(){}, parsedOkay: 42 }.parsedOkay === 42)}); true is true
-PASS "use strict";var super; true threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS (function(){"use strict";var super; true}); true threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS "use strict";var super = 42; super === 42 threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS (function(){"use strict";var super = 42; super === 42}); true threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS "use strict";function g(super){ "use strict"; }; true threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS (function(){"use strict";function g(super){ "use strict"; }; true}); true threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS "use strict";/super/.test(function g(super){ "use strict"; }) threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS (function(){"use strict";/super/.test(function g(super){ "use strict"; })}); true threw exception SyntaxError: Cannot use the reserved word 'super' as a variable name..
-PASS "use strict";try{}catch(super){}; true threw exception SyntaxError: Cannot use the reserved word 'super' as a catch variable name..
-PASS (function(){"use strict";try{}catch(super){}; true}); true threw exception SyntaxError: Cannot use the reserved word 'super' as a catch variable name..
-PASS "use strict";function super(){ "use strict"; }; true threw exception SyntaxError: Cannot use the reserved word 'super' as a function name..
-PASS (function(){"use strict";function super(){ "use strict"; }; true}); true threw exception SyntaxError: Cannot use the reserved word 'super' as a function name..
+PASS "use strict";var super; true threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS (function(){"use strict";var super; true}); true threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS "use strict";var super = 42; super === 42 threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS (function(){"use strict";var super = 42; super === 42}); true threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS "use strict";function g(super){ "use strict"; }; true threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS (function(){"use strict";function g(super){ "use strict"; }; true}); true threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS "use strict";/super/.test(function g(super){ "use strict"; }) threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS (function(){"use strict";/super/.test(function g(super){ "use strict"; })}); true threw exception SyntaxError: Cannot use the keyword 'super' as a variable name..
+PASS "use strict";try{}catch(super){}; true threw exception SyntaxError: Cannot use the keyword 'super' as a catch variable name..
+PASS (function(){"use strict";try{}catch(super){}; true}); true threw exception SyntaxError: Cannot use the keyword 'super' as a catch variable name..
+PASS "use strict";function super(){ "use strict"; }; true threw exception SyntaxError: Cannot use the keyword 'super' as a function name..
+PASS (function(){"use strict";function super(){ "use strict"; }; true}); true threw exception SyntaxError: Cannot use the keyword 'super' as a function name..
 PASS "use strict";({ "super": 42 }.super === 42) is true
 PASS (function(){"use strict";({ "super": 42 }.super === 42)}); true is true
 PASS "use strict";({ super: 42 }.super === 42) is true
index e4b1b99a1906115a1846bf9e7a6b7dc1b07410fa..d324a88d3badd893b14b402bfd1e703e7cde3c6b 100644 (file)
@@ -1,8 +1,8 @@
-//@ skip
+description('Tests for calling the constructors of ES6 classes');
 
-shouldNotThrow('class A { constructor() {} }; window.A = A; new A');
+shouldNotThrow('class A { constructor() {} }; new A');
 shouldThrow('A()', '"TypeError: Cannot call a class constructor"');
-shouldNotThrow('class B extends A { constructor() { super() } }; window.B = B; new A');
+shouldNotThrow('class B extends A { constructor() { super() } }; new B');
 shouldThrow('B()', '"TypeError: Cannot call a class constructor"');
 shouldNotThrow('new (class { constructor() {} })()');
 shouldThrow('(class { constructor() {} })()', '"TypeError: Cannot call a class constructor"');
index 9e2def31ac1d23cdb57a97232cc927202d958cca..035321e783a5c0e8bbb72438ac7d1b1cc1bfa9be 100644 (file)
@@ -1,4 +1,5 @@
-//@ skip
+
+description('Tests for ES6 class syntax declarations');
 
 var constructorCallCount = 0;
 const staticMethodValue = [1];
@@ -29,7 +30,7 @@ shouldBe("A.prototype.constructor", "A");
 shouldThrow("class", "'SyntaxError: Unexpected end of script'");
 shouldThrow("class X {", "'SyntaxError: Unexpected end of script'");
 shouldThrow("class X { ( }", "'SyntaxError: Unexpected token \\'(\\'. Expected an indentifier.'");
-shouldThrow("class X {}", "'SyntaxError: Class declaration without a constructor is not supported yet.'");
+shouldNotThrow("class X {}");
 shouldThrow("class X { constructor() {} constructor() {} }", "'SyntaxError: Cannot declare multiple constructors in a single class.'");
 shouldNotThrow("class X { constructor() {} static constructor() { return staticMethodValue; } }");
 shouldBe("X.constructor()", "staticMethodValue");
index 76d2983fd7e5e08724ca9852cc051de1567d64b1..5cb7ca4f2d31ee2a8f6375b478c034e83f42c1a4 100644 (file)
@@ -1,15 +1,14 @@
-//@ skip
 
 description('Tests for ES6 class syntax default constructor');
 
-shouldBeTrue('class A { }; window.A = A; new A instanceof A');
+shouldBeTrue('class A { }; new A instanceof A');
 shouldThrow('A()', '"TypeError: Cannot call a class constructor"');
 shouldBeTrue('A.prototype.constructor instanceof Function');
 shouldBe('A.prototype.constructor.name', '"A"');
 shouldBeTrue('class B extends A { }; new B instanceof A; new B instanceof A');
 shouldThrow('B()', '"TypeError: Cannot call a class constructor"');
 shouldBe('B.prototype.constructor.name', '"B"');
-shouldNotBe('A', 'B');
+shouldBeTrue('A !== B');
 shouldBe('A.prototype.constructor', 'B.prototype.constructor');
 shouldBe('new (class extends (class { constructor(a, b) { return [a, b]; } }) {})(1, 2)', '[1, 2]');
 
index 9ba4ba665597d8d2b602565742f8c5b039fb8689..6eca6ffe50594ad5980c5f4ea514fd275f3f8c2b 100644 (file)
@@ -1,4 +1,5 @@
-//@ skip
+
+description('Tests for ES6 class syntax expressions');
 
 var constructorCallCount = 0;
 const staticMethodValue = [1];
@@ -29,7 +30,7 @@ shouldBe("A.prototype.constructor", "A");
 shouldThrow("x = class", "'SyntaxError: Unexpected end of script'");
 shouldThrow("x = class {", "'SyntaxError: Unexpected end of script'");
 shouldThrow("x = class { ( }", "'SyntaxError: Unexpected token \\'(\\'. Expected an indentifier.'");
-shouldThrow("x = class {}", "'SyntaxError: Class declaration without a constructor is not supported yet.'");
+shouldNotThrow("x = class {}");
 shouldThrow("x = class { constructor() {} constructor() {} }", "'SyntaxError: Cannot declare multiple constructors in a single class.'");
 shouldNotThrow("x = class { constructor() {} static constructor() { return staticMethodValue; } }");
 shouldBe("x.constructor()", "staticMethodValue");
index 8776940170760991746d7b220cf60e81ab1dd4b7..394e7729a587c0fe90e134b50856c7eba0bc2b3d 100644 (file)
@@ -1,4 +1,3 @@
-//@ skip
 
 description('Tests for ES6 class syntax "extends"');
 
@@ -26,7 +25,7 @@ shouldBe('Derived.staticOverridenMethod()', '"derived"');
 shouldThrow('x = class extends', '"SyntaxError: Unexpected end of script"');
 shouldThrow('x = class extends', '"SyntaxError: Unexpected end of script"');
 shouldThrow('x = class extends Base {', '"SyntaxError: Unexpected end of script"');
-shouldThrow('x = class extends Base {}', '"SyntaxError: Class declaration without a constructor is not supported yet."');
+shouldNotThrow('x = class extends Base { }');
 shouldNotThrow('x = class extends Base { constructor() { } }');
 shouldBe('x.__proto__', 'Base');
 shouldBe('x.prototype.__proto__', 'Base.prototype');
@@ -34,9 +33,9 @@ shouldBe('x = class extends null { constructor() { } }; x.__proto__', 'Function.
 shouldBe('x.__proto__', 'Function.prototype');
 shouldThrow('x = class extends 3 { constructor() { } }; x.__proto__', '"TypeError: The superclass is not an object."');
 shouldThrow('x = class extends "abc" { constructor() { } }; x.__proto__', '"TypeError: The superclass is not an object."');
-evalAndLog('baseWithBadPrototype = class { constructor() { } }; baseWithBadPrototype.prototype = 3');
+shouldNotThrow('baseWithBadPrototype = class { constructor() { } }; baseWithBadPrototype.prototype = 3');
 shouldThrow('x = class extends baseWithBadPrototype { constructor() { } }', '"TypeError: The superclass\'s prototype is not an object."');
-evalAndLog('baseWithBadPrototype.prototype = "abc"');
+shouldNotThrow('baseWithBadPrototype.prototype = "abc"');
 shouldThrow('x = class extends baseWithBadPrototype { constructor() { } }', '"TypeError: The superclass\'s prototype is not an object."');
 shouldNotThrow('baseWithBadPrototype.prototype = null; x = class extends baseWithBadPrototype { constructor() { } }');
 
index d1531bb5949095371cb28f476b43625721e0b3f9..3c29ac4aad636f486c080410de6780c9ae63e6a6 100644 (file)
@@ -1,4 +1,3 @@
-//@ skip
 
 description('Tests for ES6 class syntax "super"');
 
@@ -17,9 +16,9 @@ class Derived extends Base {
     chainMethod() { return [super.chainMethod(), 'derived']; }
     callBaseMethod() { return super.baseMethod(); }
     get callBaseMethodInGetter() { return super['baseMethod'](); }
-    set callBaseMethodInSetter() { window.valueInSetter = super.baseMethod(); }
+    set callBaseMethodInSetter() { valueInSetter = super.baseMethod(); }
     get baseMethodInGetterSetter() { return super.baseMethod; }
-    set baseMethodInGetterSetter() { window.valueInSetter = super['baseMethod']; }
+    set baseMethodInGetterSetter() { valueInSetter = super['baseMethod']; }
     static staticMethod() { return super.staticMethod(); }
 }
 
@@ -53,12 +52,12 @@ shouldBeTrue('new (class { constructor() { return 1; } }) instanceof Object');
 shouldBe('new (class extends Base { constructor() { return undefined } })', 'undefined');
 shouldBe('x = { }; new (class extends Base { constructor() { return x } });', 'x');
 shouldBeFalse('x instanceof Base');
-shouldThrow('new (class extends Base { constructor() { } })', '"TypeError: Cannot return a non-object type in the constructor of a derived class."');
+shouldThrow('new (class extends Base { constructor() { } })', '"ReferenceError: Cannot access uninitialized variable."');
 shouldThrow('new (class extends Base { constructor() { return 1; } })', '"TypeError: Cannot return a non-object type in the constructor of a derived class."');
 shouldBe('new (class extends null { constructor() { return undefined } })', 'undefined');
 shouldBe('x = { }; new (class extends null { constructor() { return x } });', 'x');
 shouldBeTrue('x instanceof Object');
-shouldThrow('new (class extends null { constructor() { } })', '"TypeError: Cannot return a non-object type in the constructor of a derived class."');
+shouldThrow('new (class extends null { constructor() { } })', '"ReferenceError: Cannot access uninitialized variable."');
 shouldThrow('new (class extends null { constructor() { return 1; } })', '"TypeError: Cannot return a non-object type in the constructor of a derived class."');
 shouldNotThrow('new (class extends null { constructor() { super() } })');
 shouldThrow('new (class { constructor() { super() } })', '"SyntaxError: Cannot call super() in a base class constructor."');
index c64285ce2c0ea3d78a9e49c915e70b7d41501f48..a7d8385321d0686c7cbf3276bd02e4534850d66e 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 76: SyntaxError: Unexpected use of reserved word 'extends'
+CONSOLE MESSAGE: line 76: SyntaxError: Unexpected keyword 'extends'
 S7.5.3_A1.11
 
 PASS Expected parsing failure
index 0bab4df8c1cfbe273336645de981be0b765b5ed4..ceb64d5ce430766791f2e6a442ab997d4def712a 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 76: SyntaxError: Unexpected use of reserved word 'super'
+CONSOLE MESSAGE: line 76: SyntaxError: Cannot reference super.
 S7.5.3_A1.27
 
 PASS Expected parsing failure
index 75616b5ede1788b8b30bdc35f50dbe0f68451101..ec664aa8796b9e49112f2dddb2359204269b5659 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 76: SyntaxError: Unexpected use of reserved word 'class'
+CONSOLE MESSAGE: line 76: SyntaxError: Unexpected keyword 'class'. Class declaration is not allowed in a lexically nested statement.
 S7.5.3_A1.5
 
 PASS Expected parsing failure
index d86f6b94cfba386e2a6c05779bb0ffeaf56fd401..9a48dc50405c33dfc9754a0d45b3ed2caebd0180 100644 (file)
@@ -1,3 +1,24 @@
+2015-03-16  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Enable ES6 classes by default
+        https://bugs.webkit.org/show_bug.cgi?id=142774
+
+        Reviewed by Gavin Barraclough.
+
+        Enabled the feature and unskipped tests.
+
+        * Configurations/FeatureDefines.xcconfig:
+        * tests/stress/class-syntax-no-loop-tdz.js:
+        * tests/stress/class-syntax-no-tdz-in-catch.js:
+        * tests/stress/class-syntax-no-tdz-in-conditional.js:
+        * tests/stress/class-syntax-no-tdz-in-loop-no-inline-super.js:
+        * tests/stress/class-syntax-no-tdz-in-loop.js:
+        * tests/stress/class-syntax-no-tdz.js:
+        * tests/stress/class-syntax-tdz-in-catch.js:
+        * tests/stress/class-syntax-tdz-in-conditional.js:
+        * tests/stress/class-syntax-tdz-in-loop.js:
+        * tests/stress/class-syntax-tdz.js:
+
 2015-03-16  Joseph Pecoraro  <pecoraro@apple.com>
 
         Web Inspector: Better Console Previews for Arrays / Small Objects
index 853297eaaf1bacbbda588a6dd577720a46323415..8b112fae45b957dd2641fdb6f4689880589af860 100644 (file)
@@ -44,7 +44,7 @@ ENABLE_CACHE_PARTITIONING = ENABLE_CACHE_PARTITIONING;
 ENABLE_CANVAS_PATH = ENABLE_CANVAS_PATH;
 ENABLE_CANVAS_PROXY = ;
 ENABLE_CHANNEL_MESSAGING = ENABLE_CHANNEL_MESSAGING;
-ENABLE_ES6_CLASS_SYNTAX = ;
+ENABLE_ES6_CLASS_SYNTAX = ENABLE_ES6_CLASS_SYNTAX;
 ENABLE_CONTENT_FILTERING = ENABLE_CONTENT_FILTERING;
 ENABLE_CSP_NEXT = ;
 ENABLE_CSS_ANIMATIONS_LEVEL_2 = ENABLE_CSS_ANIMATIONS_LEVEL_2;
index e663919b6e31cfbeacbb82c111aa3b769a48064d..a5c3e05d82b9677e1e4a5d2ef1b71fd1876e93f8 100644 (file)
@@ -1,4 +1,3 @@
-//@ skip
 
 class A {
     constructor() { }
index f5c382679dd73c7ff0d5486628e707cf2ec501a6..de0346381ec70704e6ecab2d6d65683412841054 100644 (file)
@@ -1,4 +1,3 @@
-//@ skip
 
 class A {
     constructor() { }
index c04094e0d3ceed5073416170f68ef66c6ac775e8..72b0068a190deede786605a327e75c1dded08d41 100644 (file)
@@ -1,4 +1,3 @@
-//@ skip
 
 class A {
     constructor() { }
index f66c7c1aa186deb31a4332bad6a5aa90266dcc02..48e9c37225a2f1dfd7a9749bfe0df6e99a2ce4ab 100644 (file)
@@ -1,4 +1,3 @@
-//@ skip
 
 class A {
     constructor() { }
index 4aacc6a8c7c26c7564564e7e51b86628ef038376..69c602951a942cf0fa91f734c46ed249189e8fd0 100644 (file)
@@ -1,4 +1,3 @@
-//@ skip
 
 class A {
     constructor() { }
index 3d5464b7e80af549b410756e82872ae7065c6046..cded4b8a7bc8327ecbf99d325a8f9fe1151d3eef 100644 (file)
@@ -1,4 +1,3 @@
-//@ skip
 
 class A {
     constructor() { }
index b9838cc9559a4d0cc9f9e073288ad28c326023e8..5a575f46de39dab5269bc12ad8f9dd6b8a10e23c 100644 (file)
@@ -1,4 +1,3 @@
-//@ skip
 
 class A {
     constructor() { }
index c4fe5532433208047b86e195b47118be5f680292..9f1997c105616f49c595b0bfbe37826794ae564a 100644 (file)
@@ -1,4 +1,3 @@
-//@ skip
 
 class A {
     constructor() { }
index 0bd44181446f8a64b3f4f691cec259f5c7e7cbb7..3c78a11f05d1d36d82dec91a85d59c84cb30d575 100644 (file)
@@ -1,3 +1,12 @@
+2015-03-16  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Enable ES6 classes by default
+        https://bugs.webkit.org/show_bug.cgi?id=142774
+
+        Reviewed by Gavin Barraclough.
+
+        * wtf/FeatureDefines.h:
+
 2015-03-16  Csaba Osztrogon√°c  <ossy@webkit.org>
 
         [ARM] Enable generating idiv instructions if it is supported
index 3183e7a04694cabbc2bba429aaf46b03785e7a5a..03c84a882e72f1b5ef68656c3244e0311bb97f75 100644 (file)
@@ -328,7 +328,7 @@ the public iOS SDK. We will also need to update the FeatureDefines.xcconfig file
 #endif
 
 #if !defined(ENABLE_ES6_CLASS_SYNTAX)
-#define ENABLE_ES6_CLASS_SYNTAX 0
+#define ENABLE_ES6_CLASS_SYNTAX 1
 #endif
 
 #if !defined(ENABLE_CONTENT_EXTENSIONS)
index 678e822ace02c7fe0114e49b0fe9f8e570c6a15c..5b9b7ae8b9fec3f337416ef553d8c49cb218c4e5 100644 (file)
@@ -1,3 +1,12 @@
+2015-03-16  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Enable ES6 classes by default
+        https://bugs.webkit.org/show_bug.cgi?id=142774
+
+        Reviewed by Gavin Barraclough.
+
+        * Configurations/FeatureDefines.xcconfig:
+
 2015-03-16  Simon Fraser  <simon.fraser@apple.com>
 
         Update the debug overlays after layout
index 853297eaaf1bacbbda588a6dd577720a46323415..8b112fae45b957dd2641fdb6f4689880589af860 100644 (file)
@@ -44,7 +44,7 @@ ENABLE_CACHE_PARTITIONING = ENABLE_CACHE_PARTITIONING;
 ENABLE_CANVAS_PATH = ENABLE_CANVAS_PATH;
 ENABLE_CANVAS_PROXY = ;
 ENABLE_CHANNEL_MESSAGING = ENABLE_CHANNEL_MESSAGING;
-ENABLE_ES6_CLASS_SYNTAX = ;
+ENABLE_ES6_CLASS_SYNTAX = ENABLE_ES6_CLASS_SYNTAX;
 ENABLE_CONTENT_FILTERING = ENABLE_CONTENT_FILTERING;
 ENABLE_CSP_NEXT = ;
 ENABLE_CSS_ANIMATIONS_LEVEL_2 = ENABLE_CSS_ANIMATIONS_LEVEL_2;
index dd41a9a807ff32c2c04323946555d232b65768f3..22d6984c4f1dfcf8f3b23bd2b9d3fabb0c326499 100644 (file)
@@ -1,3 +1,12 @@
+2015-03-16  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Enable ES6 classes by default
+        https://bugs.webkit.org/show_bug.cgi?id=142774
+
+        Reviewed by Gavin Barraclough.
+
+        * Configurations/FeatureDefines.xcconfig:
+
 2015-03-16  Brent Fulgham  <bfulgham@apple.com>
 
         WebKit1 Clients Are Not Reliably Repainted
index 853297eaaf1bacbbda588a6dd577720a46323415..8b112fae45b957dd2641fdb6f4689880589af860 100644 (file)
@@ -44,7 +44,7 @@ ENABLE_CACHE_PARTITIONING = ENABLE_CACHE_PARTITIONING;
 ENABLE_CANVAS_PATH = ENABLE_CANVAS_PATH;
 ENABLE_CANVAS_PROXY = ;
 ENABLE_CHANNEL_MESSAGING = ENABLE_CHANNEL_MESSAGING;
-ENABLE_ES6_CLASS_SYNTAX = ;
+ENABLE_ES6_CLASS_SYNTAX = ENABLE_ES6_CLASS_SYNTAX;
 ENABLE_CONTENT_FILTERING = ENABLE_CONTENT_FILTERING;
 ENABLE_CSP_NEXT = ;
 ENABLE_CSS_ANIMATIONS_LEVEL_2 = ENABLE_CSS_ANIMATIONS_LEVEL_2;
index cbe604062632f809a5be1c837d83d809ad2361c6..6ed472db7ff72d3cfead642bc5e28742a549b120 100644 (file)
@@ -1,3 +1,12 @@
+2015-03-16  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Enable ES6 classes by default
+        https://bugs.webkit.org/show_bug.cgi?id=142774
+
+        Reviewed by Gavin Barraclough.
+
+        * Configurations/FeatureDefines.xcconfig:
+
 2015-03-16  Conrad Shultz  <conrad_shultz@apple.com>
 
         Don't pass nil as a fireDate for NSTimer
index 853297eaaf1bacbbda588a6dd577720a46323415..8b112fae45b957dd2641fdb6f4689880589af860 100644 (file)
@@ -44,7 +44,7 @@ ENABLE_CACHE_PARTITIONING = ENABLE_CACHE_PARTITIONING;
 ENABLE_CANVAS_PATH = ENABLE_CANVAS_PATH;
 ENABLE_CANVAS_PROXY = ;
 ENABLE_CHANNEL_MESSAGING = ENABLE_CHANNEL_MESSAGING;
-ENABLE_ES6_CLASS_SYNTAX = ;
+ENABLE_ES6_CLASS_SYNTAX = ENABLE_ES6_CLASS_SYNTAX;
 ENABLE_CONTENT_FILTERING = ENABLE_CONTENT_FILTERING;
 ENABLE_CSP_NEXT = ;
 ENABLE_CSS_ANIMATIONS_LEVEL_2 = ENABLE_CSS_ANIMATIONS_LEVEL_2;
index 887261726408344ab0252c9c0ef1fc977d063fba..8be344ee7ca5e96200b3a86b8123b4197c8c15ec 100644 (file)
@@ -27,7 +27,7 @@ macro(WEBKIT_OPTION_BEGIN)
     WEBKIT_OPTION_DEFINE(ENABLE_CANVAS_PATH "Toggle Canvas Path support" ON)
     WEBKIT_OPTION_DEFINE(ENABLE_CANVAS_PROXY "Toggle CanvasProxy support" OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_CHANNEL_MESSAGING "Toggle MessageChannel and MessagePort support" ON)
-    WEBKIT_OPTION_DEFINE(ENABLE_ES6_CLASS_SYNTAX "Toggle ES6 class syntax support" OFF)
+    WEBKIT_OPTION_DEFINE(ENABLE_ES6_CLASS_SYNTAX "Toggle ES6 class syntax support" ON)
     WEBKIT_OPTION_DEFINE(ENABLE_CONTENT_FILTERING "Toggle content filtering support" OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_CONTEXT_MENUS "Toggle Context Menu support" ON)
     WEBKIT_OPTION_DEFINE(ENABLE_CSP_NEXT "Toggle Content Security Policy 1.1 support" OFF)
index f23224d211231405ffadabdf445831ccc15da6ea..af4ffdbee24e474d8dcb3a49c5701692be7f6248 100644 (file)
@@ -1,3 +1,12 @@
+2015-03-16  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Enable ES6 classes by default
+        https://bugs.webkit.org/show_bug.cgi?id=142774
+
+        Reviewed by Gavin Barraclough.
+
+        * Scripts/webkitperl/FeatureList.pm:
+
 2015-03-16  Alexey Proskuryakov  <ap@apple.com>
 
         Fix webkitpy tests after r181585.
index 35425f5e4b555af30032d21ee3caec6854f79a4b..16fd649c68d6b3d43d0b31e3357904fc8724a7eb 100644 (file)
@@ -167,7 +167,7 @@ my @features = (
       define => "ENABLE_CHANNEL_MESSAGING", default => 1, value => \$channelMessagingSupport },
 
     { option => "class-syntax", desc => "Toggle ES6 class syntax support",
-      define => "ENABLE_ES6_CLASS_SYNTAX", default => 0, value => \$classSyntax },
+      define => "ENABLE_ES6_CLASS_SYNTAX", default => 1, value => \$classSyntax },
 
     { option => "csp-next", desc => "Toggle Content Security Policy 1.1 support",
       define => "ENABLE_CSP_NEXT", default => isGtk(), value => \$cspNextSupport },