Index: test/cctest/test-parsing.cc |
diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc |
index 594e3773f0bd4ab965411358dcc4cacafe5daf67..1022aae1ec5f42c89881f158055ab07f997a0364 100644 |
--- a/test/cctest/test-parsing.cc |
+++ b/test/cctest/test-parsing.cc |
@@ -4681,13 +4681,32 @@ TEST(BasicImportExportParsing) { |
"function f() {}; f(); export { f };", |
"var a, b, c; export { a, b as baz, c };", |
"var d, e; export { d as dreary, e, };", |
- "import y from 'http://module.com/foo.js';", |
"export default function f() {}", |
"export default class C {}", |
"export default 42", |
"var x; export default x = 7", |
"export { Q } from 'somemodule.js';", |
- "export * from 'somemodule.js';" |
+ "export * from 'somemodule.js';", |
+ "var foo; export { foo as for };", |
+ "export { arguments } from 'm.js';", |
+ "export { for } from 'm.js';", |
+ "export { yield } from 'm.js'", |
+ "export { static } from 'm.js'", |
+ "export { let } from 'm.js'", |
+ |
+ "import 'somemodule.js';", |
+ "import { } from 'm.js';", |
+ "import { a } from 'm.js';", |
+ "import { a, b as d, c, } from 'm.js';", |
+ "import * as thing from 'm.js';", |
+ "import thing from 'm.js';", |
+ "import thing, * as rest from 'm.js';", |
+ "import thing, { a, b, c } from 'm.js';", |
+ "import { arguments as a } from 'm.js';", |
+ "import { for as f } from 'm.js';", |
+ "import { yield as y } from 'm.js';", |
+ "import { static as s } from 'm.js';", |
+ "import { let as l } from 'm.js';", |
}; |
i::Isolate* isolate = CcTest::i_isolate(); |
@@ -4720,7 +4739,22 @@ TEST(BasicImportExportParsing) { |
parser.set_allow_harmony_modules(true); |
parser.set_allow_harmony_scoping(true); |
info.MarkAsModule(); |
- CHECK(parser.Parse()); |
+ if (!parser.Parse()) { |
+ i::Handle<i::JSObject> exception_handle( |
+ i::JSObject::cast(isolate->pending_exception())); |
+ i::Handle<i::String> message_string = |
+ i::Handle<i::String>::cast(i::Object::GetProperty( |
+ isolate, exception_handle, "message").ToHandleChecked()); |
+ |
+ v8::base::OS::Print( |
+ "Parser failed on:\n" |
+ "\t%s\n" |
+ "with error:\n" |
+ "\t%s\n" |
+ "However, we expected no error.", |
+ source->ToCString().get(), message_string->ToCString().get()); |
+ CHECK(false); |
+ } |
} |
// And that parsing a script does not. |
@@ -4761,6 +4795,38 @@ TEST(ImportExportParsingErrors) { |
"export * from;", |
"export { Q } from;", |
"export default from 'module.js';", |
+ "export { for }", |
+ "export { for as foo }", |
+ "export { arguments }", |
+ "export { arguments as foo }", |
+ |
+ "import from;", |
+ "import from 'm.js';", |
+ "import { };", |
+ "import {;", |
+ "import };", |
+ "import { , };", |
+ "import { , } from 'm.js';", |
+ "import { a } from;", |
+ "import { a } 'm.js';", |
+ "import , from 'm.js';", |
+ "import a , from 'm.js';", |
+ "import a { b, c } from 'm.js';", |
+ "import arguments from 'm.js';", |
+ "import eval from 'm.js';", |
+ "import { arguments } from 'm.js';", |
+ "import { eval } from 'm.js';", |
+ "import { a as arguments } from 'm.js';", |
+ "import { for } from 'm.js';", |
+ "import { y as yield } from 'm.js'", |
+ "import { s as static } from 'm.js'", |
+ "import { l as let } from 'm.js'", |
+ "import { x }, def from 'm.js';", |
+ "import def, def2 from 'm.js';", |
+ "import * as x, def from 'm.js';", |
+ "import * as x, * as y from 'm.js';", |
+ "import {x}, {y} from 'm.js';", |
+ "import * as x, {y} from 'm.js';", |
// TODO(ES6): These two forms should be supported |
"export default function() {};", |