Bug 82844

Summary: [1.5] Array type as type variable bound gives internal compiler error
Product: [Eclipse Project] JDT Reporter: Ingo Maier <i.maier>
Component: CoreAssignee: Philipe Mulet <philippe_mulet>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: P3    
Version: 3.1   
Target Milestone: 3.1 M5   
Hardware: PC   
OS: Linux   
Whiteboard:

Description Ingo Maier CLA 2005-01-14 10:09:14 EST
This code is illegal because an array type cannot be a bound:

class Foo<T extends int[]> {
}

However, this crashes the compiler:

java.lang.ClassCastException: org.eclipse.jdt.internal.compiler.lookup.ArrayBinding
at
org.eclipse.jdt.internal.compiler.lookup.Scope.connectTypeVariables(Scope.java:274)
at
org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:861)
at
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:243)
at
org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:195)
at org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:307)
at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:546)
at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:610)
at
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:165)
at
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:213)
at
org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:78)
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:1105)
at
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:91)
at
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:133)
at
org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.reconcile(CompositeReconcilingStrategy.java:86)
at
org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconcile(JavaCompositeReconcilingStrategy.java:94)
at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:75)
at org.eclipse.jdt.internal.ui.text.JavaReconciler.process(JavaReconciler.java:318)
at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:204)
Comment 1 Ingo Maier CLA 2005-01-14 10:20:31 EST
Doesn't matter if the arrays component type is primitive or a reference type
(including type variables).
Comment 2 Philipe Mulet CLA 2005-01-14 16:34:01 EST
Added missing check for type parameter bounds.
Added GenericTypeTest#test461.
Fixed
Comment 3 Jerome Lanneluc CLA 2005-02-15 05:57:55 EST
Verified in I20050214