Chromium Code Reviews| Index: test/cctest/test-parsing.cc |
| diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc |
| index 0ae46c33cad17f43e0bf2bb5176e83501eb09b7e..49892ca122582326b71136903b5a52b0ba85110e 100644 |
| --- a/test/cctest/test-parsing.cc |
| +++ b/test/cctest/test-parsing.cc |
| @@ -1344,7 +1344,8 @@ enum ParserFlag { |
| kAllowHarmonyNumericLiterals, |
| kAllowArrowFunctions, |
| kAllowClasses, |
| - kAllowHarmonyObjectLiterals |
| + kAllowHarmonyObjectLiterals, |
| + kAllowHarmonyTemplates |
| }; |
| @@ -1367,6 +1368,7 @@ void SetParserFlags(i::ParserBase<Traits>* parser, |
| flags.Contains(kAllowHarmonyObjectLiterals)); |
| parser->set_allow_arrow_functions(flags.Contains(kAllowArrowFunctions)); |
| parser->set_allow_classes(flags.Contains(kAllowClasses)); |
| + parser->set_allow_harmony_templates(flags.Contains(kAllowHarmonyTemplates)); |
| } |
| @@ -1666,6 +1668,7 @@ void RunParserSyncTest(const char* context_data[][2], |
| kAllowLazy, |
| kAllowModules, |
| kAllowNativesSyntax, |
| + kAllowHarmonyTemplates |
| }; |
| ParserFlag* generated_flags = NULL; |
| if (flags == NULL) { |
| @@ -4318,3 +4321,77 @@ TEST(InvalidUnicodeEscapes) { |
| NULL}; |
| RunParserSyncTest(context_data, data, kError); |
| } |
| + |
| + |
| +TEST(ScanTemplateLiterals) { |
| + const char* context_data[][2] = {{"'use strict';", ""}, |
| + {"function foo(){ 'use strict';" |
| + " var a, b, c; return ", "}"}, |
| + {NULL, NULL}}; |
| + |
| + const char* data[] = { |
| + "``", |
| + "`no-subst-template`", |
| + "`template-head${a}`", |
| + "`${a}`", |
| + "`${a}template-tail`", |
| + "`template-head${a}template-tail`", |
| + "`${a}${b}${c}`", |
| + "`a${a}b${b}c${c}`", |
| + "`${a}a${b}b${c}c`", |
| + "`foo\n\nbar\r\nbaz`", |
| + "`foo\n\n${ bar }\r\nbaz`", |
| + NULL}; |
| + static const ParserFlag always_flags[] = {kAllowHarmonyTemplates}; |
| + RunParserSyncTest(context_data, data, kSuccess, NULL, 0, always_flags, |
| + arraysize(always_flags)); |
| +} |
|
rossberg
2014/11/14 12:28:07
Add tests for some of the different InputElementTe
|
| + |
| + |
| +TEST(ScanTaggedTemplateLiterals) { |
| + const char* context_data[][2] = {{"'use strict';", ""}, |
| + {"function foo(){ 'use strict';" |
| + " function tag() {}" |
| + " var a, b, c; return ", "}"}, |
| + {NULL, NULL}}; |
| + |
| + const char* data[] = { |
| + "tag ``", |
| + "tag `no-subst-template`", |
| + "tag`template-head${a}`", |
| + "tag `${a}`", |
| + "tag `${a}template-tail`", |
| + "tag `template-head${a}template-tail`", |
| + "tag\n`${a}${b}${c}`", |
| + "tag\r\n`a${a}b${b}c${c}`", |
| + "tag `${a}a${b}b${c}c`", |
| + "tag\t`foo\n\nbar\r\nbaz`", |
| + "tag\r`foo\n\n${ bar }\r\nbaz`", |
| + NULL}; |
| + static const ParserFlag always_flags[] = {kAllowHarmonyTemplates}; |
| + RunParserSyncTest(context_data, data, kSuccess, NULL, 0, always_flags, |
| + arraysize(always_flags)); |
| +} |
| + |
| + |
| +TEST(ScanUnterminatedTemplateLiterals) { |
| + const char* context_data[][2] = {{"'use strict';", ""}, |
| + {"function foo(){ 'use strict';" |
| + " var a, b, c; return ", "}"}, |
| + {NULL, NULL}}; |
| + |
| + const char* data[] = { |
| + "`no-subst-template", |
| + "`template-head${a}", |
| + "`${a}template-tail", |
| + "`template-head${a}template-tail", |
| + "`${a}${b}${c}", |
| + "`a${a}b${b}c${c}", |
| + "`${a}a${b}b${c}c", |
| + "`foo\n\nbar\r\nbaz", |
| + "`foo\n\n${ bar }\r\nbaz", |
| + NULL}; |
| + static const ParserFlag always_flags[] = {kAllowHarmonyTemplates}; |
| + RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags, |
| + arraysize(always_flags)); |
| +} |
|
rossberg
2014/11/14 12:28:07
We should also have sync test cases where the scri
|