diff --git a/src/Module.js b/src/Module.js index 00eca41..94d33ca 100644 --- a/src/Module.js +++ b/src/Module.js @@ -18,10 +18,16 @@ export default class Module { filename: path }); - this.ast = parse( code, { - ecmaVersion: 6, - sourceType: 'module' - }); + try { + this.ast = parse( code, { + ecmaVersion: 6, + sourceType: 'module' + }); + } catch ( err ) { + err.file = path; + throw err; + } + this.analyse(); } @@ -311,4 +317,4 @@ export default class Module { this.defaultExportName = name; } } -} \ No newline at end of file +} diff --git a/test/samples/import-not-at-top-level-fails/_config.js b/test/samples/import-not-at-top-level-fails/_config.js index c6cd131..c75e986 100644 --- a/test/samples/import-not-at-top-level-fails/_config.js +++ b/test/samples/import-not-at-top-level-fails/_config.js @@ -1,8 +1,11 @@ +var path = require( 'path' ); var assert = require( 'assert' ); module.exports = { description: 'disallows non-top-level imports', error: function ( err ) { - assert.ok( false, 'TODO: pick an error message' ); + assert.equal( err.file, path.resolve( __dirname, 'main.js' ) ); + assert.deepEqual( err.loc, { line: 2, column: 2 }); + assert.ok( /may only appear at the top level/.test( err.message ) ); } }; diff --git a/test/samples/import-not-at-top-level-fails/index.js b/test/samples/import-not-at-top-level-fails/main.js similarity index 100% rename from test/samples/import-not-at-top-level-fails/index.js rename to test/samples/import-not-at-top-level-fails/main.js