estraverse
estraverse copied to clipboard
estraverse breaking on comments inside conditions
Example:
if (a &&
// We need to check b beacuse of IE <<< BOOM
b > 0 && c) {
// code
}
Trace:
/Users/evindor/.nvm/v0.10.26/lib/node_modules/amd-to-closure/node_modules/escodegen/node_modules/estraverse/estraverse.js:646
if (node.range[1] < comment.extendedRange[0]) {
^
TypeError: Cannot read property '1' of undefined
at Controller.traverse.leave (/Users/evindor/.nvm/v0.10.26/lib/node_modules/amd-to-closure/node_modules/escodegen/node_modules/estraverse/estraverse.js:646:35)
at Controller.__execute (/Users/evindor/.nvm/v0.10.26/lib/node_modules/amd-to-closure/node_modules/escodegen/node_modules/estraverse/estraverse.js:313:31)
at Controller.traverse (/Users/evindor/.nvm/v0.10.26/lib/node_modules/amd-to-closure/node_modules/escodegen/node_modules/estraverse/estraverse.js:379:28)
at traverse (/Users/evindor/.nvm/v0.10.26/lib/node_modules/amd-to-closure/node_modules/escodegen/node_modules/estraverse/estraverse.js:551:27)
at Object.attachComments (/Users/evindor/.nvm/v0.10.26/lib/node_modules/amd-to-closure/node_modules/escodegen/node_modules/estraverse/estraverse.js:640:9)
at Stream.end (/Users/evindor/.nvm/v0.10.26/lib/node_modules/amd-to-closure/index.js:98:17)
at _end (/Users/evindor/.nvm/v0.10.26/lib/node_modules/amd-to-closure/node_modules/through/index.js:65:9)
at Stream.stream.end (/Users/evindor/.nvm/v0.10.26/lib/node_modules/amd-to-closure/node_modules/through/index.js:74:5)
at ReadStream.onend (_stream_readable.js:483:10)
at ReadStream.g (events.js:180:16)
I've just hacked it around, i guess this issue needs more deep exploration.
Hm.
Do you add range option to esprima? attachComments need range option.
Yes, range option was turned on.
@evindor Looks like the issue is you are calling attachComments(...) after modifying AST, which means absolute positions it relies on are broken at moment of attachment.