Bug 100007 - [1.5][compiler] ClassCastException using array object as generic type
Summary: [1.5][compiler] ClassCastException using array object as generic type
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.1   Edit
Hardware: PC Windows XP
: P3 blocker (vote)
Target Milestone: 3.1 RC3   Edit
Assignee: Philipe Mulet CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-06-14 12:37 EDT by Mikael Nordenberg CLA
Modified: 2005-06-16 14:26 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mikael Nordenberg CLA 2005-06-14 12:37:18 EDT
The following code gives an "Internal compiler error":

public class Test {
	static interface Factory<T> {
		public <U extends T> U create(Class<U> cl);
	}
	
	static class BytesFactory implements Factory<byte[]> {
		public byte[] create(Class<byte[]> cl) {
			return null;
		}
	}
}
Comment 1 Olivier Thomann CLA 2005-06-14 14:31:32 EDT
java.lang.ClassCastException: org.eclipse.jdt.internal.compiler.lookup.ArrayBinding
	at
org.eclipse.jdt.internal.compiler.lookup.ParameterizedMethodBinding.<init>(ParameterizedMethodBinding.java:78)
	at
org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.createParameterizedMethod(ParameterizedTypeBinding.java:229)
	at
org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.methods(ParameterizedTypeBinding.java:725)
	at
org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.unResolvedMethods(ReferenceBinding.java:982)
	at
org.eclipse.jdt.internal.compiler.lookup.MethodVerifier.computeInheritedMethods(MethodVerifier.java:465)
	at
org.eclipse.jdt.internal.compiler.lookup.MethodVerifier.computeInheritedMethods(MethodVerifier.java:352)
	at
org.eclipse.jdt.internal.compiler.lookup.MethodVerifier.verify(MethodVerifier.java:586)
	at
org.eclipse.jdt.internal.compiler.lookup.MethodVerifier15.verify(MethodVerifier15.java:397)
	at
org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.verifyMethods(SourceTypeBinding.java:1493)
	at
org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.verifyMethods(SourceTypeBinding.java:1496)
	at
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.verifyMethods(CompilationUnitScope.java:718)
	at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:501)
	at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:329)
	at org.eclipse.jdt.internal.compiler.batch.Main.performCompilation(Main.java:2691)
	at org.eclipse.jdt.internal.compiler.batch.Main.compile(Main.java:1151)
	at org.eclipse.jdt.internal.compiler.batch.Main.compile(Main.java:1048)
	at org.eclipse.jdt.internal.compiler.batch.Main.compile(Main.java:1040)
	at org.eclipse.jdt.core.tools.compiler.Compile.main(Compile.java:19)
Comment 2 Philipe Mulet CLA 2005-06-15 04:47:35 EDT
Added GenericTypeTest#test748.

When creating generic method for parameterized type (Factory<byte[]>) we did not
properly handle arrays when recreating type variable formal bounds.
Fix is similar to what we do already have in other places.

+1 for RC3

Dani - pls cast your vote.
Comment 3 Dani Megert CLA 2005-06-15 04:57:47 EDT
+1 for 3.1 RC3
Comment 4 Philipe Mulet CLA 2005-06-15 05:33:28 EDT
Fixed
Comment 5 Olivier Thomann CLA 2005-06-16 14:26:01 EDT
Verified using N20050616-0010 + JDT/Core HEAD