2012年2月4日 星期六

JSDoc3的……這應該不能算Bug吧……

因為自己的代碼,所以才發現這個問題……
在一種很少見(還沒到罕見的程度)情況下,JSDoc 3會出現問題,但是放到JsDoc Toolkit 2.4.0就沒事。
以下是代碼:

/**
 * @constructor
 * @public
 * @this {User}
 * @property {Array} test 
 */
function User(){
/** 
 * Just Test
 * @private  {Array}
 */
this.test  = [];
}

這代碼,在jsdoc3會出現error如下:
org.mozilla.javascript.EcmaError: TypeError: Cannot read property "filename" from undefined
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3785)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3763)
at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3791)
at org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3810)
at org.mozilla.javascript.ScriptRuntime.undefReadError(ScriptRuntime.java:3823)
at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1508)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_tag_validator_js_16._c_TagValueNotPermittedError_4(Unknown Source)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_tag_validator_js_16.call(Unknown Source)
at org.mozilla.javascript.BaseFunction.construct(BaseFunction.java:369)
at org.mozilla.javascript.ScriptRuntime.newObject(ScriptRuntime.java:2440)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_tag_validator_js_16._c_anonymous_1(Unknown Source)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_tag_validator_js_16.call(Unknown Source)
at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_tag_js_15._c_anonymous_1(Unknown Source)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_tag_js_15.call(Unknown Source)
at org.mozilla.javascript.BaseFunction.construct(BaseFunction.java:369)
at org.mozilla.javascript.ScriptRuntime.newObject(ScriptRuntime.java:2440)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_doclet_js_14._c_anonymous_3(Unknown Source)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_doclet_js_14.call(Unknown Source)
at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_doclet_js_14._c_anonymous_1(Unknown Source)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_doclet_js_14.call(Unknown Source)
at org.mozilla.javascript.BaseFunction.construct(BaseFunction.java:369)
at org.mozilla.javascript.ScriptRuntime.newObject(ScriptRuntime.java:2440)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_src_handlers_js_13._c_anonymous_2(Unknown Source)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_src_handlers_js_13.call(Unknown Source)
at org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2521)
at org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:300)
at org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:129)
at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_node_modules_common_events_js_5._c_anonymous_2(Unknown Source)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_node_modules_common_events_js_5.call(Unknown Source)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_node_modules_common_events_js_5._c_anonymous_3(Unknown Source)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_node_modules_common_events_js_5.call(Unknown Source)
at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:86)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_src_parser_js_7._c_visitNode_12(Unknown Source)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_src_parser_js_7.call(Unknown Source)
at org.mozilla.javascript.JavaAdapter.doCall(JavaAdapter.java:598)
at org.mozilla.javascript.JavaAdapter.callMethod(JavaAdapter.java:573)
at adapter1.visit(<adapter>)
at org.mozilla.javascript.ast.ScriptNode.visit(ScriptNode.java:345)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:161)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:247)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_src_parser_js_7._c_anonymous_6(Unknown Source)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_src_parser_js_7.call(Unknown Source)
at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_src_parser_js_7._c_anonymous_2(Unknown Source)
at org.mozilla.javascript.gen.file__tmp_micmath_jsdoc_279554f_rhino_modules_jsdoc_src_parser_js_7.call(Unknown Source)
at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76)
at org.mozilla.javascript.gen.__jsdoc_js_1._c_main_5(Unknown Source)
at org.mozilla.javascript.gen.__jsdoc_js_1.call(Unknown Source)
at org.mozilla.javascript.optimizer.OptRuntime.callName0(OptRuntime.java:108)
at org.mozilla.javascript.gen.__jsdoc_js_1._c_script_0(Unknown Source)
at org.mozilla.javascript.gen.__jsdoc_js_1.call(Unknown Source)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:426)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3178)
at org.mozilla.javascript.gen.__jsdoc_js_1.call(Unknown Source)
at org.mozilla.javascript.gen.__jsdoc_js_1.exec(Unknown Source)
at org.mozilla.javascript.tools.shell.Main.evaluateScript(Main.java:654)
at org.mozilla.javascript.tools.shell.Main.processFileSecure(Main.java:552)
at org.mozilla.javascript.tools.shell.Main.processFile(Main.java:507)
at org.mozilla.javascript.tools.shell.Main.processSource(Main.java:499)
at org.mozilla.javascript.tools.shell.Main.processFiles(Main.java:215)
at org.mozilla.javascript.tools.shell.Main$IProxy.run(Main.java:134)
at org.mozilla.javascript.Context.call(Context.java:521)
at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:535)
at org.mozilla.javascript.tools.shell.Main.exec(Main.java:198)
at org.mozilla.javascript.tools.shell.Main.main(Main.java:174)

經過檢查,原來是因為 * @private {Array}這行註解的錯……
把這行刪掉就沒事了……
雖說其實從一開始,this.test就不需要另外特別在追加註解就是了……

沒有留言:

張貼留言