diff --git a/index.js b/index.js index fed565c..f6647fa 100644 --- a/index.js +++ b/index.js @@ -1,10 +1,7 @@ -var aparse = require('acorn').parse; +var aparse = require('acorn-node').parse; function parse (src, opts) { if (!opts) opts = {} - return aparse(src, { - ecmaVersion: opts.ecmaVersion || 8, - allowHashBang: true - }); + return aparse(src, opts); } module.exports = function (src, file,opts) { diff --git a/package.json b/package.json index 399abf6..bf36a0c 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "detect and report syntax errors in source code strings", "main": "index.js", "dependencies": { - "acorn": "^4.0.3" + "acorn-node": "^1.2.0" }, "devDependencies": { "tap": "^1.1.0" diff --git a/readme.markdown b/readme.markdown index 7025150..647d06f 100644 --- a/readme.markdown +++ b/readme.markdown @@ -26,7 +26,7 @@ if (err) { } ``` -*** +--- ``` $ node check.js @@ -55,9 +55,8 @@ stringified. If there are no syntax errors in `src`, return `undefined`. -Optionally set: - -* `opts.ecmaVersion` - default: 8 +Options will be passed through to [acorn-node](https://github.com/browserify/acorn-node). +acorn-node defaults to options that match the most recent Node versions. ## err.toString() diff --git a/test/esm.js b/test/esm.js new file mode 100644 index 0000000..ab475d2 --- /dev/null +++ b/test/esm.js @@ -0,0 +1,23 @@ +var test = require('tap').test; + +var fs = require('fs'); +var check = require('../'); + +var file = __dirname + '/sources/esm.js'; +var src = fs.readFileSync(file); + +test('esm with sourceType script', function (t) { + var err = check(src, file); + t.ok(err); + t.equal(err.line, 1); + t.equal(err.column, 1); + t.equal(err.message, "'import' and 'export' may appear only with 'sourceType: module'"); + t.ok(String(err).indexOf(file + ':1')); + t.end(); +}); + +test('esm with sourceType module', function (t) { + var err = check(src, file, { sourceType: 'module' }); + t.notOk(err); + t.end(); +}); diff --git a/test/sources/esm.js b/test/sources/esm.js new file mode 100644 index 0000000..220e115 --- /dev/null +++ b/test/sources/esm.js @@ -0,0 +1,2 @@ +import x from 'y'; +export default z; diff --git a/test/sources/spread.js b/test/sources/spread.js new file mode 100644 index 0000000..0938d93 --- /dev/null +++ b/test/sources/spread.js @@ -0,0 +1,2 @@ +var a = { ...b } +;({ d, ...e } = a) diff --git a/test/spread.js b/test/spread.js new file mode 100644 index 0000000..c0ed3b4 --- /dev/null +++ b/test/spread.js @@ -0,0 +1,13 @@ +var test = require('tap').test; + +var fs = require('fs'); +var check = require('../'); + +var file = __dirname + '/sources/spread.js'; +var src = fs.readFileSync(file); + +test('spread', function (t) { + var err = check(src, file); + t.notOk(err); + t.end(); +});