Bug 70656

Summary: [1.5] StackOverflow when resolving Enum<FormattedFloatingDecimal$Form>
Product: [Eclipse Project] JDT Reporter: Philipe Mulet <philippe_mulet>
Component: CoreAssignee: Kent Johnson <kent_johnson>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3    
Version: 3.0   
Target Milestone: 3.1 M1   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Philipe Mulet CLA 2004-07-22 12:41:52 EDT
When attempting to recompile src libs, a stack overflow occurred when binding 
the supertype of the form Enum<FormattedFloatingDecimal$Form>.


java.lang.StackOverflowError
	at 
org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.substitute
(ParameterizedTypeBinding.java:566)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.substitute
(Scope.java:2384)
	at 
org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.substitute
(ParameterizedTypeBinding.java:622)
	at 
org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.boundCheck
(TypeVariableBinding.java:52)
	at 
org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.resolve
(ParameterizedTypeBinding.java:512)
	at 
org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType
(BinaryTypeBinding.java:51)
	at 
org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.superclass
(BinaryTypeBinding.java:684)
	at 
org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isSuperclassOf
(ReferenceBinding.java:576)
	at 
org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isCompatibleWith
(ReferenceBinding.java:510)
	at 
org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.boundCheck
(TypeVariableBinding.java:52)
	at 
org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.resolve
(ParameterizedTypeBinding.java:512)
	at 
org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType
(BinaryTypeBinding.java:51)
	at 
org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.superclass
(BinaryTypeBinding.java:684)
	at 
org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isSuperclassOf
(ReferenceBinding.java:576)
	at 
org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isCompatibleWith
(ReferenceBinding.java:510)
	at 
org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.boundCheck
(TypeVariableBinding.java:52)
	at 
org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.resolve
(ParameterizedTypeBinding.java:512)
	at 
org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType
(BinaryTypeBinding.java:51)
	at 
org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.superclass
(BinaryTypeBinding.java:684)
	at 
org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isSuperclassOf
(ReferenceBinding.java:576)
	at 
org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isCompatibleWith
(ReferenceBinding.java:510)
	at 
org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.boundCheck
(TypeVariableBinding.java:52)
	at 
org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.resolve
(ParameterizedTypeBinding.java:512)
	at 
org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType
(BinaryTypeBinding.java:51)
	at 
org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.superclass
(BinaryTypeBinding.java:684)
	at 
org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isSuperclassOf
(ReferenceBinding.java:576)
	at 
org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isCompatibleWith
(ReferenceBinding.java:510)
	at 
org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.boundCheck
(TypeVariableBinding.java:52)
	at 
org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.resolve
(ParameterizedTypeBinding.java:512)
	at 
org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType
(BinaryTypeBinding.java:51)
	at 
org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.superclass
(BinaryTypeBinding.java:684)
	at 
org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isSuperclassOf
(ReferenceBinding.java:576)
	at 
org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isCompatibleWith
(ReferenceBinding.java:510)
	at 
org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.boundCheck
(TypeVariableBinding.java:52)
	at 
org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.resolve
(ParameterizedTypeBinding.java:512)
Comment 1 Philipe Mulet CLA 2004-07-27 09:27:00 EDT
The resolution should be splitted into 2 parts: binding creation, then bound 
check.
Comment 2 Kent Johnson CLA 2004-07-27 13:29:52 EDT
Changed to resolve any Unresolved types first then do bounds checks after.