-
Notifications
You must be signed in to change notification settings - Fork 77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ES6 module import tests relies on a version of esprima that doesn't follow estree spec #51
Comments
by the way, there is no version of esprima at the moment that follows estree, the harmony branch is old and master is expected to merge https://github.com/eslint/espree changes soon according to comments on Freenode's IRC channel #esprima |
related: #33 |
and the proper esprima issue might be this one: jquery/esprima#1000 |
Yeah, Espree is the first parser to implement the ESTree representation of ES6 modules. |
|
Yay! |
if replaced with espree, lines such as this one https://github.com/estools/escope/blob/master/src/referencer.js#L117 must be updated to use node.local instead of node.id |
one possible fix to this bug: diff --git a/package.json b/package.json
index f9ea500..9b45783 100644
--- a/package.json
+++ b/package.json
@@ -28,6 +28,7 @@
"browserify": "^9.0.3",
"chai": "^2.1.1",
"coffee-script": "^1.9.1",
+ "espree": "^1.11.0",
"esprima": "~1.2.2",
"gulp": "~3.8.10",
"gulp-babel": "^4.0.0",
diff --git a/src/referencer.js b/src/referencer.js
index 7b592ce..a237e43 100644
--- a/src/referencer.js
+++ b/src/referencer.js
@@ -108,20 +108,20 @@ class Importer extends esrecurse.Visitor {
}
ImportNamespaceSpecifier(node) {
- if (node.id) {
- this.visitImport(node.id, node);
+ if (node.local) {
+ this.visitImport(node.local, node);
}
}
ImportDefaultSpecifier(node) {
- this.visitImport(node.id, node);
+ this.visitImport(node.local, node);
}
ImportSpecifier(node) {
if (node.name) {
this.visitImport(node.name, node);
} else {
- this.visitImport(node.id, node);
+ this.visitImport(node.local, node);
}
}
}
diff --git a/test/es6-import.coffee b/test/es6-import.coffee
index 11d8a6b..6e524b3 100644
--- a/test/es6-import.coffee
+++ b/test/es6-import.coffee
@@ -22,7 +22,7 @@
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
expect = require('chai').expect
-harmony = require '../third_party/esprima'
+harmony = require 'espree'
escope = require '..'
describe 'import declaration', -> |
It would probably be easier to replace |
…the ESTree spec (fixes estools#51)
true, here is a pull request: #52 |
change the referencer to support import as described in the ESTree spec (fixes #51)
Other nodes, (exportXXX should be handled). |
@Constellation do you have a plan to release this fix? |
@Constellation it will be more difficult for me personally, because I will be wait for eslint update (this issue is critical for me). But we must do it, if we change the API. But maybe it is only a fix, because new behaviour was expected from current API? |
It looks like these changes are backwards compatible, so I don't think a major version bump is necessary. |
Oh yeah, I was just thinking about the changes for this issue, specifically. With all the node changes, it's probably best to do a major version bump. |
And I'll pick |
Awesome! |
Released as |
Thanks! |
@Constellation I'm not sure what happened, but 2.0.7 seems to have a regression related to |
Ah, current escope is locked with estraverse |
Maybe, to support ExportXXX, only modifying |
Already tested with test/es6-export.coffee. Ref #51
|
If you look at https://github.com/estools/escope/blob/master/test/es6-import.coffee#L25 you see that the tests for es6 uses an esprima version that does not generate https://github.com/estree/estree spec compliant ast
For example:
ast.body[0].specifiers for code
'import v from "mod"'
is expected to output:and not
The text was updated successfully, but these errors were encountered: