Bug 125807 - NPE in ResolvedMemberValuePair#init()
Summary: NPE in ResolvedMemberValuePair#init()
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.2   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.2 M5   Edit
Assignee: Kent Johnson CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-01-31 06:02 EST by Markus Keller CLA
Modified: 2008-04-30 12:15 EDT (History)
1 user (show)

See Also:


Attachments
Proposed patch (1.09 KB, patch)
2006-01-31 16:32 EST, Olivier Thomann CLA
no flags Details | Diff
Regression test (2.22 KB, patch)
2006-01-31 16:50 EST, Olivier Thomann CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
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.