toString() for FunctionN classes

It's implemented as if the types were reified: getting the real type parameters
of the corresponding FunctionN class
This commit is contained in:
Alexander Udalov
2013-03-25 21:57:41 +04:00
parent 0ec1f20140
commit 76fa9642f0
50 changed files with 228 additions and 3 deletions
@@ -308,14 +308,15 @@ public class ClosureCodegen extends GenerationStateAware {
signatureWriter.visitArrayType();
rawRetType = rawRetType.getElementType();
}
if (rawRetType.getSort() == Type.OBJECT) {
signatureWriter.visitClassType(rawRetType.getInternalName());
signatureWriter.visitEnd();
}
else {
// rawRetType is primitive
assert isPrimitive(rawRetType);
signatureWriter.visitBaseType(rawRetType.getDescriptor().charAt(0));
}
signatureWriter.visitEnd();
}
private static FunctionDescriptor getInvokeFunction(FunctionDescriptor funDescriptor) {
@@ -0,0 +1,28 @@
fun check(expected: String, obj: Any?) {
val actual = obj.toString()
if (actual != expected)
throw AssertionError("Expected: $expected, actual: $actual")
}
fun box(): String {
check("jet.FunctionImpl0<jet.Unit>")
{ () : Unit -> }
check("jet.FunctionImpl0<java.lang.Integer>")
{ () : Int -> 42 }
check("jet.FunctionImpl1<java.lang.String, java.lang.Long>")
{ (s: String) : Long -> 42.toLong() }
check("jet.FunctionImpl2<java.lang.Integer, java.lang.Integer, jet.Unit>")
{ (x: Int, y: Int) : Unit -> }
check("jet.ExtensionFunctionImpl0<java.lang.Integer, jet.Unit>")
{ Int.() : Unit -> }
check("jet.ExtensionFunctionImpl0<jet.Unit, java.lang.Integer>")
{ Unit.() : Int -> 42 }
check("jet.ExtensionFunctionImpl1<java.lang.String, java.lang.String, java.lang.Long>")
{ String.(s: String) : Long -> 42.toLong() }
check("jet.ExtensionFunctionImpl2<java.lang.Integer, java.lang.Integer, java.lang.Integer, jet.Unit>")
{ Int.(x: Int, y: Int) : Unit -> }
return "OK"
}
@@ -1764,6 +1764,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
doTest("compiler/testData/codegen/box/functions/functionExpression.kt");
}
@TestMetadata("functionNtoString.kt")
public void testFunctionNtoString() throws Exception {
doTest("compiler/testData/codegen/box/functions/functionNtoString.kt");
}
@TestMetadata("invoke.kt")
public void testInvoke() throws Exception {
doTest("compiler/testData/codegen/box/functions/invoke.kt");
@@ -123,10 +123,17 @@ public class GenerateFunctions {
out.print(" implements " + kind.getClassName(i));
generateTypeParameters(out, i, kind);
out.println(" {");
// TODO: toString()
generateToStringForFunctionImpl(out);
out.println("}");
}
private static void generateToStringForFunctionImpl(PrintStream out) {
out.println(" @Override");
out.println(" public String toString() {");
out.println(" return getClass().getGenericSuperclass().toString();");
out.println(" }");
}
private static void generateRuntimeClassHeader(PrintStream out) {
try {
out.println(FileUtil.loadFile(new File("injector-generator/copyright.txt")));
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl0<T, R> extends DefaultJetObject implements ExtensionFunction0<T, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl1<T, P1, R> extends DefaultJetObject implements ExtensionFunction1<T, P1, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl10<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, R> extends DefaultJetObject implements ExtensionFunction10<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl11<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, R> extends DefaultJetObject implements ExtensionFunction11<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl12<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, R> extends DefaultJetObject implements ExtensionFunction12<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl13<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, R> extends DefaultJetObject implements ExtensionFunction13<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl14<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, R> extends DefaultJetObject implements ExtensionFunction14<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl15<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, R> extends DefaultJetObject implements ExtensionFunction15<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl16<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, R> extends DefaultJetObject implements ExtensionFunction16<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl17<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, R> extends DefaultJetObject implements ExtensionFunction17<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl18<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, R> extends DefaultJetObject implements ExtensionFunction18<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl19<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, R> extends DefaultJetObject implements ExtensionFunction19<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl2<T, P1, P2, R> extends DefaultJetObject implements ExtensionFunction2<T, P1, P2, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl20<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, R> extends DefaultJetObject implements ExtensionFunction20<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl21<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, R> extends DefaultJetObject implements ExtensionFunction21<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl22<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, R> extends DefaultJetObject implements ExtensionFunction22<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl3<T, P1, P2, P3, R> extends DefaultJetObject implements ExtensionFunction3<T, P1, P2, P3, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl4<T, P1, P2, P3, P4, R> extends DefaultJetObject implements ExtensionFunction4<T, P1, P2, P3, P4, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl5<T, P1, P2, P3, P4, P5, R> extends DefaultJetObject implements ExtensionFunction5<T, P1, P2, P3, P4, P5, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl6<T, P1, P2, P3, P4, P5, P6, R> extends DefaultJetObject implements ExtensionFunction6<T, P1, P2, P3, P4, P5, P6, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl7<T, P1, P2, P3, P4, P5, P6, P7, R> extends DefaultJetObject implements ExtensionFunction7<T, P1, P2, P3, P4, P5, P6, P7, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl8<T, P1, P2, P3, P4, P5, P6, P7, P8, R> extends DefaultJetObject implements ExtensionFunction8<T, P1, P2, P3, P4, P5, P6, P7, P8, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
@@ -17,4 +17,8 @@
package jet;
public abstract class ExtensionFunctionImpl9<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, R> extends DefaultJetObject implements ExtensionFunction9<T, P1, P2, P3, P4, P5, P6, P7, P8, P9, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl0<R> extends DefaultJetObject implements Function0<R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl1<P1, R> extends DefaultJetObject implements Function1<P1, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl10<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, R> extends DefaultJetObject implements Function10<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl11<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, R> extends DefaultJetObject implements Function11<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl12<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, R> extends DefaultJetObject implements Function12<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl13<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, R> extends DefaultJetObject implements Function13<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl14<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, R> extends DefaultJetObject implements Function14<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, R> extends DefaultJetObject implements Function15<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl16<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, R> extends DefaultJetObject implements Function16<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl17<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, R> extends DefaultJetObject implements Function17<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl18<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, R> extends DefaultJetObject implements Function18<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl19<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, R> extends DefaultJetObject implements Function19<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl2<P1, P2, R> extends DefaultJetObject implements Function2<P1, P2, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl20<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, R> extends DefaultJetObject implements Function20<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl21<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, R> extends DefaultJetObject implements Function21<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl22<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, R> extends DefaultJetObject implements Function22<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl3<P1, P2, P3, R> extends DefaultJetObject implements Function3<P1, P2, P3, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl4<P1, P2, P3, P4, R> extends DefaultJetObject implements Function4<P1, P2, P3, P4, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl5<P1, P2, P3, P4, P5, R> extends DefaultJetObject implements Function5<P1, P2, P3, P4, P5, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl6<P1, P2, P3, P4, P5, P6, R> extends DefaultJetObject implements Function6<P1, P2, P3, P4, P5, P6, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl7<P1, P2, P3, P4, P5, P6, P7, R> extends DefaultJetObject implements Function7<P1, P2, P3, P4, P5, P6, P7, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl8<P1, P2, P3, P4, P5, P6, P7, P8, R> extends DefaultJetObject implements Function8<P1, P2, P3, P4, P5, P6, P7, P8, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}
+4
View File
@@ -17,4 +17,8 @@
package jet;
public abstract class FunctionImpl9<P1, P2, P3, P4, P5, P6, P7, P8, P9, R> extends DefaultJetObject implements Function9<P1, P2, P3, P4, P5, P6, P7, P8, P9, R> {
@Override
public String toString() {
return getClass().getGenericSuperclass().toString();
}
}