fix serialization of types in Read*BinaryClassTest

This commit is contained in:
Stepan Koltsov
2012-03-22 03:46:46 +04:00
parent a44272eeba
commit 921b601628
39 changed files with 92 additions and 95 deletions
@@ -1,5 +1,5 @@
namespace test
final class test.ClassWithTypeParameter</*0*/ P : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0*/ P : jet.Any?><init>(): test.ClassWithTypeParameter</*0*/ P : jet.Any?>
final /*constructor*/ fun </*0*/ P : jet.Any?><init>(): test.ClassWithTypeParameter<P>
}
@@ -1,5 +1,5 @@
namespace test
final class test.ClassWithTypeParameter</*0*/ P : jet.Any?, /*1*/ Q : P> : jet.Any {
final /*constructor*/ fun </*0*/ P : jet.Any?, /*1*/ Q : P><init>(): test.ClassWithTypeParameter</*0*/ P : jet.Any?, /*1*/ Q : P>
final /*constructor*/ fun </*0*/ P : jet.Any?, /*1*/ Q : P><init>(): test.ClassWithTypeParameter<P, Q>
}
@@ -1,5 +1,5 @@
namespace test
final class test.ClassWithTypePRefSelf</*0*/ P : java.lang.Enum<P>?> : jet.Any {
final /*constructor*/ fun </*0*/ P : java.lang.Enum<P>?><init>(): test.ClassWithTypePRefSelf</*0*/ P : java.lang.Enum<P>?>
final /*constructor*/ fun </*0*/ P : java.lang.Enum<P>?><init>(): test.ClassWithTypePRefSelf<P>
}
@@ -1,8 +1,8 @@
namespace test
open class test.Outer</*0*/ P : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0*/ P : jet.Any?><init>(): test.Outer</*0*/ P : jet.Any?>
final /*constructor*/ fun </*0*/ P : jet.Any?><init>(): test.Outer<P>
open class test.Outer.Inner</*0*/ Q : P> : jet.Any {
final /*constructor*/ fun </*0*/ Q : P><init>(): test.Outer.Inner</*0*/ Q : P>
final /*constructor*/ fun </*0*/ Q : P><init>(): test.Outer.Inner<Q>
}
}
@@ -1,7 +1,7 @@
namespace test
final class test.Outer</*0*/ P : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0*/ P : jet.Any?><init>(): test.Outer</*0*/ P : jet.Any?>
final /*constructor*/ fun </*0*/ P : jet.Any?><init>(): test.Outer<P>
final class test.Outer.Inner : jet.Any {
final /*constructor*/ fun <init>(): test.Outer.Inner
final fun </*0*/ Q : P>f(): jet.Tuple0
@@ -1,6 +1,6 @@
namespace test
open class test.MethodWithTypePRefClassP</*0*/ P : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0*/ P : jet.Any?><init>(): test.MethodWithTypePRefClassP</*0*/ P : jet.Any?>
final /*constructor*/ fun </*0*/ P : jet.Any?><init>(): test.MethodWithTypePRefClassP<P>
final fun </*0*/ Q : P>f(): jet.Tuple0
}
@@ -1,7 +1,7 @@
namespace test
open class test.JavaBeanVarOfGenericType</*0*/ P : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0*/ P : jet.Any?><init>(): test.JavaBeanVarOfGenericType</*0*/ P : jet.Any?>
open fun getCharacters(): java.util.ArrayList</*0*/ P : jet.Any?>?
final /*constructor*/ fun </*0*/ P : jet.Any?><init>(): test.JavaBeanVarOfGenericType<P>
open fun getCharacters(): java.util.ArrayList<P>?
open fun setCharacters(/*0*/ p0: java.util.ArrayList<P>?): jet.Tuple0
}
@@ -1,5 +1,5 @@
namespace test
final class test.Wine</*0,r*/ in T : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ in T : jet.Any?><init>(): test.Wine</*0,r*/ in T : jet.Any?>
final /*constructor*/ fun </*0,r*/ in T : jet.Any?><init>(): test.Wine<T>
}
@@ -1,5 +1,5 @@
namespace test
final class test.Juice</*0,r*/ in T : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ in T : jet.Any?><init>(): test.Juice</*0,r*/ in T : jet.Any?>
final /*constructor*/ fun </*0,r*/ in T : jet.Any?><init>(): test.Juice<T>
}
@@ -1,5 +1,5 @@
namespace test
final class test.Beer</*0,r*/ T : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ T : jet.Any?><init>(): test.Beer</*0,r*/ T : jet.Any?>
final /*constructor*/ fun </*0,r*/ T : jet.Any?><init>(): test.Beer<T>
}
@@ -1,5 +1,5 @@
namespace test
final class test.ClassParamReferencesParam</*0,r*/ A : jet.Any?, /*1,r*/ B : A> : jet.Any {
final /*constructor*/ fun </*0,r*/ A : jet.Any?, /*1,r*/ B : A><init>(): test.ClassParamReferencesParam</*0,r*/ A : jet.Any?, /*1,r*/ B : A>
final /*constructor*/ fun </*0,r*/ A : jet.Any?, /*1,r*/ B : A><init>(): test.ClassParamReferencesParam<A, B>
}
@@ -1,5 +1,5 @@
namespace test
final class test.ClassParamReferencesParam</*0,r*/ A : jet.Any?, /*1,r*/ in B : A> : jet.Any {
final /*constructor*/ fun </*0,r*/ A : jet.Any?, /*1,r*/ in B : A><init>(): test.ClassParamReferencesParam</*0,r*/ A : jet.Any?, /*1,r*/ in B : A>
final /*constructor*/ fun </*0,r*/ A : jet.Any?, /*1,r*/ in B : A><init>(): test.ClassParamReferencesParam<A, B>
}
@@ -1,7 +1,7 @@
namespace test
final class test.ClassParamReferencesSelf</*0,r*/ A : test.TraitWithP<A>> : jet.Any {
final /*constructor*/ fun </*0,r*/ A : test.TraitWithP<A>><init>(): test.ClassParamReferencesSelf</*0,r*/ A : test.TraitWithP<A>>
final /*constructor*/ fun </*0,r*/ A : test.TraitWithP<A>><init>(): test.ClassParamReferencesSelf<A>
}
abstract trait test.TraitWithP</*0,r*/ P : jet.Any?> : jet.Any {
}
@@ -1,5 +1,5 @@
namespace test
final class test.Clock</*0,r*/ A : java.lang.Number> : jet.Any {
final /*constructor*/ fun </*0,r*/ A : java.lang.Number><init>(): test.Clock</*0,r*/ A : java.lang.Number>
final /*constructor*/ fun </*0,r*/ A : java.lang.Number><init>(): test.Clock<A>
}
@@ -1,5 +1,5 @@
namespace test
final class test.Clock</*0,r*/ A : java.io.Serializable & java.lang.Number> : jet.Any {
final /*constructor*/ fun </*0,r*/ A : java.io.Serializable & java.lang.Number><init>(): test.Clock</*0,r*/ A : java.io.Serializable & java.lang.Number>
final /*constructor*/ fun </*0,r*/ A : java.io.Serializable & java.lang.Number><init>(): test.Clock<A>
}
@@ -1,5 +1,5 @@
namespace test
final class test.Clock</*0,r*/ A : java.io.Serializable> : jet.Any {
final /*constructor*/ fun </*0,r*/ A : java.io.Serializable><init>(): test.Clock</*0,r*/ A : java.io.Serializable>
final /*constructor*/ fun </*0,r*/ A : java.io.Serializable><init>(): test.Clock<A>
}
@@ -1,5 +1,5 @@
namespace test
final class test.Clock</*0,r*/ A : java.io.Serializable & java.lang.Number> : jet.Any {
final /*constructor*/ fun </*0,r*/ A : java.io.Serializable & java.lang.Number><init>(): test.Clock</*0,r*/ A : java.io.Serializable & java.lang.Number>
final /*constructor*/ fun </*0,r*/ A : java.io.Serializable & java.lang.Number><init>(): test.Clock<A>
}
@@ -1,5 +1,5 @@
namespace test
final class test.ClassTwoParams</*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?><init>(): test.ClassTwoParams</*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?>
final /*constructor*/ fun </*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?><init>(): test.ClassTwoParams<P, Q>
}
@@ -1,5 +1,5 @@
namespace test
final class test.ClassTwoParams</*0,r*/ out P : jet.Any?, /*1,r*/ Q : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ out P : jet.Any?, /*1,r*/ Q : jet.Any?><init>(): test.ClassTwoParams</*0,r*/ out P : jet.Any?, /*1,r*/ Q : jet.Any?>
final /*constructor*/ fun </*0,r*/ out P : jet.Any?, /*1,r*/ Q : jet.Any?><init>(): test.ClassTwoParams<P, Q>
}
@@ -1,7 +1,7 @@
namespace test
abstract class test.Aaa</*0,r*/ P : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.Aaa</*0,r*/ P : jet.Any?>
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.Aaa<P>
}
final class test.Bbb : test.Aaa<java.util.Random> {
final /*constructor*/ fun <init>(): test.Bbb
@@ -1,6 +1,6 @@
namespace test
final class test.ClassParamUsedInFun</*0,r*/ in T : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ in T : jet.Any?><init>(): test.ClassParamUsedInFun</*0,r*/ in T : jet.Any?>
final /*constructor*/ fun </*0,r*/ in T : jet.Any?><init>(): test.ClassParamUsedInFun<T>
final fun f(/*0*/ t: T): jet.Int
}
@@ -1,6 +1,6 @@
namespace test
final class test.ClassParamUsedInFun</*0,r*/ T : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ T : jet.Any?><init>(): test.ClassParamUsedInFun</*0,r*/ T : jet.Any?>
final /*constructor*/ fun </*0,r*/ T : jet.Any?><init>(): test.ClassParamUsedInFun<T>
final fun f(/*0*/ t: T): jet.Int
}
@@ -5,6 +5,6 @@ final class test.Inh : test.Base<jet.String> {
final override /*1*/ fun foo(): jet.String
}
open class test.Base</*0,r*/ T : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ T : jet.Any?><init>(): test.Base</*0,r*/ T : jet.Any?>
final fun foo(): /*0,r*/ T : jet.Any?
final /*constructor*/ fun </*0,r*/ T : jet.Any?><init>(): test.Base<T>
final fun foo(): T
}
@@ -1,5 +1,5 @@
namespace test
final class test.ClassWithConstructorAndTypeParameter</*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?><init>(): test.ClassWithConstructorAndTypeParameter</*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?>
final /*constructor*/ fun </*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?><init>(): test.ClassWithConstructorAndTypeParameter<P, Q>
}
@@ -1,5 +1,5 @@
namespace test
final class test.ClassWithConstructorAndTypeParameter</*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?><init>(/*0*/ q: jet.Int): test.ClassWithConstructorAndTypeParameter</*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?>
final /*constructor*/ fun </*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?><init>(/*0*/ q: jet.Int): test.ClassWithConstructorAndTypeParameter<P, Q>
}
@@ -1,5 +1,5 @@
namespace test
final class test.ClassWithConstructorAndTypeParameter</*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?><init>(/*0*/ q: Q): test.ClassWithConstructorAndTypeParameter</*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?>
final /*constructor*/ fun </*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?><init>(/*0*/ q: Q): test.ClassWithConstructorAndTypeParameter<P, Q>
}
@@ -1,5 +1,5 @@
namespace test
final class test.ClassWithConstructorAndTypeParameter</*0,r*/ P : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.ClassWithConstructorAndTypeParameter</*0,r*/ P : jet.Any?>
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.ClassWithConstructorAndTypeParameter<P>
}
@@ -1,5 +1,5 @@
namespace test
final class test.OneTypeParameterErased</*0,r*/ P : jet.Any?, /*1*/ Q : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ P : jet.Any?, /*1*/ Q : jet.Any?><init>(/*0*/ q: Q): test.OneTypeParameterErased</*0,r*/ P : jet.Any?, /*1*/ Q : jet.Any?>
final /*constructor*/ fun </*0,r*/ P : jet.Any?, /*1*/ Q : jet.Any?><init>(/*0*/ q: Q): test.OneTypeParameterErased<P, Q>
}
@@ -1,3 +1,3 @@
namespace test
final val </*0,r*/ P : jet.Any?> /*0,r*/ P : jet.Any?.anotherJavaClass: java.lang.Class</*0,r*/ P : jet.Any?>
final val </*0,r*/ P : jet.Any?> P.anotherJavaClass: java.lang.Class<P>
@@ -1,6 +1,6 @@
namespace test
final class test.ExtValInClass</*0,r*/ T : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ T : jet.Any?><init>(): test.ExtValInClass</*0,r*/ T : jet.Any?>
final val jet.Int.asas: /*0,r*/ T : jet.Any?
final /*constructor*/ fun </*0,r*/ T : jet.Any?><init>(): test.ExtValInClass<T>
final val jet.Int.asas: T
}
@@ -1,6 +1,6 @@
namespace test
final class test.ExtValInClass</*0,r*/ P : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.ExtValInClass</*0,r*/ P : jet.Any?>
final val jet.Int.asas: /*0,r*/ P : jet.Any??
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.ExtValInClass<P>
final val jet.Int.asas: P?
}
@@ -1,6 +1,6 @@
namespace test
final class test.ExtValPIntInClass</*0,r*/ P : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.ExtValPIntInClass</*0,r*/ P : jet.Any?>
final val /*0,r*/ P : jet.Any?.asas: jet.Int
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.ExtValPIntInClass<P>
final val P.asas: jet.Int
}
@@ -1,3 +1,3 @@
namespace test
final var </*0,r*/ P : jet.Any?> /*0,r*/ P : jet.Any?.anotherJavaClass: java.lang.Class</*0,r*/ P : jet.Any?>
final var </*0,r*/ P : jet.Any?> P.anotherJavaClass: java.lang.Class<P>
@@ -1,6 +1,6 @@
namespace test
final class test.ExtValInClass</*0,r*/ P : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.ExtValInClass</*0,r*/ P : jet.Any?>
final var jet.Int.asas: /*0,r*/ P : jet.Any?
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.ExtValInClass<P>
final var jet.Int.asas: P
}
@@ -1,6 +1,6 @@
namespace test
final class test.ExtValInClass</*0,r*/ P : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.ExtValInClass</*0,r*/ P : jet.Any?>
final var jet.Int.asas: /*0,r*/ P : jet.Any??
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.ExtValInClass<P>
final var jet.Int.asas: P?
}
@@ -1,3 +1,3 @@
namespace test
final var </*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?> java.util.Map</*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?>.asas: jet.Int
final var </*0,r*/ P : jet.Any?, /*1,r*/ Q : jet.Any?> java.util.Map<P, Q>.asas: jet.Int
@@ -1,6 +1,6 @@
namespace test
final class test.ExtValPIntInClass</*0,r*/ P : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.ExtValPIntInClass</*0,r*/ P : jet.Any?>
final var /*0,r*/ P : jet.Any?.asas: jet.Int
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.ExtValPIntInClass<P>
final var P.asas: jet.Int
}
@@ -1,6 +1,6 @@
namespace test
final class test.ExtValPIntInClass</*0,r*/ P : jet.Any?> : jet.Any {
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.ExtValPIntInClass</*0,r*/ P : jet.Any?>
final var /*0,r*/ P : jet.Any??.asas: jet.Int
final /*constructor*/ fun </*0,r*/ P : jet.Any?><init>(): test.ExtValPIntInClass<P>
final var P?.asas: jet.Int
}
@@ -43,10 +43,7 @@ import org.jetbrains.jet.lang.types.TypeProjection;
import org.jetbrains.jet.lang.types.Variance;
import org.junit.Assert;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.io.*;
import java.lang.reflect.Method;
import java.nio.charset.Charset;
import java.util.ArrayList;
@@ -263,15 +260,15 @@ class NamespaceComparator {
}
if (fun.getReceiverParameter().exists()) {
new Serializer(sb).serialize(fun.getReceiverParameter());
new TypeSerializer(sb).serialize(fun.getReceiverParameter());
sb.append(".");
}
sb.append(fun.getName());
sb.append("(");
new ValueParameterSerializer(sb).serializeCommaSeparated(fun.getValueParameters());
new TypeSerializer(sb).serializeCommaSeparated(fun.getValueParameters());
sb.append("): ");
new Serializer(sb).serialize(fun.getReturnType());
new TypeSerializer(sb).serialize(fun.getReturnType());
}
public void serialize(ExtensionReceiver extensionReceiver) {
@@ -298,13 +295,12 @@ class NamespaceComparator {
sb.append("> ");
}
if (prop.getReceiverParameter().exists()) {
// TODO: print only name for type parameter
new Serializer(sb).serialize(prop.getReceiverParameter().getType());
new TypeSerializer(sb).serialize(prop.getReceiverParameter().getType());
sb.append(".");
}
sb.append(prop.getName());
sb.append(": ");
new Serializer(sb).serialize(prop.getType());
new TypeSerializer(sb).serialize(prop.getType());
}
public void serialize(ValueParameterDescriptor valueParameter) {
@@ -317,9 +313,9 @@ class NamespaceComparator {
sb.append(valueParameter.getName());
sb.append(": ");
if (valueParameter.getVarargElementType() != null) {
serialize(valueParameter.getVarargElementType());
new TypeSerializer(sb).serialize(valueParameter.getVarargElementType());
} else {
serialize(valueParameter.getType());
new TypeSerializer(sb).serialize(valueParameter.getType());
}
if (valueParameter.hasDefaultValue()) {
sb.append(" = ?");
@@ -339,28 +335,8 @@ class NamespaceComparator {
sb.append(modality.name().toLowerCase());
}
public void serialize(@NotNull JetType type) {
serialize(type.getConstructor().getDeclarationDescriptor());
if (!type.getArguments().isEmpty()) {
sb.append("<");
boolean first = true;
for (TypeProjection proj : type.getArguments()) {
if (!first) {
sb.append(", ");
}
serialize(proj.getProjectionKind());
serialize(proj.getType());
first = false;
}
sb.append(">");
}
if (type.isNullable()) {
sb.append("?");
}
}
public void serialize(AnnotationDescriptor annotation) {
serialize(annotation.getType());
new TypeSerializer(sb).serialize(annotation.getType());
sb.append("(");
serializeCommaSeparated(annotation.getValueArguments());
sb.append(")");
@@ -436,7 +412,7 @@ class NamespaceComparator {
List<String> list = new ArrayList<String>();
for (JetType upper : param.getUpperBounds()) {
StringBuilder sb = new StringBuilder();
new ValueParameterSerializer(sb).serialize(upper);
new TypeSerializer(sb).serialize(upper);
list.add(sb.toString());
}
Collections.sort(list);
@@ -446,6 +422,39 @@ class NamespaceComparator {
}
}
private static class TypeSerializer extends Serializer {
public TypeSerializer(StringBuilder sb) {
super(sb);
}
@Override
public void serialize(TypeParameterDescriptor param) {
sb.append(param.getName());
}
public void serialize(@NotNull JetType type) {
serialize(type.getConstructor().getDeclarationDescriptor());
if (!type.getArguments().isEmpty()) {
sb.append("<");
boolean first = true;
for (TypeProjection proj : type.getArguments()) {
if (!first) {
sb.append(", ");
}
serialize(proj.getProjectionKind());
serialize(proj.getType());
first = false;
}
sb.append(">");
}
if (type.isNullable()) {
sb.append("?");
}
}
}
private static boolean isRootNs(DeclarationDescriptor ns) {
// upyachka
@@ -474,18 +483,6 @@ class NamespaceComparator {
}
}
private static class ValueParameterSerializer extends Serializer {
public ValueParameterSerializer(StringBuilder sb) {
super(sb);
}
@Override
public void serialize(TypeParameterDescriptor param) {
sb.append(param.getName());
}
}
private class FullContentSerialier extends Serializer {
private FullContentSerialier(StringBuilder sb) {
super(sb);
@@ -513,7 +510,7 @@ class NamespaceComparator {
if (!klass.getTypeConstructor().getSupertypes().isEmpty()) {
sb.append(" : ");
new Serializer(sb).serializeCommaSeparated(new ArrayList<JetType>(klass.getTypeConstructor().getSupertypes()));
new TypeSerializer(sb).serializeCommaSeparated(new ArrayList<JetType>(klass.getTypeConstructor().getSupertypes()));
}
sb.append(" {\n");