Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 316659

Summary: [compiler] NPE in PrecedenceBinding.hasCommonBaseMethod
Product: [Tools] Objectteams Reporter: Stephan Herrmann <stephan.herrmann>
Component: OTJAssignee: Stephan Herrmann <stephan.herrmann>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: P3    
Version: 0.7   
Target Milestone: 0.7   
Hardware: PC   
OS: Linux   
Whiteboard:
Attachments:
Description Flags
Fix none

Description Stephan Herrmann CLA 2010-06-11 18:11:15 EDT
Starting with the example from bug 316148, if the precedence
declaration within MyRoleB is (illegally) changed to
      	precedence MyRoleB.bl1, MyRoleB.bl2;
the following exception is thrown:

java.lang.NullPointerException
	at org.eclipse.objectteams.otdt.internal.core.compiler.lookup.PrecedenceBinding.hasCommonBaseMethod(PrecedenceBinding.java:112)
	at org.eclipse.objectteams.otdt.internal.core.compiler.ast.PrecedenceDeclaration.mergePrecedences(PrecedenceDeclaration.java:255)
	at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.mergePrecedences(TypeDeclaration.java:1286)
	at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.internalAnalyseCode(TypeDeclaration.java:1257)
	at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.analyseCode(TypeDeclaration.java:599)
	at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.analyseCode(CompilationUnitDeclaration.java:146)
	at org.eclipse.objectteams.otdt.internal.core.compiler.control.Dependencies.establishUnitState(Dependencies.java:356)
	at org.eclipse.objectteams.otdt.internal.core.compiler.control.Dependencies.ensureState(Dependencies.java:260)
	at org.eclipse.objectteams.otdt.internal.core.compiler.control.Dependencies.ensureState(Dependencies.java:252)
	at org.eclipse.objectteams.otdt.internal.core.compiler.control.Dependencies.ensureState(Dependencies.java:252)
	at org.eclipse.objectteams.otdt.internal.core.compiler.control.Dependencies.ensureState(Dependencies.java:215)
	at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:979)
	at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:1036)
	at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder._OT$process$orig(CompilationUnitProblemFinder.java:221)
	... 23 more
Comment 1 Stephan Herrmann CLA 2010-06-13 06:40:42 EDT
Created attachment 171801 [details]
Fix

This patch ensures we can cope with elements of a PrecedenceBinding being null
due to failed resolving.

Corresponding test is test4127_precedenceDeclaration17()
Comment 2 Stephan Herrmann CLA 2010-06-13 06:41:44 EDT
Patch has been committed as r481,
Comment 3 Stephan Herrmann CLA 2010-07-02 13:01:06 EDT
Verified using build 201007011455.