Bug 125807

Summary: NPE in ResolvedMemberValuePair#init()
Product: [Eclipse Project] JDT Reporter: Markus Keller <markus.kell.r>
Component: CoreAssignee: Kent Johnson <kent_johnson>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: Olivier_Thomann
Version: 3.2   
Target Milestone: 3.2 M5   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Attachments:
Description Flags
Proposed patch
none
Regression test none

Description Markus Keller CLA 2006-01-31 06:02:36 EST
HEAD

Steps: open ASTView 1.1.0 on this class to inspect the resolved annotations:

@Override(x= 1)
public class Try { }

Here, the NPE happens in toString(), but I think the problem would also appear in other queries on ResolvedMemberValuePair.

java.lang.NullPointerException
	at org.eclipse.jdt.core.dom.ResolvedMemberValuePair.init(ResolvedMemberValuePair.java:96)
	at org.eclipse.jdt.core.dom.ResolvedMemberValuePair.getValue(ResolvedMemberValuePair.java:91)
	at org.eclipse.jdt.core.dom.ResolvedMemberValuePair.toString(ResolvedMemberValuePair.java:118)
	at org.eclipse.jdt.core.dom.ResolvedMemberValuePair.toString(ResolvedMemberValuePair.java:111)
	at org.eclipse.jdt.core.dom.ResolvedAnnotation.toString(ResolvedAnnotation.java:86)
	at org.eclipse.jdt.astview.views.ResolvedAnnotation.<init>(ResolvedAnnotation.java:26)
	at org.eclipse.jdt.astview.views.ResolvedAnnotationProperty.convertValue(ResolvedAnnotationProperty.java:166)
	at org.eclipse.jdt.astview.views.ResolvedAnnotationProperty.createChildren(ResolvedAnnotationProperty.java:77)
	at org.eclipse.jdt.astview.views.ResolvedAnnotationProperty.<init>(ResolvedAnnotationProperty.java:58)
	at org.eclipse.jdt.astview.views.Binding.getChildren(Binding.java:218)
	at org.eclipse.jdt.astview.views.ASTViewContentProvider.getChildren(ASTViewContentProvider.java:94)
	at org.eclipse.jdt.astview.views.ASTViewContentProvider.hasChildren(ASTViewContentProvider.java:240)
	at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:1539)
	at org.eclipse.jface.viewers.TreeViewer.isExpandable(TreeViewer.java:760)
	at org.eclipse.jface.viewers.AbstractTreeViewer.updatePlus(AbstractTreeViewer.java:2098)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:541)
	at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:519)
...
Comment 1 Olivier Thomann CLA 2006-01-31 16:07:47 EST
You could specify that this code doesn't compile.
I'll investigate.
Comment 2 Olivier Thomann CLA 2006-01-31 16:32:15 EST
Created attachment 33890 [details]
Proposed patch
Comment 3 Olivier Thomann CLA 2006-01-31 16:33:46 EST
Kent,

Could you please review the patch? Putting the line after the for fixes this issue. Otherwise an array with null inside is returned as the computedPair.
This doesn't seem to have an impact on the errors reported by the compiler.
Comment 4 Olivier Thomann CLA 2006-01-31 16:50:45 EST
Created attachment 33892 [details]
Regression test
Comment 5 Olivier Thomann CLA 2006-01-31 21:58:00 EST
org.eclipse.jdt.core.tests.dom.ASTConverter15Test.test0208 is released, but it is disabled for now.
Please reenable once this is fixed.
Comment 6 Kent Johnson CLA 2006-02-02 16:34:18 EST
released along with change to only create binding when storeAnnotations is true.
Comment 7 David Audel CLA 2006-02-14 09:37:47 EST
Verified for 3.2 M5 using build I20060214-0010
Comment 8 Olivier Thomann CLA 2008-04-30 12:15:23 EDT
I think the resolution for this problem was wrong. When the member value cannot be resolved, we should not return a binding for it.