rpau / javalang-compiler

Java compiler elements (symbol and type tables) to perform code semantic analysis
GNU Lesser General Public License v3.0
10 stars 4 forks source link

StackOverflowError on error reporting of recursive type #13

Closed cal101 closed 8 years ago

cal101 commented 8 years ago

Moved from https://github.com/walkmod/walkmod-override-plugin/issues/6

On error reporting a reference to

public interface Mixin<T extends Mixin> extends Serializable {
...
}

the following happens

ERROR [main] - TRANSFORMATION CHAIN (default) FAILS
An exeception has been produced during the null transformation - org.walkmod.util.location.LocationImpl@1863d2fe
    at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.walkmod.walkers.AbstractWalker.walk(AbstractWalker.java:250)
    at org.walkmod.walkers.AbstractWalker.execute(AbstractWalker.java:265)
    at org.walkmod.javalang.walkers.DefaultJavaWalker.execute(DefaultJavaWalker.java:158)
    at org.walkmod.impl.DefaultChainWalkerInvocation.invoke(DefaultChainWalkerInvocation.java:41)
    at org.walkmod.impl.DefaultChainInvocation.invoke(DefaultChainInvocation.java:38)
    at org.walkmod.impl.DefaultChainAdapter.execute(DefaultChainAdapter.java:165)
    at org.walkmod.WalkModFacade.executeAllChains(WalkModFacade.java:911)
    at org.walkmod.WalkModFacade.apply(WalkModFacade.java:376)
    at org.walkmod.commands.ApplyCommand.execute(ApplyCommand.java:40)
    at org.walkmod.WalkModDispatcher.execute(WalkModDispatcher.java:171)
    at org.walkmod.WalkModDispatcher.main(WalkModDispatcher.java:196)
Caused by: java.lang.reflect.InvocationTargetException
    ... 14 more
Caused by: Error processing the analysis of [.../XXX.java] - org.walkmod.util.location.LocationImpl@55c53a33
    at java.lang.StringBuffer.append(StringBuffer.java:272)
    at org.walkmod.javalang.compiler.symbols.SymbolType.toString(SymbolType.java:420)
    at org.walkmod.javalang.compiler.symbols.SymbolType.toString(SymbolType.java:426)
    at org.walkmod.javalang.compiler.symbols.SymbolType.toString(SymbolType.java:426)
    at org.walkmod.javalang.compiler.symbols.SymbolType.toString(SymbolType.java:426)
...
    at org.walkmod.javalang.compiler.symbols.SymbolType.toString(SymbolType.java:426)
Caused by: java.lang.StackOverflowError
    ... 1024 more
rpau commented 8 years ago

Test added in commit d140b5f6eab99c5a0aed38a115d6cc05048d48bf