isAsyncGeneratorMethodParseMode() should check for SourceParseMode::AsyncGeneratorWra...
authormark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 5 Sep 2018 08:14:42 +0000 (08:14 +0000)
committermark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 5 Sep 2018 08:14:42 +0000 (08:14 +0000)
https://bugs.webkit.org/show_bug.cgi?id=189292
<rdar://problem/38907433>

Reviewed by Saam Barati.

JSTests:

* stress/regress-189292.js: Added.

Source/JavaScriptCore:

Previously, isAsyncGeneratorMethodParseMode() was checking for AsyncGeneratorWrapperFunctionMode
instead of AsyncGeneratorWrapperMethodMode.  This patch fixes it
to check for AsyncGeneratorWrapperMethodMode (to match what is expected as indicated
in the name isAsyncGeneratorMethodParseMode).

* parser/ParserModes.h:
(JSC::isAsyncGeneratorMethodParseMode):

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

JSTests/ChangeLog
JSTests/stress/regress-189292.js [new file with mode: 0644]
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/parser/ParserModes.h

index 577f26c..cdd449f 100644 (file)
@@ -1,3 +1,13 @@
+2018-09-05  Mark Lam  <mark.lam@apple.com>
+
+        isAsyncGeneratorMethodParseMode() should check for SourceParseMode::AsyncGeneratorWrapperMethodMode.
+        https://bugs.webkit.org/show_bug.cgi?id=189292
+        <rdar://problem/38907433>
+
+        Reviewed by Saam Barati.
+
+        * stress/regress-189292.js: Added.
+
 2018-09-04  David Fenton  <david_fenton@apple.com>
 
         Skip Test on 32-bit platforms.
diff --git a/JSTests/stress/regress-189292.js b/JSTests/stress/regress-189292.js
new file mode 100644 (file)
index 0000000..4314f9a
--- /dev/null
@@ -0,0 +1,18 @@
+//@ runDefault
+
+function assert(a, b) {
+    if (a != b)
+        throw "FAIL";
+}
+
+function test(script) {
+    try {
+        eval(script);
+    } catch (e) {
+        return e;
+    }
+}
+
+assert(test("class C1 { async constructor() { } }"), "SyntaxError: Cannot declare an async method named 'constructor'.");
+assert(test("class C1 { *constructor() { } }"), "SyntaxError: Cannot declare a generator function named 'constructor'.");
+assert(test("class C1 { async *constructor() { } }"), "SyntaxError: Cannot declare an async generator method named 'constructor'.");
index c1a97d3..23cf138 100644 (file)
@@ -1,3 +1,19 @@
+2018-09-05  Mark Lam  <mark.lam@apple.com>
+
+        isAsyncGeneratorMethodParseMode() should check for SourceParseMode::AsyncGeneratorWrapperMethodMode.
+        https://bugs.webkit.org/show_bug.cgi?id=189292
+        <rdar://problem/38907433>
+
+        Reviewed by Saam Barati.
+
+        Previously, isAsyncGeneratorMethodParseMode() was checking for AsyncGeneratorWrapperFunctionMode
+        instead of AsyncGeneratorWrapperMethodMode.  This patch fixes it
+        to check for AsyncGeneratorWrapperMethodMode (to match what is expected as indicated
+        in the name isAsyncGeneratorMethodParseMode).
+
+        * parser/ParserModes.h:
+        (JSC::isAsyncGeneratorMethodParseMode):
+
 2018-09-04  Michael Saboff  <msaboff@apple.com>
 
         Unreviewed indentations change.
index 0c1d2e1..6960e51 100644 (file)
@@ -188,7 +188,7 @@ ALWAYS_INLINE bool isAsyncMethodParseMode(SourceParseMode parseMode)
     
 ALWAYS_INLINE bool isAsyncGeneratorMethodParseMode(SourceParseMode parseMode)
 {
-    return SourceParseModeSet(SourceParseMode::AsyncGeneratorWrapperFunctionMode).contains(parseMode);
+    return SourceParseModeSet(SourceParseMode::AsyncGeneratorWrapperMethodMode).contains(parseMode);
 }
 
 ALWAYS_INLINE bool isMethodParseMode(SourceParseMode parseMode)