senchalabs / jsduck

Simple JavaScript Duckumentation generator.
http://docs.sencha.com/
GNU General Public License v3.0
1.5k stars 238 forks source link

Support "let" like "var" (preventing RKelly::SyntaxError) #655

Closed 98B closed 7 years ago

98B commented 7 years ago

Hi,

while playing with more recent Javascript, I noticed the exception RKelly::SyntaxError raised as show below. The cause seems to be the let in the one-line test file, also show below. I was guessing that an easy fix would be to have var and let be “synonymous” as regards syntax.

$ jsduck --output doc/src test.js
parser.y:606:in `_reduce_273': RKelly::SyntaxError (RKelly::SyntaxError)
    from (eval):4:in `_reduce_273'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/racc/parser.rb:258:in `_racc_do_parse_c'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/racc/parser.rb:258:in `do_parse'
    from /Users/myself/.gem/ruby/2.0.0/gems/rkelly-remix-0.0.7/lib/rkelly/parser.rb:43:in `parse'
    from /Users/myself/.gem/ruby/2.0.0/gems/jsduck-5.3.4/lib/jsduck/js/parser.rb:22:in `parse'
    from /Users/myself/.gem/ruby/2.0.0/gems/jsduck-5.3.4/lib/jsduck/parser.rb:44:in `parse_js_or_css'
    from /Users/myself/.gem/ruby/2.0.0/gems/jsduck-5.3.4/lib/jsduck/parser.rb:30:in `parse'
    from /Users/myself/.gem/ruby/2.0.0/gems/jsduck-5.3.4/lib/jsduck/batch_parser.rb:25:in `block in parse'
    from /Users/myself/.gem/ruby/2.0.0/gems/parallel-0.7.1/lib/parallel.rb:339:in `call'
    from /Users/myself/.gem/ruby/2.0.0/gems/parallel-0.7.1/lib/parallel.rb:339:in `call_with_index'
    from /Users/myself/.gem/ruby/2.0.0/gems/parallel-0.7.1/lib/parallel.rb:268:in `process_incoming_jobs'
    from /Users/myself/.gem/ruby/2.0.0/gems/parallel-0.7.1/lib/parallel.rb:251:in `block in worker'
    from /Users/myself/.gem/ruby/2.0.0/gems/parallel-0.7.1/lib/parallel.rb:244:in `fork'
    from /Users/myself/.gem/ruby/2.0.0/gems/parallel-0.7.1/lib/parallel.rb:244:in `worker'
    from /Users/myself/.gem/ruby/2.0.0/gems/parallel-0.7.1/lib/parallel.rb:232:in `block in create_workers'
    from /Users/myself/.gem/ruby/2.0.0/gems/parallel-0.7.1/lib/parallel.rb:231:in `each'
    from /Users/myself/.gem/ruby/2.0.0/gems/parallel-0.7.1/lib/parallel.rb:231:in `create_workers'
    from /Users/myself/.gem/ruby/2.0.0/gems/parallel-0.7.1/lib/parallel.rb:195:in `work_in_processes'
    from /Users/myself/.gem/ruby/2.0.0/gems/parallel-0.7.1/lib/parallel.rb:106:in `map'
    from /Users/myself/.gem/ruby/2.0.0/gems/jsduck-5.3.4/lib/jsduck/util/parallel.rb:28:in `map'
    from /Users/myself/.gem/ruby/2.0.0/gems/jsduck-5.3.4/lib/jsduck/batch_parser.rb:17:in `parse'
    from /Users/myself/.gem/ruby/2.0.0/gems/jsduck-5.3.4/lib/jsduck/app.rb:41:in `parse'
    from /Users/myself/.gem/ruby/2.0.0/gems/jsduck-5.3.4/lib/jsduck/app.rb:21:in `run'
    from /Users/myself/.gem/ruby/2.0.0/gems/jsduck-5.3.4/bin/jsduck:25:in `<top (required)>'
    from /Users/myself/.gem/ruby/2.0.0/bin/jsduck:23:in `load'
    from /Users/myself/.gem/ruby/2.0.0/bin/jsduck:23:in `<main>'
$ cat test.js
let x = 3;
$
nene commented 7 years ago

Hi there!

This might be an easy fix, but the root of the problem is that the parser does not understand none of the ES6 syntax. If one is using let, he's probably also using bunch of other ES6, and that simple fix won't help him a lot.

The sad situation is, that JSDuck development has been in halted state for a while now. I have no idea if and when I or somebody else would do some actual work on it.

98B commented 7 years ago

Point taken. Pity, though, not many JSDoc processors will at least consider inner functions, e.g..