Created
November 22, 2011 21:50
-
-
Save etorreborre/1387113 to your computer and use it in GitHub Desktop.
An example of a non-terminating compilation with javac
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** from http://www.reddit.com/r/programming/comments/mlbna/scala_feels_like_ejb_2/c31z0co */ | |
interface Pong<T> {} | |
class Ping<T> implements Pong<Pong<? super Ping<Ping<T>>>> { | |
static void Ping() { | |
Pong<? super Ping<Long>> Ping = new Ping<Long>(); | |
} | |
} | |
> javac Ping.java | |
The system is out of resources. | |
Consult the following stack trace for details. | |
java.lang.StackOverflowError | |
at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:568) | |
at com.sun.tools.javac.code.Types$UnaryVisitor.visit(Types.java:3294) | |
at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2618) | |
at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2605) | |
at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:568) | |
at com.sun.tools.javac.code.Types$UnaryVisitor.visit(Types.java:3294) | |
at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2618) | |
at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2605) | |
at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:568) | |
at com.sun.tools.javac.code.Types$UnaryVisitor.visit(Types.java:3294) | |
at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2618) | |
at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2605) | |
at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:568) | |
at com.sun.tools.javac.code.Types$UnaryVisitor.visit(Types.java:3294) | |
at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2618) | |
at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2605) |
I have done this before for my little pet project JATL.
class <___>{}class <>extends <<?super **<<___>>>>{void (){<? super _<>>=new ___<**>();}}
class
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Fun with Generics