Community
Participate
Working Groups
Not reproducible but I got this one on save, and it was logged by the builder: java.lang.StackOverflowError at org.eclipse.xtext.common.types.util.TypeArgumentContext$CopyingTypeReferenceVisitor.doVisitParameterizedTypeReference(TypeArgumentContext.java:90) at org.eclipse.xtext.common.types.util.TypeArgumentContext$2.doVisitParameterizedTypeReference(TypeArgumentContext.java:328) at org.eclipse.xtext.common.types.util.TypeArgumentContext$CopyingTypeReferenceVisitor.doVisitParameterizedTypeReference(TypeArgumentContext.java:1) at org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImplCustom.accept(JvmParameterizedTypeReferenceImplCustom.java:59) at org.eclipse.xtext.common.types.util.AbstractTypeReferenceVisitorWithParameter.visit(AbstractTypeReferenceVisitorWithParameter.java:32) at org.eclipse.xtext.common.types.util.TypeArgumentContext$CopyingTypeReferenceVisitor.doVisitParameterizedTypeReference(TypeArgumentContext.java:106) at org.eclipse.xtext.common.types.util.TypeArgumentContext$2.doVisitParameterizedTypeReference(TypeArgumentContext.java:328) at org.eclipse.xtext.common.types.util.TypeArgumentContext$CopyingTypeReferenceVisitor.doVisitParameterizedTypeReference(TypeArgumentContext.java:1) at org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImplCustom.accept(JvmParameterizedTypeReferenceImplCustom.java:59) at org.eclipse.xtext.common.types.util.AbstractTypeReferenceVisitorWithParameter.visit(AbstractTypeReferenceVisitorWithParameter.java:32) at org.eclipse.xtext.common.types.util.TypeArgumentContext$CopyingTypeReferenceVisitor.doVisitParameterizedTypeReference(TypeArgumentContext.java:99) at org.eclipse.xtext.common.types.util.TypeArgumentContext$2.doVisitParameterizedTypeReference(TypeArgumentContext.java:328) at org.eclipse.xtext.common.types.util.TypeArgumentContext$CopyingTypeReferenceVisitor.doVisitParameterizedTypeReference(TypeArgumentContext.java:1) at org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImplCustom.accept(JvmParameterizedTypeReferenceImplCustom.java:59) at org.eclipse.xtext.common.types.util.AbstractTypeReferenceVisitorWithParameter.visit(AbstractTypeReferenceVisitorWithParameter.java:32) at org.eclipse.xtext.common.types.util.TypeArgumentContext$CopyingTypeReferenceVisitor.doVisitParameterizedTypeReference(TypeArgumentContext.java:106) at org.eclipse.xtext.common.types.util.TypeArgumentContext$2.doVisitParameterizedTypeReference(TypeArgumentContext.java:328) at org.eclipse.xtext.common.types.util.TypeArgumentContext$CopyingTypeReferenceVisitor.doVisitParameterizedTypeReference(TypeArgumentContext.java:1) at org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImplCustom.accept(JvmParameterizedTypeReferenceImplCustom.java:59)
I think we should close this one as I don't have a clue on what code snippet may have caused this one. Please reopen if you can reproduce it.
Encountered this using Xtend 2.3.1.v201208210947 on Eclipse 3.8.1.M20120914-1540! I propose reopening this issue. The cause is a "self-referencing" type argument. abstract class AbstractFoo<A, B> { } class Foo<A> extends AbstractFoo<A, Foo<A>> { def Foo<A> foo() { new Foo<A> } } The exact exception is: java.lang.StackOverflowError at java.util.HashMap.put(HashMap.java:402) at com.google.common.collect.ForwardingMap.put(ForwardingMap.java:106) at org.eclipse.xtext.common.types.util.TypeArgumentContextProvider$PrimitiveAwareMap.put(TypeArgumentContextProvider.java:86) at org.eclipse.xtext.common.types.util.TypeArgumentContextProvider$5.put(TypeArgumentContextProvider.java:645) at org.eclipse.xtext.common.types.util.TypeArgumentContextProvider$PrimitiveAwareMap.put(TypeArgumentContextProvider.java:1) at org.eclipse.xtext.common.types.util.TypeArgumentContextProvider$1.doVisitParameterizedTypeReference(TypeArgumentContextProvider.java:245) at org.eclipse.xtext.common.types.util.TypeArgumentContextProvider$1.doVisitParameterizedTypeReference(TypeArgumentContextProvider.java:1) at org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImplCustom.accept(JvmParameterizedTypeReferenceImplCustom.java:53) at org.eclipse.xtext.common.types.util.AbstractTypeReferenceVisitor.visit(AbstractTypeReferenceVisitor.java:32) at org.eclipse.xtext.common.types.util.TypeArgumentContextProvider$1.doVisitParameterizedTypeReference(TypeArgumentContextProvider.java:275) at ...infinite recursion starts here...
reopening as suggested in comment #2
Seems fixed in 2.4.2, please close.
see comment #4
I believe this is not fully fixed yet. I just encountered the following stacktrace in 2.4.2.v201306120542: > java.lang.StackOverflowError > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.getBoundTypeArgument(TypeParameterSubstitutor.java:118) > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.doVisitParameterizedTypeReference(TypeParameterSubstitutor.java:100) > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.doVisitParameterizedTypeReference(TypeParameterSubstitutor.java:1) > at org.eclipse.xtext.xbase.typesystem.references.ParameterizedTypeReference.accept(ParameterizedTypeReference.java:393) > at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference.accept(LightweightTypeReference.java:524) > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.visitTypeArgument(TypeParameterSubstitutor.java:91) > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.visitTypeArgument(TypeParameterSubstitutor.java:84) > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.doVisitParameterizedTypeReference(TypeParameterSubstitutor.java:110) > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.doVisitParameterizedTypeReference(TypeParameterSubstitutor.java:104) > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.doVisitParameterizedTypeReference(TypeParameterSubstitutor.java:1) > at org.eclipse.xtext.xbase.typesystem.references.ParameterizedTypeReference.accept(ParameterizedTypeReference.java:393) > at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference.accept(LightweightTypeReference.java:524) > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.getBoundTypeArgument(TypeParameterSubstitutor.java:122) > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.doVisitParameterizedTypeReference(TypeParameterSubstitutor.java:100) > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.doVisitParameterizedTypeReference(TypeParameterSubstitutor.java:1) > at org.eclipse.xtext.xbase.typesystem.references.ParameterizedTypeReference.accept(ParameterizedTypeReference.java:393) > at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference.accept(LightweightTypeReference.java:524) > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.visitTypeArgument(TypeParameterSubstitutor.java:91) > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.visitTypeArgument(TypeParameterSubstitutor.java:84) > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.doVisitParameterizedTypeReference(TypeParameterSubstitutor.java:110) > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.doVisitParameterizedTypeReference(TypeParameterSubstitutor.java:104) > at org.eclipse.xtext.xbase.typesystem.util.TypeParameterSubstitutor.doVisitParameterizedTypeReference(TypeParameterSubstitutor.java:1) > at org.eclipse.xtext.xbase.typesystem.references.ParameterizedTypeReference.accept(ParameterizedTypeReference.java:393) > at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReference.accept(LightweightTypeReference.java:524) > // continues to loop back and forth... This is caused by the following setup: Two java interfaces with self-referential parameters: > public interface HierarchyElement<T extends HierarchyElement<T>> { > int getDepth(); > } > > public interface Foo<T extends HierarchyElement<T>> { > foo(T hierarchyElement); > } One Xtend class with anonymous lambda implementations: > final class Foos { > public static val Foo<?> BAR = [ > println(it.depth) > ]
Requested via bug 522520. -M.