Re: xrefdb/semantic overlay bug
"Suraj Acharya" <[email protected]>
| Newsgroups | gmane.emacs.jdee,gmane.emacs.cedet |
|---|---|
| Message-ID | <[email protected]> |
CC'ing cedet-devel as this looks like a semantic bug. Suraj On 4/14/06, vedm <[email protected]> wrote: > > > If you have a java method taking an array argument in the form > "aMethod(String args[])" - instead of "aMethod(String[] args)" - then > the the function jde-xref-display-call-tree is confused and thinks that > the method takes an argument named "args[]" of type String, rather than > an argument named "args" of type String[], as it does in reality. > > Therefore the call tree does not display a correct result. > > Here is a simple test class: > > ===================== > package xref.tests; > > public class XrefTest { > public static void main(String[] args) { > new XrefTest().run(args); > } > public void run(String args[]) { > System.out.println("Runing, argument:" + args[0]); > } > } > ===================== > > If I build the xref db for the above class, put the cursor inside the > "run" method and invoke function jde-xref-display-call-tree, it shows > this: > > [X] void xref.tests.XrefTest.run(String) > > i.e. it tells me that the "run(String) method is not called at all - > which is to be expected, as there is no "run(String)" method in the > code: instead the method is "run(String[])"; > > You can see the root cause if you copy the following in your *scratch* > buffer and execute it, after putting the cursor in the "run" method: > > =================== > (let ((overlays (save-excursion > (set-buffer (get-buffer "XrefTest.java")) > (overlays-at (point))))) > (print (overlay-get (car (cdr overlays)) 'semantic))) > =================== > > When I do this I see something like this in the minibuffer: > > ====== > ("run" function (:typemodifiers ("public") :arguments (("args[]" > variable (:type "String").... > ====== > > i.e the "semantic" overlay says that the run method takes an argument > named "args[]" of type "String", which is wrong. > > > -- > vedm > >