Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: test/cctest/test-parsing.cc

Issue 1318253002: Test that "yield" expressions are disallowed in arrow formal parameter initializers (Closed) Base URL: https://chromium.googlesource.com/v8/v8@master
Patch Set: Remove tests for 'use strict' in function bodies Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 6738 matching lines...) Expand 10 before | Expand all | Expand 10 after
6749 // clang-format on 6749 // clang-format on
6750 RunParserSyncTest(context_data, error_data, kError, NULL, 0, always_flags, 6750 RunParserSyncTest(context_data, error_data, kError, NULL, 0, always_flags,
6751 arraysize(always_flags)); 6751 arraysize(always_flags));
6752 } 6752 }
6753 6753
6754 6754
6755 TEST(DefaultParametersYieldInInitializers) { 6755 TEST(DefaultParametersYieldInInitializers) {
6756 // clang-format off 6756 // clang-format off
6757 const char* sloppy_function_context_data[][2] = { 6757 const char* sloppy_function_context_data[][2] = {
6758 {"(function f(", ") { });"}, 6758 {"(function f(", ") { });"},
6759 // TODO(wingo): Add arrow functions.
6760 {NULL, NULL} 6759 {NULL, NULL}
6761 }; 6760 };
6762 6761
6763 const char* strict_function_context_data[][2] = { 6762 const char* strict_function_context_data[][2] = {
6764 {"'use strong'; (function f(", ") { });"}, 6763 {"'use strong'; (function f(", ") { });"},
6765 {"'use strict'; (function f(", ") { });"}, 6764 {"'use strict'; (function f(", ") { });"},
6766 // TODO(wingo,conradw): These should also signal early errors. 6765 {NULL, NULL}
6767 // {"(function f(", ") {'use strong'; });"}, 6766 };
6768 // {"(function f(", ") {'use strict'; });"}, 6767
6769 // TODO(wingo): Add arrow functions. 6768 const char* sloppy_arrow_context_data[][2] = {
6769 {"((", ")=>{});"},
6770 {NULL, NULL}
6771 };
6772
6773 const char* strict_arrow_context_data[][2] = {
6774 {"'use strong'; ((", ")=>{});"},
6775 {"'use strict'; ((", ")=>{});"},
6770 {NULL, NULL} 6776 {NULL, NULL}
6771 }; 6777 };
6772 6778
6773 const char* generator_context_data[][2] = { 6779 const char* generator_context_data[][2] = {
6774 {"'use strong'; (function *g(", ") { });"}, 6780 {"'use strong'; (function *g(", ") { });"},
6775 {"'use strict'; (function *g(", ") { });"}, 6781 {"'use strict'; (function *g(", ") { });"},
6776 // TODO(wingo,conradw): These should also signal early errors.
6777 // {"(function *g(", ") {'use strong'; });"},
6778 // {"(function *g(", ") {'use strict'; });"},
6779 {"(function *g(", ") { });"}, 6782 {"(function *g(", ") { });"},
6780 {NULL, NULL} 6783 {NULL, NULL}
6781 }; 6784 };
6782 6785
6783 const char* formal_parameter_data[] = { 6786 const char* parameter_data[] = {
6784 "x=yield", 6787 "x=yield",
6785 "x, y=yield", 6788 "x, y=yield",
6786 "{x=yield}", 6789 "{x=yield}",
6787 "[x=yield]", 6790 "[x=yield]",
6788 "{x}=yield",
6789 "[x]=yield",
6790 6791
6791 "x=(yield)", 6792 "x=(yield)",
6792 "x, y=(yield)", 6793 "x, y=(yield)",
6793 "{x=(yield)}", 6794 "{x=(yield)}",
6794 "[x=(yield)]", 6795 "[x=(yield)]",
6795 "{x}=(yield)",
6796 "[x]=(yield)",
6797 6796
6798 "x=f(yield)", 6797 "x=f(yield)",
6799 "x, y=f(yield)", 6798 "x, y=f(yield)",
6800 "{x=f(yield)}", 6799 "{x=f(yield)}",
6801 "[x=f(yield)]", 6800 "[x=f(yield)]",
6801 NULL
6802 };
6803
6804 // TODO(wingo): These aren't really destructuring assignment patterns; we're
6805 // just splitting them for now until the parser gets support for arrow
6806 // function arguments that look like destructuring assignments. When that
6807 // happens we should unify destructuring_assignment_data and parameter_data.
6808 const char* destructuring_assignment_data[] = {
6809 "{x}=yield",
6810 "[x]=yield",
6811
6812 "{x}=(yield)",
6813 "[x]=(yield)",
6814
6802 "{x}=f(yield)", 6815 "{x}=f(yield)",
6803 "[x]=f(yield)", 6816 "[x]=f(yield)",
6804 NULL 6817 NULL
6805 }; 6818 };
6806 6819
6807 // clang-format on 6820 // clang-format on
6808 static const ParserFlag always_flags[] = { 6821 static const ParserFlag always_flags[] = {
6809 kAllowHarmonyDestructuring, kAllowHarmonyDefaultParameters, 6822 kAllowHarmonyDestructuring, kAllowHarmonyDefaultParameters,
6810 kAllowHarmonyArrowFunctions, kAllowStrongMode}; 6823 kAllowHarmonyArrowFunctions, kAllowStrongMode};
6811 RunParserSyncTest(sloppy_function_context_data, formal_parameter_data, 6824
6825 RunParserSyncTest(sloppy_function_context_data, parameter_data, kSuccess,
6826 NULL, 0, always_flags, arraysize(always_flags));
6827 RunParserSyncTest(sloppy_function_context_data, destructuring_assignment_data,
6812 kSuccess, NULL, 0, always_flags, arraysize(always_flags)); 6828 kSuccess, NULL, 0, always_flags, arraysize(always_flags));
6813 RunParserSyncTest(strict_function_context_data, formal_parameter_data, kError, 6829 RunParserSyncTest(sloppy_arrow_context_data, parameter_data, kSuccess, NULL,
6814 NULL, 0, always_flags, arraysize(always_flags));
6815 RunParserSyncTest(generator_context_data, formal_parameter_data, kError, NULL,
6816 0, always_flags, arraysize(always_flags)); 6830 0, always_flags, arraysize(always_flags));
6831 // TODO(wingo): Will change to kSuccess when destructuring assignment lands.
6832 RunParserSyncTest(sloppy_arrow_context_data, destructuring_assignment_data,
6833 kError, NULL, 0, always_flags, arraysize(always_flags));
6834
6835 RunParserSyncTest(strict_function_context_data, parameter_data, kError, NULL,
6836 0, always_flags, arraysize(always_flags));
6837 RunParserSyncTest(strict_function_context_data, destructuring_assignment_data,
6838 kError, NULL, 0, always_flags, arraysize(always_flags));
6839 RunParserSyncTest(strict_arrow_context_data, parameter_data, kError, NULL, 0,
6840 always_flags, arraysize(always_flags));
6841 RunParserSyncTest(strict_arrow_context_data, destructuring_assignment_data,
6842 kError, NULL, 0, always_flags, arraysize(always_flags));
6843
6844 RunParserSyncTest(generator_context_data, parameter_data, kError, NULL, 0,
6845 always_flags, arraysize(always_flags));
6846 RunParserSyncTest(generator_context_data, destructuring_assignment_data,
6847 kError, NULL, 0, always_flags, arraysize(always_flags));
6817 } 6848 }
6818 6849
6819 6850
6820 TEST(SpreadArray) { 6851 TEST(SpreadArray) {
6821 i::FLAG_harmony_spread_arrays = true; 6852 i::FLAG_harmony_spread_arrays = true;
6822 6853
6823 const char* context_data[][2] = { 6854 const char* context_data[][2] = {
6824 {"'use strict';", ""}, {"", ""}, {NULL, NULL}}; 6855 {"'use strict';", ""}, {"", ""}, {NULL, NULL}};
6825 6856
6826 // clang-format off 6857 // clang-format off
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
7070 NULL}; 7101 NULL};
7071 7102
7072 static const ParserFlag always_flags[] = { 7103 static const ParserFlag always_flags[] = {
7073 kAllowHarmonyArrowFunctions, kAllowHarmonyDefaultParameters, 7104 kAllowHarmonyArrowFunctions, kAllowHarmonyDefaultParameters,
7074 kAllowHarmonyDestructuring, kAllowHarmonyRestParameters, 7105 kAllowHarmonyDestructuring, kAllowHarmonyRestParameters,
7075 kAllowHarmonySloppy, kAllowStrongMode 7106 kAllowHarmonySloppy, kAllowStrongMode
7076 }; 7107 };
7077 RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags, 7108 RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags,
7078 arraysize(always_flags)); 7109 arraysize(always_flags));
7079 } 7110 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698