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

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

Issue 1585473002: [parser] reject parenthesized patterns as DestructuringAssignmentTargets (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: remove the extra check Created 4 years, 11 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 | « src/parsing/parser-base.h ('k') | 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 6942 matching lines...) Expand 10 before | Expand all | Expand 10 after
6953 "[x,,...z]", 6953 "[x,,...z]",
6954 "{ x: y }", 6954 "{ x: y }",
6955 "[x, y]", 6955 "[x, y]",
6956 "[((x, y) => z).x]", 6956 "[((x, y) => z).x]",
6957 "{x: ((y, z) => z).x}", 6957 "{x: ((y, z) => z).x}",
6958 "[((x, y) => z)['x']]", 6958 "[((x, y) => z)['x']]",
6959 "{x: ((y, z) => z)['x']}", 6959 "{x: ((y, z) => z)['x']}",
6960 6960
6961 "{x: { y = 10 } }", 6961 "{x: { y = 10 } }",
6962 "[(({ x } = { x: 1 }) => x).a]", 6962 "[(({ x } = { x: 1 }) => x).a]",
6963
6964 // v8:4662
6965 "{ x: (y) }",
6966 "{ x: (y) = [] }",
6967 "{ x: (foo.bar) }",
6968 "{ x: (foo['bar']) }",
6969 "[ ...(a) ]",
6970 "[ ...(foo['bar']) ]",
6971 "[ ...(foo.bar) ]",
6972 "[ (y) ]",
6973 "[ (foo.bar) ]",
6974 "[ (foo['bar']) ]",
6975
6963 NULL}; 6976 NULL};
6964 // clang-format on 6977 // clang-format on
6965 static const ParserFlag always_flags[] = { 6978 static const ParserFlag always_flags[] = {
6966 kAllowHarmonyDestructuringAssignment, kAllowHarmonyDestructuring, 6979 kAllowHarmonyDestructuringAssignment, kAllowHarmonyDestructuring,
6967 kAllowHarmonyDefaultParameters}; 6980 kAllowHarmonyDefaultParameters};
6968 RunParserSyncTest(context_data, data, kSuccess, NULL, 0, always_flags, 6981 RunParserSyncTest(context_data, data, kSuccess, NULL, 0, always_flags,
6969 arraysize(always_flags)); 6982 arraysize(always_flags));
6970 6983
6971 RunParserSyncTest(mixed_assignments_context_data, data, kSuccess, NULL, 0, 6984 RunParserSyncTest(mixed_assignments_context_data, data, kSuccess, NULL, 0,
6972 always_flags, arraysize(always_flags)); 6985 always_flags, arraysize(always_flags));
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
7059 "(({ x: x4, x: (x+=1e4) } = {}))", 7072 "(({ x: x4, x: (x+=1e4) } = {}))",
7060 "(({ x: x4, x: (x+=1e4) }) = {})", 7073 "(({ x: x4, x: (x+=1e4) }) = {})",
7061 "({ x: y } = {})", 7074 "({ x: y } = {})",
7062 "(({ x: y } = {}))", 7075 "(({ x: y } = {}))",
7063 "(({ x: y }) = {})", 7076 "(({ x: y }) = {})",
7064 "([a])", 7077 "([a])",
7065 "(([a]))", 7078 "(([a]))",
7066 "([a] = [])", 7079 "([a] = [])",
7067 "(([a] = []))", 7080 "(([a] = []))",
7068 "(([a]) = [])", 7081 "(([a]) = [])",
7082
7083 // v8:4662
7084 "{ x: ([y]) }",
7085 "{ x: ([y] = []) }",
7086 "{ x: ({y}) }",
7087 "{ x: ({y} = {}) }",
7088 "{ x: (++y) }",
7089 "[ (...[a]) ]",
7090 "[ ...([a]) ]",
7091 "[ ...([a] = [])",
7092 "[ ...[ ( [ a ] ) ] ]",
7093 "[ ([a]) ]",
7094 "[ (...[a]) ]",
7095 "[ ([a] = []) ]",
7096 "[ (++y) ]",
7097 "[ ...(++y) ]",
7098
7069 NULL}; 7099 NULL};
7070 // clang-format on 7100 // clang-format on
7071 static const ParserFlag always_flags[] = { 7101 static const ParserFlag always_flags[] = {
7072 kAllowHarmonyDestructuringAssignment, kAllowHarmonyDestructuring, 7102 kAllowHarmonyDestructuringAssignment, kAllowHarmonyDestructuring,
7073 kAllowHarmonyDefaultParameters}; 7103 kAllowHarmonyDefaultParameters};
7074 RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags, 7104 RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags,
7075 arraysize(always_flags)); 7105 arraysize(always_flags));
7076 7106
7077 const char* empty_context_data[][2] = { 7107 const char* empty_context_data[][2] = {
7078 {"'use strict';", ""}, {"", ""}, {NULL, NULL}}; 7108 {"'use strict';", ""}, {"", ""}, {NULL, NULL}};
(...skipping 11 matching lines...) Expand all
7090 "var q, x; (q, { x = 10 });", 7120 "var q, x; (q, { x = 10 });",
7091 "var { x = 10 } = { x = 20 };", 7121 "var { x = 10 } = { x = 20 };",
7092 "var { x = 10 } = (o = { x = 20 });", 7122 "var { x = 10 } = (o = { x = 20 });",
7093 "var x; (({ x = 10 } = { x = 20 }) => x)({})", 7123 "var x; (({ x = 10 } = { x = 20 }) => x)({})",
7094 NULL, 7124 NULL,
7095 }; 7125 };
7096 RunParserSyncTest(empty_context_data, ambiguity_data, kError, NULL, 0, 7126 RunParserSyncTest(empty_context_data, ambiguity_data, kError, NULL, 0,
7097 always_flags, arraysize(always_flags)); 7127 always_flags, arraysize(always_flags));
7098 7128
7099 // Strict mode errors 7129 // Strict mode errors
7100 const char* strict_context_data[][2] = {{"'use strict'; ", " = {}"}, 7130 const char* strict_context_data[][2] = {{"'use strict'; (", " = {})"},
7101 {"'use strict'; for (", " of {}) {}"}, 7131 {"'use strict'; for (", " of {}) {}"},
7102 {"'use strict'; for (", " in {}) {}"}, 7132 {"'use strict'; for (", " in {}) {}"},
7103 {NULL, NULL}}; 7133 {NULL, NULL}};
7104 const char* strict_data[] = {"{ eval }", 7134 const char* strict_data[] = {"{ eval }",
7105 "{ arguments }", 7135 "{ arguments }",
7106 "{ foo: eval }", 7136 "{ foo: eval }",
7107 "{ foo: arguments }", 7137 "{ foo: arguments }",
7108 "{ eval = 0 }", 7138 "{ eval = 0 }",
7109 "{ arguments = 0 }", 7139 "{ arguments = 0 }",
7110 "{ foo: eval = 0 }", 7140 "{ foo: eval = 0 }",
7111 "{ foo: arguments = 0 }", 7141 "{ foo: arguments = 0 }",
7112 "[ eval ]", 7142 "[ eval ]",
7113 "[ arguments ]", 7143 "[ arguments ]",
7114 "[ eval = 0 ]", 7144 "[ eval = 0 ]",
7115 "[ arguments = 0 ]", 7145 "[ arguments = 0 ]",
7146
7147 // v8:4662
7148 "{ x: (eval) }",
7149 "{ x: (arguments) }",
7150 "{ x: (eval = 0) }",
7151 "{ x: (arguments = 0) }",
7152 "{ x: (eval) = 0 }",
7153 "{ x: (arguments) = 0 }",
7154 "[ (eval) ]",
7155 "[ (arguments) ]",
7156 "[ (eval = 0) ]",
7157 "[ (arguments = 0) ]",
7158 "[ (eval) = 0 ]",
7159 "[ (arguments) = 0 ]",
7160 "[ ...(eval) ]",
7161 "[ ...(arguments) ]",
7162 "[ ...(eval = 0) ]",
7163 "[ ...(arguments = 0) ]",
7164 "[ ...(eval) = 0 ]",
7165 "[ ...(arguments) = 0 ]",
7166
7116 NULL}; 7167 NULL};
7117 RunParserSyncTest(strict_context_data, strict_data, kError, NULL, 0, 7168 RunParserSyncTest(strict_context_data, strict_data, kError, NULL, 0,
7118 always_flags, arraysize(always_flags)); 7169 always_flags, arraysize(always_flags));
7119 } 7170 }
7120 7171
7121 7172
7122 TEST(DestructuringDisallowPatternsInForVarIn) { 7173 TEST(DestructuringDisallowPatternsInForVarIn) {
7123 i::FLAG_harmony_destructuring_bind = true; 7174 i::FLAG_harmony_destructuring_bind = true;
7124 static const ParserFlag always_flags[] = {kAllowHarmonyDestructuring}; 7175 static const ParserFlag always_flags[] = {kAllowHarmonyDestructuring};
7125 const char* context_data[][2] = { 7176 const char* context_data[][2] = {
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after
7772 } 7823 }
7773 7824
7774 7825
7775 TEST(MiscSyntaxErrors) { 7826 TEST(MiscSyntaxErrors) {
7776 const char* context_data[][2] = { 7827 const char* context_data[][2] = {
7777 {"'use strict'", ""}, {"", ""}, {NULL, NULL}}; 7828 {"'use strict'", ""}, {"", ""}, {NULL, NULL}};
7778 const char* error_data[] = {"for (();;) {}", NULL}; 7829 const char* error_data[] = {"for (();;) {}", NULL};
7779 7830
7780 RunParserSyncTest(context_data, error_data, kError, NULL, 0, NULL, 0); 7831 RunParserSyncTest(context_data, error_data, kError, NULL, 0, NULL, 0);
7781 } 7832 }
OLDNEW
« no previous file with comments | « src/parsing/parser-base.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698