Chromium Code Reviews| Index: test/cctest/test-parsing.cc |
| diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc |
| index a62504f23c11585aa6798695ccd2d692e69c5cbb..31d3ce34bd0244a7a31580c0aa2f4ee5f0f804b0 100644 |
| --- a/test/cctest/test-parsing.cc |
| +++ b/test/cctest/test-parsing.cc |
| @@ -5072,12 +5072,8 @@ TEST(BasicImportExportParsing) { |
| 128 * 1024); |
| for (unsigned i = 0; i < arraysize(kSources); ++i) { |
| - int kProgramByteSize = i::StrLength(kSources[i]); |
| - i::ScopedVector<char> program(kProgramByteSize + 1); |
| - i::SNPrintF(program, "%s", kSources[i]); |
| i::Handle<i::String> source = |
| - factory->NewStringFromUtf8(i::CStrVector(program.start())) |
| - .ToHandleChecked(); |
| + factory->NewStringFromAsciiChecked(kSources[i]); |
| // Show that parsing as a module works |
| { |
| @@ -5197,12 +5193,8 @@ TEST(ImportExportParsingErrors) { |
| 128 * 1024); |
| for (unsigned i = 0; i < arraysize(kErrorSources); ++i) { |
| - int kProgramByteSize = i::StrLength(kErrorSources[i]); |
| - i::ScopedVector<char> program(kProgramByteSize + 1); |
| - i::SNPrintF(program, "%s", kErrorSources[i]); |
| i::Handle<i::String> source = |
| - factory->NewStringFromUtf8(i::CStrVector(program.start())) |
| - .ToHandleChecked(); |
| + factory->NewStringFromAsciiChecked(kErrorSources[i]); |
| i::Handle<i::Script> script = factory->NewScript(source); |
| i::CompilationInfoWithZone info(script); |
| @@ -5217,6 +5209,43 @@ TEST(ImportExportParsingErrors) { |
| } |
| +TEST(ModuleParsingInternals) { |
| + i::Isolate* isolate = CcTest::i_isolate(); |
| + i::Factory* factory = isolate->factory(); |
| + v8::HandleScope handles(CcTest::isolate()); |
| + v8::Handle<v8::Context> context = v8::Context::New(CcTest::isolate()); |
| + v8::Context::Scope context_scope(context); |
| + isolate->stack_guard()->SetStackLimit(i::GetCurrentStackPosition() - |
| + 128 * 1024); |
| + |
| + static const char kSource[] = "let x = 5; export { x as y };"; |
| + i::Handle<i::String> source = factory->NewStringFromAsciiChecked(kSource); |
| + i::Handle<i::Script> script = factory->NewScript(source); |
| + i::CompilationInfoWithZone info(script); |
| + i::AstValueFactory avf(info.zone(), isolate->heap()->HashSeed()); |
| + i::Parser parser(&info, isolate->stack_guard()->real_climit(), |
| + isolate->heap()->HashSeed(), isolate->unicode_cache()); |
| + parser.set_allow_harmony_classes(true); |
|
arv (Not doing code reviews)
2015/02/24 22:13:34
no need for classes here
adamk
2015/02/24 22:17:54
Removed.
|
| + parser.set_allow_harmony_modules(true); |
| + parser.set_allow_harmony_scoping(true); |
| + info.MarkAsModule(); |
| + CHECK(parser.Parse(&info)); |
| + i::FunctionLiteral* func = info.function(); |
| + CHECK_EQ(i::MODULE_SCOPE, func->scope()->scope_type()); |
| + i::ModuleDescriptor* descriptor = func->scope()->module(); |
| + CHECK_NOT_NULL(descriptor); |
| + const i::AstRawString* name_x = avf.GetOneByteString("x"); |
| + const i::AstRawString* name_y = avf.GetOneByteString("y"); |
| + int num_exports = 0; |
| + for (auto it = descriptor->iterator(); !it.done(); it.Advance()) { |
| + ++num_exports; |
| + CHECK_EQ(*name_x, *it.local_name()); |
| + CHECK_EQ(*name_y, *it.export_name()); |
| + } |
| + CHECK_EQ(1, num_exports); |
| +} |
| + |
| + |
| TEST(DuplicateProtoError) { |
| const char* context_data[][2] = { |
| {"({", "});"}, |