Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

StackOverflowError in JDTTreeBuilder.ReferenceBuilder.getTypeReference() #408

Closed
Andy1605 opened this issue Nov 17, 2015 · 3 comments
Closed

Comments

@Andy1605
Copy link

Hi there,

I was recently experiencing a strange behavior of the ReferenceBuilder in JDTTreeBuilder when i tried to convert this class:

public class EnumValue  {

    public EnumValue() 
    {
    }

    //...

    public <T extends Enum<T>> T asEnum() //StackOverflow when referenced
    {        
        return null;
    }

    public Object unwrap()
    {
      return asEnum();
    }
}

As soon as i have a reference to the method public <T extends Enum<T>> T asEnum() as seen in the unwrap() method, i get a StackOverflow error in getTypeReference() due to a infinite recursion.
I am using the stable Version 4.4.0 of spoon.

Here is the stack trace (which wont be very useful i suppose):
Exception in thread "main" java.lang.StackOverflowError
at spoon.reflect.factory.FactoryImpl.dedup(FactoryImpl.java:310)
at spoon.support.reflect.reference.CtReferenceImpl.setSimpleName(CtReferenceImpl.java:75)
at spoon.support.compiler.jdt.JDTTreeBuilder$ReferenceBuilder.getTypeReference(JDTTreeBuilder.java:486)
at spoon.support.compiler.jdt.JDTTreeBuilder$ReferenceBuilder.getTypeReference(JDTTreeBuilder.java:562)
at spoon.support.compiler.jdt.JDTTreeBuilder$ReferenceBuilder.getTypeReference(JDTTreeBuilder.java:501)
at spoon.support.compiler.jdt.JDTTreeBuilder$ReferenceBuilder.getTypeReference(JDTTreeBuilder.java:562)
at spoon.support.compiler.jdt.JDTTreeBuilder$ReferenceBuilder.getTypeReference(JDTTreeBuilder.java:501)
at spoon.support.compiler.jdt.JDTTreeBuilder$ReferenceBuilder.getTypeReference(JDTTreeBuilder.java:562)
at spoon.support.compiler.jdt.JDTTreeBuilder$ReferenceBuilder.getTypeReference(JDTTreeBuilder.java:501)
at spoon.support.compiler.jdt.JDTTreeBuilder$ReferenceBuilder.getTypeReference(JDTTreeBuilder.java:562)
at spoon.support.compiler.jdt.JDTTreeBuilder$ReferenceBuilder.getTypeReference(JDTTreeBuilder.java:501)
at spoon.support.compiler.jdt.JDTTreeBuilder$ReferenceBuilder.getTypeReference(JDTTreeBuilder.java:562)
at spoon.support.compiler.jdt.JDTTreeBuilder$ReferenceBuilder.getTypeReference(JDTTreeBuilder.java:501)
at spoon.support.compiler.jdt.JDTTreeBuilder$ReferenceBuilder.getTypeReference(JDTTreeBuilder.java:562)
at spoon.support.compiler.jdt.JDTTreeBuilder$ReferenceBuilder.getTypeReference(JDTTreeBuilder.java:501)
at spoon.support.compiler.jdt.JDTTreeBuilder$ReferenceBuilder.getTypeReference(JDTTreeBuilder.java:562)
....

Sincerely,
Andreas

@GerardPaligot
Copy link
Contributor

Hi @Andy1605,

Thanks for your report. It is weird because we have already encountered this problem and we have a test case about it here.

I'll check your issue soon and I'll come back to you to give you a feedback!

@GerardPaligot
Copy link
Contributor

The bug is confirmed and the PR is done here.

@GerardPaligot
Copy link
Contributor

The version 4.4.1 is on the way for Maven Central and contains this bug fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants