type info for tuples and functions
This commit is contained in:
@@ -13,6 +13,7 @@ import org.jetbrains.jet.lang.psi.JetFunctionLiteralExpression;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
import org.jetbrains.jet.lang.types.ProjectionErasingJetType;
|
||||
import org.objectweb.asm.ClassVisitor;
|
||||
import org.objectweb.asm.MethodVisitor;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
@@ -117,7 +118,7 @@ public class ClosureCodegen {
|
||||
final Type enclosingType = context.enclosingClassType(state.getTypeMapper());
|
||||
if (enclosingType == null) captureThis = false;
|
||||
|
||||
final Method constructor = generateConstructor(funClass, captureThis);
|
||||
final Method constructor = generateConstructor(funClass, captureThis, funDescriptor.getReturnType());
|
||||
|
||||
if (captureThis) {
|
||||
cv.visitField(Opcodes.ACC_PRIVATE, "this$0", enclosingType.getDescriptor(), null, null);
|
||||
@@ -175,7 +176,7 @@ public class ClosureCodegen {
|
||||
mv.visitEnd();
|
||||
}
|
||||
|
||||
private Method generateConstructor(String funClass, boolean captureThis) {
|
||||
private Method generateConstructor(String funClass, boolean captureThis, JetType returnType) {
|
||||
int argCount = closure.size();
|
||||
|
||||
if (captureThis) {
|
||||
@@ -199,9 +200,11 @@ public class ClosureCodegen {
|
||||
final MethodVisitor mv = cv.visitMethod(Opcodes.ACC_PUBLIC, "<init>", constructor.getDescriptor(), null, new String[0]);
|
||||
mv.visitCode();
|
||||
InstructionAdapter iv = new InstructionAdapter(mv);
|
||||
ExpressionCodegen expressionCodegen = new ExpressionCodegen(mv, null, Type.VOID_TYPE, context, state);
|
||||
|
||||
iv.load(0, Type.getObjectType(funClass));
|
||||
iv.invokespecial(funClass, "<init>", "()V");
|
||||
expressionCodegen.generateTypeInfo(new ProjectionErasingJetType(returnType));
|
||||
iv.invokespecial(funClass, "<init>", "(Ljet/typeinfo/TypeInfo;)V");
|
||||
|
||||
i = 1;
|
||||
for (Type type : argTypes) {
|
||||
|
||||
@@ -2318,7 +2318,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
|
||||
|
||||
final String className = "jet/Tuple" + entries.size();
|
||||
Type tupleType = Type.getObjectType(className);
|
||||
StringBuilder signature = new StringBuilder("(");
|
||||
StringBuilder signature = new StringBuilder("(Ljet/typeinfo/TypeInfo;");
|
||||
for (int i = 0; i != entries.size(); ++i) {
|
||||
signature.append("Ljava/lang/Object;");
|
||||
}
|
||||
@@ -2326,6 +2326,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
|
||||
|
||||
v.anew(tupleType);
|
||||
v.dup();
|
||||
generateTypeInfo(new ProjectionErasingJetType(bindingContext.get(BindingContext.EXPRESSION_TYPE, expression)));
|
||||
for (JetExpression entry : entries) {
|
||||
gen(entry, OBJECT_TYPE);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
package org.jetbrains.jet.lang.types;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author alex.tkachman
|
||||
*
|
||||
* Utility class used by back-end to
|
||||
*/
|
||||
public class ProjectionErasingJetType implements JetType {
|
||||
private final JetType delegate;
|
||||
private List<TypeProjection> arguments;
|
||||
|
||||
public ProjectionErasingJetType(JetType delegate) {
|
||||
this.delegate = delegate;
|
||||
arguments = new ArrayList<TypeProjection>();
|
||||
for(TypeProjection tp : delegate.getArguments()) {
|
||||
arguments.add(new TypeProjection(Variance.INVARIANT, tp.getType()));
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public TypeConstructor getConstructor() {
|
||||
return delegate.getConstructor();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<TypeProjection> getArguments() {
|
||||
return arguments;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNullable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public JetScope getMemberScope() {
|
||||
return delegate.getMemberScope();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AnnotationDescriptor> getAnnotations() {
|
||||
return delegate.getAnnotations();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return delegate.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return ((obj instanceof ProjectionErasingJetType) && delegate.equals(((ProjectionErasingJetType)obj).delegate)) || delegate.equals(obj);
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ package org.jetbrains.jet.codegen;
|
||||
public class ClosuresGenTest extends CodegenTestCase {
|
||||
public void testSimplestClosure() throws Exception {
|
||||
blackBoxFile("classes/simplestClosure.jet");
|
||||
System.out.println(generateToText());
|
||||
}
|
||||
|
||||
public void testSimplestClosureAndBoxing() throws Exception {
|
||||
|
||||
@@ -2,6 +2,8 @@ package org.jetbrains.jet.codegen;
|
||||
|
||||
import jet.IntRange;
|
||||
import jet.Tuple2;
|
||||
import jet.Tuple3;
|
||||
import jet.Tuple4;
|
||||
import jet.typeinfo.TypeInfo;
|
||||
import org.jetbrains.jet.parsing.JetParsingTest;
|
||||
|
||||
@@ -9,6 +11,7 @@ import java.awt.*;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @author yole
|
||||
@@ -489,12 +492,23 @@ public class NamespaceGenTest extends CodegenTestCase {
|
||||
|
||||
public void testTupleLiteral() throws Exception {
|
||||
loadText("fun foo() = (1, \"foo\")");
|
||||
System.out.println(generateToText());
|
||||
final Method main = generateFunction();
|
||||
Tuple2 tuple2 = (Tuple2) main.invoke(null);
|
||||
assertEquals(1, tuple2._1);
|
||||
assertEquals("foo", tuple2._2);
|
||||
}
|
||||
|
||||
public void testParametrizedTupleLiteral() throws Exception {
|
||||
loadText("fun <E,D> E.foo(extra: java.util.List<D>) = (1, \"foo\", this, extra)");
|
||||
System.out.println(generateToText());
|
||||
final Method main = generateFunction();
|
||||
Tuple4 tuple4 = (Tuple4) main.invoke(null, "aaa", Arrays.asList(10), TypeInfo.STRING_TYPE_INFO, TypeInfo.INT_TYPE_INFO);
|
||||
assertEquals(1, tuple4._1);
|
||||
assertEquals("foo", tuple4._2);
|
||||
assertEquals("aaa", tuple4._3);
|
||||
}
|
||||
|
||||
public void testPredicateOperator() throws Exception {
|
||||
loadText("fun foo(s: String) = s?startsWith(\"J\")");
|
||||
final Method main = generateFunction();
|
||||
|
||||
@@ -90,13 +90,13 @@ public class PatternMatchingTest extends CodegenTestCase {
|
||||
Method foo = generateFunction();
|
||||
final Object result;
|
||||
try {
|
||||
result = foo.invoke(null, new Tuple2<Integer, Integer>(1, 2));
|
||||
result = foo.invoke(null, new Tuple2<Integer, Integer>(null, 1, 2));
|
||||
} catch (Exception e) {
|
||||
System.out.println(generateToText());
|
||||
throw e;
|
||||
}
|
||||
assertEquals("one,two", result);
|
||||
assertEquals("something", foo.invoke(null, new Tuple2<String, String>("not", "tuple")));
|
||||
assertEquals("something", foo.invoke(null, new Tuple2<String, String>(null, "not", "tuple")));
|
||||
}
|
||||
|
||||
public void testCall() throws Exception {
|
||||
@@ -119,8 +119,8 @@ public class PatternMatchingTest extends CodegenTestCase {
|
||||
public void testNames() throws Exception {
|
||||
loadText("fun foo(x: (Any, Any)) = when(x) { is (val a is String, *) => a; else => \"something\" }");
|
||||
Method foo = generateFunction();
|
||||
assertEquals("JetBrains", foo.invoke(null, new Tuple2<String, String>("JetBrains", "s.r.o.")));
|
||||
assertEquals("something", foo.invoke(null, new Tuple2<Integer, Integer>(1, 2)));
|
||||
assertEquals("JetBrains", foo.invoke(null, new Tuple2<String, String>(null, "JetBrains", "s.r.o.")));
|
||||
assertEquals("something", foo.invoke(null, new Tuple2<Integer, Integer>(null, 1, 2)));
|
||||
}
|
||||
|
||||
public void testMultipleConditions() throws Exception {
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package jet;
|
||||
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
/**
|
||||
* @author alex.tkachman
|
||||
*/
|
||||
public class DefaultJetObject implements JetObject {
|
||||
private TypeInfo<?> typeInfo;
|
||||
|
||||
protected DefaultJetObject(TypeInfo<?> typeInfo) {
|
||||
this.typeInfo = typeInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypeInfo<?> getTypeInfo() {
|
||||
return typeInfo;
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,13 @@
|
||||
*/
|
||||
package jet;
|
||||
|
||||
public abstract class ExtensionFunction0<E, R> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public abstract class ExtensionFunction0<E, R> extends DefaultJetObject{
|
||||
protected ExtensionFunction0(TypeInfo<?> typeInfo) {
|
||||
super(typeInfo);
|
||||
}
|
||||
|
||||
public abstract R invoke(E receiver);
|
||||
|
||||
@Override
|
||||
|
||||
@@ -3,7 +3,13 @@
|
||||
*/
|
||||
package jet;
|
||||
|
||||
public abstract class ExtensionFunction1<E, D, R> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public abstract class ExtensionFunction1<E, D, R> extends DefaultJetObject{
|
||||
protected ExtensionFunction1(TypeInfo<?> typeInfo) {
|
||||
super(typeInfo);
|
||||
}
|
||||
|
||||
public abstract R invoke(E receiver, D d);
|
||||
|
||||
@Override
|
||||
|
||||
@@ -3,7 +3,13 @@
|
||||
*/
|
||||
package jet;
|
||||
|
||||
public abstract class ExtensionFunction2<E, D1, D2, R> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public abstract class ExtensionFunction2<E, D1, D2, R> extends DefaultJetObject{
|
||||
protected ExtensionFunction2(TypeInfo<?> typeInfo) {
|
||||
super(typeInfo);
|
||||
}
|
||||
|
||||
public abstract R invoke(E receiver, D1 d1, D2 d2);
|
||||
|
||||
@Override
|
||||
|
||||
@@ -3,7 +3,13 @@
|
||||
*/
|
||||
package jet;
|
||||
|
||||
public abstract class ExtensionFunction3<E, D1, D2, D3, R> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public abstract class ExtensionFunction3<E, D1, D2, D3, R> extends DefaultJetObject{
|
||||
protected ExtensionFunction3(TypeInfo<?> typeInfo) {
|
||||
super(typeInfo);
|
||||
}
|
||||
|
||||
public abstract R invoke(E receiver, D1 d1, D2 d2, D3 d3);
|
||||
|
||||
@Override
|
||||
|
||||
@@ -3,7 +3,13 @@
|
||||
*/
|
||||
package jet;
|
||||
|
||||
public abstract class Function0<R> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public abstract class Function0<R> extends DefaultJetObject {
|
||||
protected Function0(TypeInfo<?> typeInfo) {
|
||||
super(typeInfo);
|
||||
}
|
||||
|
||||
public abstract R invoke();
|
||||
|
||||
@Override
|
||||
|
||||
@@ -3,7 +3,13 @@
|
||||
*/
|
||||
package jet;
|
||||
|
||||
public abstract class Function1<D, R> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public abstract class Function1<D, R> extends DefaultJetObject {
|
||||
protected Function1(TypeInfo<?> typeInfo) {
|
||||
super(typeInfo);
|
||||
}
|
||||
|
||||
public abstract R invoke(D d);
|
||||
|
||||
@Override
|
||||
|
||||
@@ -3,7 +3,13 @@
|
||||
*/
|
||||
package jet;
|
||||
|
||||
public abstract class Function2<D1, D2, R> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public abstract class Function2<D1, D2, R> extends DefaultJetObject {
|
||||
protected Function2(TypeInfo<?> typeInfo) {
|
||||
super(typeInfo);
|
||||
}
|
||||
|
||||
public abstract R invoke(D1 d1, D2 d2);
|
||||
|
||||
@Override
|
||||
|
||||
@@ -3,7 +3,13 @@
|
||||
*/
|
||||
package jet;
|
||||
|
||||
public abstract class Function3<D1, D2, D3, R> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public abstract class Function3<D1, D2, D3, R> extends DefaultJetObject{
|
||||
protected Function3(TypeInfo<?> typeInfo) {
|
||||
super(typeInfo);
|
||||
}
|
||||
|
||||
public abstract R invoke(D1 d1, D2 d2, D3 d3);
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
package jet;
|
||||
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
/**
|
||||
* @author alex.tkachman
|
||||
*/
|
||||
public class Tuple0 {
|
||||
public class Tuple0 implements JetObject {
|
||||
public static final Tuple0 INSTANCE = new Tuple0();
|
||||
private static final TypeInfo<?> typeInfo = TypeInfo.getTypeInfo(Tuple0.class, false);
|
||||
|
||||
private Tuple0() {
|
||||
}
|
||||
@@ -23,4 +26,9 @@ public class Tuple0 {
|
||||
public int hashCode() {
|
||||
return 239;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypeInfo<?> getTypeInfo() {
|
||||
return typeInfo;
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,12 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple1<T1> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple1<T1> extends DefaultJetObject {
|
||||
public final T1 _1;
|
||||
|
||||
public Tuple1(T1 t1) {
|
||||
public Tuple1(TypeInfo typeInfo, T1 t1) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> extends DefaultJetObject{
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -12,7 +14,8 @@ public class Tuple10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> {
|
||||
public final T9 _9;
|
||||
public final T10 _10;
|
||||
|
||||
public Tuple10(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10) {
|
||||
public Tuple10(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> extends DefaultJetObject{
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -13,7 +15,8 @@ public class Tuple11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> {
|
||||
public final T10 _10;
|
||||
public final T11 _11;
|
||||
|
||||
public Tuple11(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11) {
|
||||
public Tuple11(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> extends DefaultJetObject {
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -14,7 +16,8 @@ public class Tuple12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> {
|
||||
public final T11 _11;
|
||||
public final T12 _12;
|
||||
|
||||
public Tuple12(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12) {
|
||||
public Tuple12(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> extends DefaultJetObject{
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -15,7 +17,8 @@ public class Tuple13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> {
|
||||
public final T12 _12;
|
||||
public final T13 _13;
|
||||
|
||||
public Tuple13(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13) {
|
||||
public Tuple13(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> extends DefaultJetObject{
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -16,7 +18,8 @@ public class Tuple14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
|
||||
public final T13 _13;
|
||||
public final T14 _14;
|
||||
|
||||
public Tuple14(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14) {
|
||||
public Tuple14(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> extends DefaultJetObject {
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -17,7 +19,8 @@ public class Tuple15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
|
||||
public final T14 _14;
|
||||
public final T15 _15;
|
||||
|
||||
public Tuple15(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15) {
|
||||
public Tuple15(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> extends DefaultJetObject {
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -18,7 +20,8 @@ public class Tuple16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
|
||||
public final T15 _15;
|
||||
public final T16 _16;
|
||||
|
||||
public Tuple16(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16) {
|
||||
public Tuple16(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> extends DefaultJetObject {
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -19,7 +21,8 @@ public class Tuple17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
|
||||
public final T16 _16;
|
||||
public final T17 _17;
|
||||
|
||||
public Tuple17(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17) {
|
||||
public Tuple17(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> extends DefaultJetObject{
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -20,7 +22,8 @@ public class Tuple18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
|
||||
public final T17 _17;
|
||||
public final T18 _18;
|
||||
|
||||
public Tuple18(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18) {
|
||||
public Tuple18(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> extends DefaultJetObject {
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -21,7 +23,8 @@ public class Tuple19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
|
||||
public final T18 _18;
|
||||
public final T19 _19;
|
||||
|
||||
public Tuple19(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19) {
|
||||
public Tuple19(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple2<T1, T2> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple2<T1, T2> extends DefaultJetObject {
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
|
||||
public Tuple2(T1 t1, T2 t2) {
|
||||
public Tuple2(TypeInfo typeInfo, T1 t1, T2 t2) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> extends DefaultJetObject{
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -22,7 +24,8 @@ public class Tuple20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
|
||||
public final T19 _19;
|
||||
public final T20 _20;
|
||||
|
||||
public Tuple20(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20) {
|
||||
public Tuple20(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> extends DefaultJetObject {
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -23,7 +25,8 @@ public class Tuple21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
|
||||
public final T20 _20;
|
||||
public final T21 _21;
|
||||
|
||||
public Tuple21(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20, T21 t21) {
|
||||
public Tuple21(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20, T21 t21) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> extends DefaultJetObject {
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -24,7 +26,8 @@ public class Tuple22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
|
||||
public final T21 _21;
|
||||
public final T22 _22;
|
||||
|
||||
public Tuple22(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20, T21 t21, T22 t22) {
|
||||
public Tuple22(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20, T21 t21, T22 t22) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple3<T1, T2, T3> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple3<T1, T2, T3> extends DefaultJetObject {
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
|
||||
public Tuple3(T1 t1, T2 t2, T3 t3) {
|
||||
public Tuple3(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple4<T1, T2, T3, T4> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple4<T1, T2, T3, T4> extends DefaultJetObject {
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
public final T4 _4;
|
||||
|
||||
public Tuple4(T1 t1, T2 t2, T3 t3, T4 t4) {
|
||||
public Tuple4(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple5<T1, T2, T3, T4, T5> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple5<T1, T2, T3, T4, T5> extends DefaultJetObject{
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
public final T4 _4;
|
||||
public final T5 _5;
|
||||
|
||||
public Tuple5(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) {
|
||||
public Tuple5(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple6<T1, T2, T3, T4, T5, T6> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple6<T1, T2, T3, T4, T5, T6> extends DefaultJetObject {
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -8,7 +10,8 @@ public class Tuple6<T1, T2, T3, T4, T5, T6> {
|
||||
public final T5 _5;
|
||||
public final T6 _6;
|
||||
|
||||
public Tuple6(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6) {
|
||||
public Tuple6(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple7<T1, T2, T3, T4, T5, T6, T7> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple7<T1, T2, T3, T4, T5, T6, T7> extends DefaultJetObject{
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -9,7 +11,8 @@ public class Tuple7<T1, T2, T3, T4, T5, T6, T7> {
|
||||
public final T6 _6;
|
||||
public final T7 _7;
|
||||
|
||||
public Tuple7(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7) {
|
||||
public Tuple7(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple8<T1, T2, T3, T4, T5, T6, T7, T8> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple8<T1, T2, T3, T4, T5, T6, T7, T8> extends DefaultJetObject{
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -10,7 +12,8 @@ public class Tuple8<T1, T2, T3, T4, T5, T6, T7, T8> {
|
||||
public final T7 _7;
|
||||
public final T8 _8;
|
||||
|
||||
public Tuple8(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8) {
|
||||
public Tuple8(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package jet;
|
||||
|
||||
public class Tuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9> {
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public class Tuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9> extends DefaultJetObject{
|
||||
public final T1 _1;
|
||||
public final T2 _2;
|
||||
public final T3 _3;
|
||||
@@ -11,7 +13,8 @@ public class Tuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9> {
|
||||
public final T8 _8;
|
||||
public final T9 _9;
|
||||
|
||||
public Tuple9(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9) {
|
||||
public Tuple9(TypeInfo typeInfo, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9) {
|
||||
super(typeInfo);
|
||||
_1 = t1;
|
||||
_2 = t2;
|
||||
_3 = t3;
|
||||
|
||||
@@ -22,7 +22,7 @@ public abstract class TypeInfo<T> implements JetObject {
|
||||
public static final TypeInfo<Integer> INT_TYPE_INFO = getTypeInfo(Integer.class, false);
|
||||
public static final TypeInfo<Long> LONG_TYPE_INFO = getTypeInfo(Long.class, false);
|
||||
public static final TypeInfo<Character> CHAR_TYPE_INFO = getTypeInfo(Character.class, false);
|
||||
public static final TypeInfo<Boolean> BOOL_TYPE_INFO = getTypeInfo(Boolean.class, false);
|
||||
public static final TypeInfo<Boolean> BOOLEAN_TYPE_INFO = getTypeInfo(Boolean.class, false);
|
||||
public static final TypeInfo<Float> FLOAT_TYPE_INFO = getTypeInfo(Float.class, false);
|
||||
public static final TypeInfo<Double> DOUBLE_TYPE_INFO = getTypeInfo(Double.class, false);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user