31 lines
820 B
JavaScript
31 lines
820 B
JavaScript
// Exercise shell parseModule function.
|
|
|
|
function testEvalError(source) {
|
|
// Test |source| throws when passed to eval.
|
|
var caught = false;
|
|
try {
|
|
eval(source);
|
|
} catch (e) {
|
|
caught = true;
|
|
}
|
|
assertEq(caught, true);
|
|
}
|
|
|
|
function testModuleSource(source) {
|
|
// Test |source| parses as a module, but throws when passed to eval.
|
|
testEvalError(source);
|
|
parseModule(source);
|
|
}
|
|
|
|
parseModule("");
|
|
parseModule("const foo = 1;");
|
|
parseModule("var foo = 1;");
|
|
parseModule("let foo = 1; var bar = 2; const baz = 3");
|
|
|
|
testModuleSource("import * as ns from 'bar';");
|
|
testModuleSource("export { a } from 'b';");
|
|
testModuleSource("export * from 'b';");
|
|
testModuleSource("export const foo = 1;");
|
|
testModuleSource("export default function() {};");
|
|
testModuleSource("export default 1;");
|