| 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 5883 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5894 "\"foob\\{uc481}r\"", | 5894 "\"foob\\{uc481}r\"", |
| 5895 // This character is a valid unicode character, representable as a surrogate | 5895 // This character is a valid unicode character, representable as a surrogate |
| 5896 // pair, not representable as 4 hex digits. | 5896 // pair, not representable as 4 hex digits. |
| 5897 "\"foo\\u{10e6d}\"", | 5897 "\"foo\\u{10e6d}\"", |
| 5898 // Max value for the unicode escape | 5898 // Max value for the unicode escape |
| 5899 "\"\\u{10ffff}\"", | 5899 "\"\\u{10ffff}\"", |
| 5900 NULL}; | 5900 NULL}; |
| 5901 RunParserSyncTest(context_data, data, kSuccess); | 5901 RunParserSyncTest(context_data, data, kSuccess); |
| 5902 } | 5902 } |
| 5903 | 5903 |
| 5904 TEST(OctalEscapes) { | |
| 5905 const char* sloppy_context_data[][2] = {{"", ""}, // as a directive | |
| 5906 {"0;", ""}, // as a string literal | |
| 5907 {NULL, NULL}}; | |
| 5908 | |
| 5909 const char* strict_context_data[][2] = { | |
| 5910 {"'use strict';", ""}, // as a directive before 'use strict' | |
| 5911 {"", ";'use strict';"}, // as a directive after 'use strict' | |
| 5912 {"'use strict'; 0;", ""}, // as a string literal | |
| 5913 {NULL, NULL}}; | |
| 5914 | |
| 5915 // clang-format off | |
| 5916 const char* data[] = { | |
| 5917 "'\\1'", | |
| 5918 "'\\01'", | |
| 5919 "'\\001'", | |
| 5920 "'\\08'", | |
| 5921 "'\\09'", | |
| 5922 NULL}; | |
| 5923 // clang-format on | |
| 5924 | |
| 5925 // Permitted in sloppy mode | |
| 5926 RunParserSyncTest(sloppy_context_data, data, kSuccess); | |
| 5927 | |
| 5928 // Error in strict mode | |
| 5929 RunParserSyncTest(strict_context_data, data, kError); | |
| 5930 } | |
| 5931 | 5904 |
| 5932 TEST(ScanTemplateLiterals) { | 5905 TEST(ScanTemplateLiterals) { |
| 5933 const char* context_data[][2] = {{"'use strict';", ""}, | 5906 const char* context_data[][2] = {{"'use strict';", ""}, |
| 5934 {"function foo(){ 'use strict';" | 5907 {"function foo(){ 'use strict';" |
| 5935 " var a, b, c; return ", "}"}, | 5908 " var a, b, c; return ", "}"}, |
| 5936 {NULL, NULL}}; | 5909 {NULL, NULL}}; |
| 5937 | 5910 |
| 5938 const char* data[] = { | 5911 const char* data[] = { |
| 5939 "``", | 5912 "``", |
| 5940 "`no-subst-template`", | 5913 "`no-subst-template`", |
| (...skipping 1191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7132 | 7105 |
| 7133 TEST(TemplateEscapesPositiveTests) { | 7106 TEST(TemplateEscapesPositiveTests) { |
| 7134 // clang-format off | 7107 // clang-format off |
| 7135 const char* context_data[][2] = { | 7108 const char* context_data[][2] = { |
| 7136 {"", ""}, | 7109 {"", ""}, |
| 7137 {"'use strict';", ""}, | 7110 {"'use strict';", ""}, |
| 7138 {NULL, NULL}}; | 7111 {NULL, NULL}}; |
| 7139 | 7112 |
| 7140 // clang-format off | 7113 // clang-format off |
| 7141 const char* data[] = { | 7114 const char* data[] = { |
| 7142 "tag`\\08`", | |
| 7143 "tag`\\01`", | 7115 "tag`\\01`", |
| 7144 "tag`\\01${0}right`", | 7116 "tag`\\01${0}right`", |
| 7145 "tag`left${0}\\01`", | 7117 "tag`left${0}\\01`", |
| 7146 "tag`left${0}\\01${1}right`", | 7118 "tag`left${0}\\01${1}right`", |
| 7147 "tag`\\1`", | 7119 "tag`\\1`", |
| 7148 "tag`\\1${0}right`", | 7120 "tag`\\1${0}right`", |
| 7149 "tag`left${0}\\1`", | 7121 "tag`left${0}\\1`", |
| 7150 "tag`left${0}\\1${1}right`", | 7122 "tag`left${0}\\1${1}right`", |
| 7151 "tag`\\xg`", | 7123 "tag`\\xg`", |
| 7152 "tag`\\xg${0}right`", | 7124 "tag`\\xg${0}right`", |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7216 | 7188 |
| 7217 TEST(TemplateEscapesNegativeTests) { | 7189 TEST(TemplateEscapesNegativeTests) { |
| 7218 // clang-format off | 7190 // clang-format off |
| 7219 const char* context_data[][2] = { | 7191 const char* context_data[][2] = { |
| 7220 {"", ""}, | 7192 {"", ""}, |
| 7221 {"'use strict';", ""}, | 7193 {"'use strict';", ""}, |
| 7222 {NULL, NULL}}; | 7194 {NULL, NULL}}; |
| 7223 | 7195 |
| 7224 // clang-format off | 7196 // clang-format off |
| 7225 const char* data[] = { | 7197 const char* data[] = { |
| 7226 "`\\08`", | |
| 7227 "`\\01`", | 7198 "`\\01`", |
| 7228 "`\\01${0}right`", | 7199 "`\\01${0}right`", |
| 7229 "`left${0}\\01`", | 7200 "`left${0}\\01`", |
| 7230 "`left${0}\\01${1}right`", | 7201 "`left${0}\\01${1}right`", |
| 7231 "`\\1`", | 7202 "`\\1`", |
| 7232 "`\\1${0}right`", | 7203 "`\\1${0}right`", |
| 7233 "`left${0}\\1`", | 7204 "`left${0}\\1`", |
| 7234 "`left${0}\\1${1}right`", | 7205 "`left${0}\\1${1}right`", |
| 7235 "`\\xg`", | 7206 "`\\xg`", |
| 7236 "`\\xg${0}right`", | 7207 "`\\xg${0}right`", |
| (...skipping 3131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10368 CHECK(loop_var->IsStackLocal()); | 10339 CHECK(loop_var->IsStackLocal()); |
| 10369 CHECK_EQ(loop_block->ContextLocalCount(), 0); | 10340 CHECK_EQ(loop_block->ContextLocalCount(), 0); |
| 10370 | 10341 |
| 10371 i::Variable* loop_var2 = loop_block->inner_scope()->LookupLocal(var_name); | 10342 i::Variable* loop_var2 = loop_block->inner_scope()->LookupLocal(var_name); |
| 10372 CHECK_NE(loop_var, loop_var2); | 10343 CHECK_NE(loop_var, loop_var2); |
| 10373 CHECK(loop_var2->IsContextSlot()); | 10344 CHECK(loop_var2->IsContextSlot()); |
| 10374 CHECK_EQ(loop_block->inner_scope()->ContextLocalCount(), 1); | 10345 CHECK_EQ(loop_block->inner_scope()->ContextLocalCount(), 1); |
| 10375 }); | 10346 }); |
| 10376 } | 10347 } |
| 10377 } | 10348 } |
| OLD | NEW |