It seems the JS2Doc_Test test-case is broken. I've changed the following things to make it almost working again: - updated the expected output to the newer "except $runtime" syntax in JS2Doc_Test - added if-case for ASTVariableDeclarationList in "JS2Doc#collectVariableDeclarations(..)" - replaced loop over falseDirective children with visit call for falseDirective in "JS2Doc#visitIfDirective(..)"

Now there's only one remaining issue for function declarations, here's an example:
identical: false
input:  function foo () { }
output: <?xml version="1.0" encoding="UTF-8"?><js2doc buildoptions="debug profile" runtimeoptions="dhtml swf8 swf9"><property id="prototype" name="prototype"><object><property id="prototype.foo" name="foo"><function/></property></object></property></js2doc> expect: <?xml version="1.0" encoding="UTF-8"?><js2doc buildoptions="debug profile" runtimeoptions="dhtml swf8 swf9"><property id="foo" name="foo"><function/></property></js2doc>

Somehow the function declaration is wrapped in a ASTModifiedDefinition, this causes a call to "JS2Doc#ensurePrototypeNode(..)" in "JS2Doc#visitMethodDeclaration(..)". The stacktrace is like: visitToplevelStatement(..) -> visitModifiedDefinition(..) -> visitMethodDeclaration(..) -> ensurePrototypeNode(..)

I wonder why the compiler wraps a simple function declaration outside of a class in a ASTModifiedDefinition at all. It's possible to work around this issue in JS2Doc, but I think this could be a bug in the compiler. Any thoughts?


Reply via email to