Bug 64417

Summary: [1.5] NPE in SourceTypeBinding.resolveTypesFor
Product: [Eclipse Project] JDT Reporter: Adam Kiezun <akiezun>
Component: CoreAssignee: Philipe Mulet <philippe_mulet>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: kent_johnson
Version: 3.0   
Target Milestone: 3.1 M1   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Adam Kiezun CLA 2004-05-27 14:45:19 EDT
cheetah 05 on m9
(i'll try to create a test case)

java.lang.NullPointerException
at
org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.resolveTypesFor(SourceTypeBinding.java:803)
at
org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.methods(SourceTypeBinding.java:696)
at
org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.getMethods(SourceTypeBinding.java:586)
at
org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.getExactConstructor(SourceTypeBinding.java:485)
at org.eclipse.jdt.internal.compiler.lookup.Scope.getConstructor(Scope.java:1273)
at
org.eclipse.jdt.internal.compiler.ast.AllocationExpression.resolveType(AllocationExpression.java:280)
at org.eclipse.jdt.internal.compiler.ast.Assignment.resolveType(Assignment.java:157)
at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Expression.java:449)
at
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:382)
at
org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration.resolveStatements(ConstructorDeclaration.java:426)
at
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:359)
at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:921)
at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:963)
at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:910)
at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:970)
at
org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:280)
at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:562)
at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:601)
at
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:166)
at
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:206)
at
org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:76)
at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700)
at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:739)
at
org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1097)
at
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:88)
at
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.initialReconcile(JavaReconcilingStrategy.java:156)
at
org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.initialReconcile(CompositeReconcilingStrategy.java:114)
at
org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.initialReconcile(JavaCompositeReconcilingStrategy.java:122)
at
org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:104)
at
org.eclipse.jdt.internal.ui.text.JavaReconciler.initialProcess(JavaReconciler.java:280)
at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:166)
Comment 1 Philipe Mulet CLA 2004-06-28 07:40:20 EDT
Reproduced. Problem did occur if getMethod(selector) was invoked, and 
attempted to resolve a method which signature had problems. Indeed, it 
nullified the method decl binding slot, and redid entire method resolution, 
and reentered same code (this time unable to find proper decl for binding).
Added protection to resolution of a method so as to return null in case unable 
to find method decl.
Comment 2 Jerome Lanneluc CLA 2004-06-28 12:16:15 EDT
Added regression test ReconcilerTests.testMethodWithError14()