Community
Participate
Working Groups
HEAD (with fix for bug 213509, e.g. N20080108-0010) - install and open ASTView - have: public class Try { void m(Object o) { } } - select "m" - in ASTView, click the "Show AST of active Editor" toolbar button => error dialog, NPE below in log java.lang.NullPointerException at org.eclipse.jdt.core.dom.MethodBinding.getParameterAnnotations(MethodBinding.java:145) at org.eclipse.jdt.astview.views.Binding.getChildren(Binding.java:219) at org.eclipse.jdt.astview.views.ASTViewContentProvider.getChildren(ASTViewContentProvider.java:95) at org.eclipse.jdt.astview.views.ASTViewContentProvider.hasChildren(ASTViewContentProvider.java:226) at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2045) at org.eclipse.jface.viewers.TreeViewer.isExpandable(TreeViewer.java:575) at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2071) at org.eclipse.jface.viewers.AbstractTreeViewer.updatePlus(AbstractTreeViewer.java:2713) at org.eclipse.jface.viewers.TreeViewer.updatePlus(TreeViewer.java:835) at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:825) at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:799) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:773) at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:627) at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1575) at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1572) at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2417) at org.eclipse.jface.viewers.StructuredViewer.setSelectionToWidget(StructuredViewer.java:1680) at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2825) at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1636) at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1095) at org.eclipse.jdt.astview.views.ASTView.internalSetInput(ASTView.java:551) at org.eclipse.jdt.astview.views.ASTView.setInput(ASTView.java:517) at org.eclipse.jdt.astview.views.ASTView.performSetFocus(ASTView.java:1222) at org.eclipse.jdt.astview.views.ASTView$19.run(ASTView.java:962) at org.eclipse.jface.action.Action.runWithEvent(Action.java:498) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:582) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:499) at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:451) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:952) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3758) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3369) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2392) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2356) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2222) at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:561) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:501) at org.eclipse.equinox.launcher.Main.run(Main.java:1239) at org.eclipse.equinox.launcher.Main.main(Main.java:1215)
Missing a null check. Frédéric, you might also want to make sure that this is thread safe.
Created attachment 86415 [details] Proposed fix Need to be reviewed (untested) + addition of regression tests.
Created attachment 86417 [details] New proposed patch I prefer to store an empty array rather than testing for null on several lines. Then I avoid to get potential problem with synchronization. This patch also includes 2 test cases on ASTConverterBugsTest. I'll release it as soon as all JDT tests pass...
Released for 3.4M5 in HEAD stream.
Comment on attachment 86417 [details] New proposed patch Talking with Jerome about my changes leads to prefer the Olivier's patch which does not store empty arrays when there's no annotation at all.
Comment on attachment 86415 [details] Proposed fix This was finally this patch I released + new added tests...
Verified for 34M5 using I20080204-0010 build.