| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 7785 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7796 const char* body_data[] = { | 7796 const char* body_data[] = { |
| 7797 "var async = 1; return async;", | 7797 "var async = 1; return async;", |
| 7798 "let async = 1; return async;", | 7798 "let async = 1; return async;", |
| 7799 "const async = 1; return async;", | 7799 "const async = 1; return async;", |
| 7800 "function async() {} return async();", | 7800 "function async() {} return async();", |
| 7801 "var async = async => async; return async();", | 7801 "var async = async => async; return async();", |
| 7802 "function foo() { var await = 1; return await; }", | 7802 "function foo() { var await = 1; return await; }", |
| 7803 "function foo(await) { return await; }", | 7803 "function foo(await) { return await; }", |
| 7804 "function* foo() { var await = 1; return await; }", | 7804 "function* foo() { var await = 1; return await; }", |
| 7805 "function* foo(await) { return await; }", | 7805 "function* foo(await) { return await; }", |
| 7806 "var f = (await) => await;", | |
| 7807 "var f = () => { var await = 1; return await; }", | 7806 "var f = () => { var await = 1; return await; }", |
| 7808 "var O = { method() { var await = 1; return await; } };", | 7807 "var O = { method() { var await = 1; return await; } };", |
| 7809 "var O = { method(await) { return await; } };", | 7808 "var O = { method(await) { return await; } };", |
| 7810 "var O = { *method() { var await = 1; return await; } };", | 7809 "var O = { *method() { var await = 1; return await; } };", |
| 7811 "var O = { *method(await) { return await; } };", | 7810 "var O = { *method(await) { return await; } };", |
| 7812 | 7811 |
| 7813 "(function await() {})", | 7812 "(function await() {})", |
| 7814 NULL | 7813 NULL |
| 7815 }; | 7814 }; |
| 7816 // clang-format on | 7815 // clang-format on |
| (...skipping 11 matching lines...) Expand all Loading... |
| 7828 { "", "" }, | 7827 { "", "" }, |
| 7829 { NULL, NULL } | 7828 { NULL, NULL } |
| 7830 }; | 7829 }; |
| 7831 | 7830 |
| 7832 const char* strict_context_data[][2] = { | 7831 const char* strict_context_data[][2] = { |
| 7833 { "'use strict';", "" }, | 7832 { "'use strict';", "" }, |
| 7834 { NULL, NULL } | 7833 { NULL, NULL } |
| 7835 }; | 7834 }; |
| 7836 | 7835 |
| 7837 const char* error_data[] = { | 7836 const char* error_data[] = { |
| 7838 "var asyncFn = async function() { var await = 1; };", | |
| 7839 "var asyncFn = async function() { var { await } = 1; };", | |
| 7840 "var asyncFn = async function() { var [ await ] = 1; };", | |
| 7841 "var asyncFn = async function await() {};", | 7837 "var asyncFn = async function await() {};", |
| 7842 "var asyncFn = async () => var await = 'test';", | 7838 "var asyncFn = async () => var await = 'test';", |
| 7843 "var asyncFn = async await => await + 'test';", | 7839 "var asyncFn = async await => await + 'test';", |
| 7844 "var asyncFn = async function(await) {};", | 7840 "var asyncFn = async function(await) {};", |
| 7845 "var asyncFn = async function() { return async (await) => {}; }", | |
| 7846 "var asyncFn = async (await) => 'test';", | 7841 "var asyncFn = async (await) => 'test';", |
| 7847 "var asyncFn = async x => { var await = 1; }", | |
| 7848 "var asyncFn = async x => { var { await } = 1; }", | |
| 7849 "var asyncFn = async x => { var [ await ] = 1; }", | |
| 7850 "async function f(await) {}", | 7842 "async function f(await) {}", |
| 7851 "async function f() { var await = 1; }", | |
| 7852 "async function f() { var { await } = 1; }", | |
| 7853 "async function f() { var [ await ] = 1; }", | |
| 7854 | 7843 |
| 7855 "var O = { async method(a, a) {} }", | 7844 "var O = { async method(a, a) {} }", |
| 7856 "var O = { async ['meth' + 'od'](a, a) {} }", | 7845 "var O = { async ['meth' + 'od'](a, a) {} }", |
| 7857 "var O = { async 'method'(a, a) {} }", | 7846 "var O = { async 'method'(a, a) {} }", |
| 7858 "var O = { async 0(a, a) {} }", | 7847 "var O = { async 0(a, a) {} }", |
| 7859 | 7848 |
| 7860 "async function f() { var O = { async [await](a, a) {} } }", | |
| 7861 | |
| 7862 "var asyncFn = async function() { await; }", | |
| 7863 "async function f() { await; }", | |
| 7864 "var O = { async method() { await; } };", | |
| 7865 "var f = async() => await;", | 7849 "var f = async() => await;", |
| 7866 "var f = async() => { await; };", | |
| 7867 | |
| 7868 "async function f() { return {await} }", | |
| 7869 | 7850 |
| 7870 "var asyncFn = async function*() {}", | 7851 "var asyncFn = async function*() {}", |
| 7871 "async function* f() {}", | 7852 "async function* f() {}", |
| 7872 "var O = { *async method() {} };", | 7853 "var O = { *async method() {} };", |
| 7873 "var O = { async *method() {} };", | 7854 "var O = { async *method() {} };", |
| 7874 "var O = { async method*() {} };", | 7855 "var O = { async method*() {} };", |
| 7875 | 7856 |
| 7876 "var asyncFn = async function(x = await 1) { return x; }", | 7857 "var asyncFn = async function(x = await 1) { return x; }", |
| 7877 "async function f(x = await 1) { return x; }", | 7858 "async function f(x = await 1) { return x; }", |
| 7878 "var f = async(x = await 1) => x;", | 7859 "var f = async(x = await 1) => x;", |
| 7879 "var O = { async method(x = await 1) { return x; } };", | 7860 "var O = { async method(x = await 1) { return x; } };", |
| 7880 | 7861 |
| 7881 "var f = async(x = await) => 1;", | 7862 "var f = async(x = await) => 1;", |
| 7882 | 7863 |
| 7883 "class C { async constructor() {} }", | 7864 "class C { async constructor() {} }", |
| 7884 "class C {}; class C2 extends C { async constructor() {} }", | 7865 "class C {}; class C2 extends C { async constructor() {} }", |
| 7885 "class C { static async prototype() {} }", | 7866 "class C { static async prototype() {} }", |
| 7886 "class C {}; class C2 extends C { static async prototype() {} }", | 7867 "class C {}; class C2 extends C { static async prototype() {} }", |
| 7887 | 7868 |
| 7888 "var f = async() => ((async(x = await 1) => x)();", | 7869 "var f = async() => ((async(x = await 1) => x)();", |
| 7889 | 7870 |
| 7890 "var asyncFn = async function() { function await() {} }", | |
| 7891 "var asyncFn = async() => { function await() {} }", | |
| 7892 "var O = { async method() { function await() {} } }", | |
| 7893 "async function foo() { function await() {} }", | |
| 7894 | |
| 7895 // Henrique Ferreiro's bug (tm) | 7871 // Henrique Ferreiro's bug (tm) |
| 7896 "(async function foo1() { } foo2 => 1)", | 7872 "(async function foo1() { } foo2 => 1)", |
| 7897 "(async function foo3() { } () => 1)", | 7873 "(async function foo3() { } () => 1)", |
| 7898 "(async function foo4() { } => 1)", | 7874 "(async function foo4() { } => 1)", |
| 7899 "(async function() { } foo5 => 1)", | 7875 "(async function() { } foo5 => 1)", |
| 7900 "(async function() { } () => 1)", | 7876 "(async function() { } () => 1)", |
| 7901 "(async function() { } => 1)", | 7877 "(async function() { } => 1)", |
| 7902 "(async.foo6 => 1)", | 7878 "(async.foo6 => 1)", |
| 7903 "(async.foo7 foo8 => 1)", | 7879 "(async.foo7 foo8 => 1)", |
| 7904 "(async.foo9 () => 1)", | 7880 "(async.foo9 () => 1)", |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7969 // clang-format on | 7945 // clang-format on |
| 7970 | 7946 |
| 7971 static const ParserFlag always_flags[] = {kAllowHarmonyAsyncAwait}; | 7947 static const ParserFlag always_flags[] = {kAllowHarmonyAsyncAwait}; |
| 7972 RunParserSyncTest(context_data, error_data, kError, NULL, 0, always_flags, | 7948 RunParserSyncTest(context_data, error_data, kError, NULL, 0, always_flags, |
| 7973 arraysize(always_flags)); | 7949 arraysize(always_flags)); |
| 7974 RunParserSyncTest(strict_context_data, strict_error_data, kError, NULL, 0, | 7950 RunParserSyncTest(strict_context_data, strict_error_data, kError, NULL, 0, |
| 7975 always_flags, arraysize(always_flags)); | 7951 always_flags, arraysize(always_flags)); |
| 7976 | 7952 |
| 7977 RunParserSyncTest(context_data, formal_parameters_data, kError, NULL, 0, | 7953 RunParserSyncTest(context_data, formal_parameters_data, kError, NULL, 0, |
| 7978 always_flags, arraysize(always_flags)); | 7954 always_flags, arraysize(always_flags)); |
| 7955 |
| 7956 // clang-format off |
| 7957 const char* async_body_context_data[][2] = { |
| 7958 { "async function f() {", "}" }, |
| 7959 { "var f = async function() {", "}" }, |
| 7960 { "var f = async() => {", "}" }, |
| 7961 { "var O = { async method() {", "} }" }, |
| 7962 { "'use strict'; async function f() {", "}" }, |
| 7963 { "'use strict'; var f = async function() {", "}" }, |
| 7964 { "'use strict'; var f = async() => {", "}" }, |
| 7965 { "'use strict'; var O = { async method() {", "} }" }, |
| 7966 { NULL, NULL } |
| 7967 }; |
| 7968 |
| 7969 const char* async_body_error_data[] = { |
| 7970 "var await = 1;", |
| 7971 "var { await } = 1;", |
| 7972 "var [ await ] = 1;", |
| 7973 "return async (await) => {};", |
| 7974 "var O = { async [await](a, a) {} }", |
| 7975 "await;", |
| 7976 |
| 7977 "function await() {}", |
| 7978 |
| 7979 "var f = await => 42;", |
| 7980 "var f = (await) => 42;", |
| 7981 "var f = (await, a) => 42;", |
| 7982 "var f = (...await) => 42;", |
| 7983 |
| 7984 "var e = (await);", |
| 7985 "var e = (await, f);", |
| 7986 "var e = (await = 42)", |
| 7987 |
| 7988 "var e = [await];", |
| 7989 "var e = {await};", |
| 7990 |
| 7991 NULL |
| 7992 }; |
| 7993 // clang-format on |
| 7994 |
| 7995 RunParserSyncTest(async_body_context_data, async_body_error_data, kError, |
| 7996 NULL, 0, always_flags, arraysize(always_flags)); |
| 7979 } | 7997 } |
| 7980 | 7998 |
| 7981 TEST(AsyncAwaitModule) { | 7999 TEST(AsyncAwaitModule) { |
| 7982 // clang-format off | 8000 // clang-format off |
| 7983 const char* context_data[][2] = { | 8001 const char* context_data[][2] = { |
| 7984 { "", "" }, | 8002 { "", "" }, |
| 7985 { NULL, NULL } | 8003 { NULL, NULL } |
| 7986 }; | 8004 }; |
| 7987 | 8005 |
| 7988 const char* data[] = { | 8006 const char* data[] = { |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8194 "(a,);", | 8212 "(a,);", |
| 8195 "(a,b,c,);", | 8213 "(a,b,c,);", |
| 8196 NULL | 8214 NULL |
| 8197 }; | 8215 }; |
| 8198 // clang-format on | 8216 // clang-format on |
| 8199 | 8217 |
| 8200 static const ParserFlag always_flags[] = {kAllowHarmonyTrailingCommas}; | 8218 static const ParserFlag always_flags[] = {kAllowHarmonyTrailingCommas}; |
| 8201 RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags, | 8219 RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags, |
| 8202 arraysize(always_flags)); | 8220 arraysize(always_flags)); |
| 8203 } | 8221 } |
| OLD | NEW |