| 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 4891 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4902 const char* data[] = { | 4902 const char* data[] = { |
| 4903 "for(const x = 1; ; ) {}", | 4903 "for(const x = 1; ; ) {}", |
| 4904 "for(const x = 1, y = 2;;){}", | 4904 "for(const x = 1, y = 2;;){}", |
| 4905 "for(const x in [1,2,3]) {}", | 4905 "for(const x in [1,2,3]) {}", |
| 4906 "for(const x of [1,2,3]) {}", | 4906 "for(const x of [1,2,3]) {}", |
| 4907 NULL}; | 4907 NULL}; |
| 4908 RunParserSyncTest(context_data, data, kSuccess, nullptr, 0, nullptr, 0); | 4908 RunParserSyncTest(context_data, data, kSuccess, nullptr, 0, nullptr, 0); |
| 4909 } | 4909 } |
| 4910 | 4910 |
| 4911 | 4911 |
| 4912 TEST(StatementParsingInForIn) { |
| 4913 const char* context_data[][2] = {{"", ""}, |
| 4914 {"'use strict';", ""}, |
| 4915 {"function foo(){ 'use strict';", "}"}, |
| 4916 {NULL, NULL}}; |
| 4917 |
| 4918 const char* data[] = {"for(x in {}, {}) {}", "for(var x in {}, {}) {}", |
| 4919 "for(let x in {}, {}) {}", "for(const x in {}, {}) {}", |
| 4920 NULL}; |
| 4921 |
| 4922 static const ParserFlag always_flags[] = { |
| 4923 kAllowHarmonySloppy, kAllowHarmonySloppyLet, kNoLegacyConst}; |
| 4924 RunParserSyncTest(context_data, data, kSuccess, nullptr, 0, always_flags, |
| 4925 arraysize(always_flags)); |
| 4926 } |
| 4927 |
| 4928 |
| 4912 TEST(ConstParsingInForInError) { | 4929 TEST(ConstParsingInForInError) { |
| 4913 const char* context_data[][2] = {{"'use strict';", ""}, | 4930 const char* context_data[][2] = {{"'use strict';", ""}, |
| 4914 {"function foo(){ 'use strict';", "}"}, | 4931 {"function foo(){ 'use strict';", "}"}, |
| 4915 {NULL, NULL}}; | 4932 {NULL, NULL}}; |
| 4916 | 4933 |
| 4917 const char* data[] = { | 4934 const char* data[] = { |
| 4918 "for(const x,y = 1; ; ) {}", | 4935 "for(const x,y = 1; ; ) {}", |
| 4919 "for(const x = 4 in [1,2,3]) {}", | 4936 "for(const x = 4 in [1,2,3]) {}", |
| 4920 "for(const x = 4, y in [1,2,3]) {}", | 4937 "for(const x = 4, y in [1,2,3]) {}", |
| 4921 "for(const x = 4 of [1,2,3]) {}", | 4938 "for(const x = 4 of [1,2,3]) {}", |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5075 const char* data[] = { | 5092 const char* data[] = { |
| 5076 "for (var of [1, 2, 3]) {}", | 5093 "for (var of [1, 2, 3]) {}", |
| 5077 "for (const of [1, 2, 3]) {}", | 5094 "for (const of [1, 2, 3]) {}", |
| 5078 NULL}; | 5095 NULL}; |
| 5079 static const ParserFlag always_flags[] = {kAllowHarmonySloppy}; | 5096 static const ParserFlag always_flags[] = {kAllowHarmonySloppy}; |
| 5080 RunParserSyncTest(context_data, data, kError, nullptr, 0, always_flags, | 5097 RunParserSyncTest(context_data, data, kError, nullptr, 0, always_flags, |
| 5081 arraysize(always_flags)); | 5098 arraysize(always_flags)); |
| 5082 } | 5099 } |
| 5083 | 5100 |
| 5084 | 5101 |
| 5102 TEST(ForOfInOperator) { |
| 5103 const char* context_data[][2] = {{"", ""}, |
| 5104 {"'use strict';", ""}, |
| 5105 {"function foo(){ 'use strict';", "}"}, |
| 5106 {NULL, NULL}}; |
| 5107 |
| 5108 const char* data[] = { |
| 5109 "for(x of 'foo' in {}) {}", "for(var x of 'foo' in {}) {}", |
| 5110 "for(let x of 'foo' in {}) {}", "for(const x of 'foo' in {}) {}", NULL}; |
| 5111 |
| 5112 static const ParserFlag always_flags[] = { |
| 5113 kAllowHarmonySloppy, kAllowHarmonySloppyLet, kNoLegacyConst}; |
| 5114 RunParserSyncTest(context_data, data, kSuccess, nullptr, 0, always_flags, |
| 5115 arraysize(always_flags)); |
| 5116 } |
| 5117 |
| 5118 |
| 5119 TEST(ForOfYieldIdentifier) { |
| 5120 const char* context_data[][2] = {{"", ""}, {NULL, NULL}}; |
| 5121 |
| 5122 const char* data[] = {"for(x of yield) {}", "for(var x of yield) {}", |
| 5123 "for(let x of yield) {}", "for(const x of yield) {}", |
| 5124 NULL}; |
| 5125 |
| 5126 static const ParserFlag always_flags[] = { |
| 5127 kAllowHarmonySloppy, kAllowHarmonySloppyLet, kNoLegacyConst}; |
| 5128 RunParserSyncTest(context_data, data, kSuccess, nullptr, 0, always_flags, |
| 5129 arraysize(always_flags)); |
| 5130 } |
| 5131 |
| 5132 |
| 5133 TEST(ForOfYieldExpression) { |
| 5134 const char* context_data[][2] = {{"", ""}, |
| 5135 {"'use strict';", ""}, |
| 5136 {"function foo(){ 'use strict';", "}"}, |
| 5137 {NULL, NULL}}; |
| 5138 |
| 5139 const char* data[] = {"function* g() { for(x of yield) {} }", |
| 5140 "function* g() { for(var x of yield) {} }", |
| 5141 "function* g() { for(let x of yield) {} }", |
| 5142 "function* g() { for(const x of yield) {} }", NULL}; |
| 5143 |
| 5144 static const ParserFlag always_flags[] = { |
| 5145 kAllowHarmonySloppy, kAllowHarmonySloppyLet, kNoLegacyConst}; |
| 5146 RunParserSyncTest(context_data, data, kSuccess, nullptr, 0, always_flags, |
| 5147 arraysize(always_flags)); |
| 5148 } |
| 5149 |
| 5150 |
| 5151 TEST(ForOfExpressionError) { |
| 5152 const char* context_data[][2] = {{"", ""}, |
| 5153 {"'use strict';", ""}, |
| 5154 {"function foo(){ 'use strict';", "}"}, |
| 5155 {NULL, NULL}}; |
| 5156 |
| 5157 const char* data[] = { |
| 5158 "for(x of [], []) {}", "for(var x of [], []) {}", |
| 5159 "for(let x of [], []) {}", "for(const x of [], []) {}", |
| 5160 |
| 5161 // AssignmentExpression should be validated statically: |
| 5162 "for(x of { y = 23 }) {}", "for(var x of { y = 23 }) {}", |
| 5163 "for(let x of { y = 23 }) {}", "for(const x of { y = 23 }) {}", NULL}; |
| 5164 |
| 5165 static const ParserFlag always_flags[] = { |
| 5166 kAllowHarmonySloppy, kAllowHarmonySloppyLet, kNoLegacyConst}; |
| 5167 RunParserSyncTest(context_data, data, kError, nullptr, 0, always_flags, |
| 5168 arraysize(always_flags)); |
| 5169 } |
| 5170 |
| 5171 |
| 5085 TEST(InvalidUnicodeEscapes) { | 5172 TEST(InvalidUnicodeEscapes) { |
| 5086 const char* context_data[][2] = {{"", ""}, | 5173 const char* context_data[][2] = {{"", ""}, |
| 5087 {"'use strict';", ""}, | 5174 {"'use strict';", ""}, |
| 5088 {NULL, NULL}}; | 5175 {NULL, NULL}}; |
| 5089 const char* data[] = { | 5176 const char* data[] = { |
| 5090 "var foob\\u123r = 0;", | 5177 "var foob\\u123r = 0;", |
| 5091 "var \\u123roo = 0;", | 5178 "var \\u123roo = 0;", |
| 5092 "\"foob\\u123rr\"", | 5179 "\"foob\\u123rr\"", |
| 5093 // No escapes allowed in regexp flags | 5180 // No escapes allowed in regexp flags |
| 5094 "/regex/\\u0069g", | 5181 "/regex/\\u0069g", |
| (...skipping 2743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7838 } | 7925 } |
| 7839 | 7926 |
| 7840 | 7927 |
| 7841 TEST(MiscSyntaxErrors) { | 7928 TEST(MiscSyntaxErrors) { |
| 7842 const char* context_data[][2] = { | 7929 const char* context_data[][2] = { |
| 7843 {"'use strict'", ""}, {"", ""}, {NULL, NULL}}; | 7930 {"'use strict'", ""}, {"", ""}, {NULL, NULL}}; |
| 7844 const char* error_data[] = {"for (();;) {}", NULL}; | 7931 const char* error_data[] = {"for (();;) {}", NULL}; |
| 7845 | 7932 |
| 7846 RunParserSyncTest(context_data, error_data, kError, NULL, 0, NULL, 0); | 7933 RunParserSyncTest(context_data, error_data, kError, NULL, 0, NULL, 0); |
| 7847 } | 7934 } |
| OLD | NEW |