| // 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;"); |