Implement raw types (de)serialization via special TypeCapabilities

This commit is contained in:
Denis Zharkov
2015-08-03 17:52:05 +03:00
parent 3593356e1a
commit 32c23728b3
21 changed files with 215 additions and 21 deletions
@@ -141,6 +141,36 @@ public class CompileKotlinAgainstCustomBinariesTest extends TestCaseWithTmpdir {
}
}
public void testRawTypes() throws Exception {
JetTestUtils.compileJavaFiles(
Collections.singletonList(
new File(getTestDataDirectory() + "/library/test/A.java")
),
Arrays.asList("-d", tmpdir.getPath())
);
File libSrc = new File(getTestDataDirectory(), "library/test/lib.kt");
Pair<String, ExitCode> pair1 = CliBaseTest.executeCompilerGrabOutput(new K2JVMCompiler(), Arrays.asList(
libSrc.getPath(),
"-classpath", tmpdir.getPath(),
"-d", tmpdir.getPath()
));
String outputLib = CliBaseTest.getNormalizedCompilerOutput(pair1.first, pair1.second, getTestDataDirectory().getPath());
File mainSrc = new File(getTestDataDirectory(), "main.kt");
Pair<String, ExitCode> pair2 = CliBaseTest.executeCompilerGrabOutput(new K2JVMCompiler(), Arrays.asList(
mainSrc.getPath(),
"-classpath", tmpdir.getPath(),
"-d", tmpdir.getPath()
));
String outputMain = CliBaseTest.getNormalizedCompilerOutput(pair2.first, pair2.second, getTestDataDirectory().getPath());
JetTestUtils.assertEqualsToFile(new File(getTestDataDirectory(), "output.txt"), outputLib + "\n" + outputMain);
}
public void testDuplicateObjectInBinaryAndSources() throws Exception {
Collection<DeclarationDescriptor> allDescriptors = analyzeAndGetAllDescriptors(compileLibrary("library"));
@@ -11,6 +11,7 @@ public final class DebugJvmProtoBuf {
registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.propertySignature);
registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.implClassName);
registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.typeAnnotation);
registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.isRaw);
registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.index);
registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.classAnnotation);
}
@@ -3775,6 +3776,17 @@ public final class DebugJvmProtoBuf {
.newFileScopedGeneratedExtension(
org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.class,
org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.getDefaultInstance());
public static final int IS_RAW_FIELD_NUMBER = 101;
/**
* <code>extend .org.jetbrains.kotlin.serialization.Type { ... }</code>
*/
public static final
com.google.protobuf.GeneratedMessage.GeneratedExtension<
org.jetbrains.kotlin.serialization.DebugProtoBuf.Type,
java.lang.Boolean> isRaw = com.google.protobuf.GeneratedMessage
.newFileScopedGeneratedExtension(
java.lang.Boolean.class,
null);
public static final int INDEX_FIELD_NUMBER = 100;
/**
* <code>extend .org.jetbrains.kotlin.serialization.Callable.ValueParameter { ... }</code>
@@ -3865,13 +3877,14 @@ public final class DebugJvmProtoBuf {
"otlin.serialization.Callable\030f \001(\005B\004\210\265\030\001" +
":q\n\017type_annotation\022(.org.jetbrains.kotl" +
"in.serialization.Type\030d \003(\0132..org.jetbra" +
"ins.kotlin.serialization.Annotation:J\n\005i",
"ndex\022;.org.jetbrains.kotlin.serializatio" +
"n.Callable.ValueParameter\030d \001(\005:s\n\020class" +
"_annotation\022).org.jetbrains.kotlin.seria" +
"lization.Class\030d \003(\0132..org.jetbrains.kot" +
"lin.serialization.AnnotationB\022B\020DebugJvm" +
"ProtoBuf"
"ins.kotlin.serialization.Annotation:8\n\006i",
"s_raw\022(.org.jetbrains.kotlin.serializati" +
"on.Type\030e \001(\010:J\n\005index\022;.org.jetbrains.k" +
"otlin.serialization.Callable.ValueParame" +
"ter\030d \001(\005:s\n\020class_annotation\022).org.jetb" +
"rains.kotlin.serialization.Class\030d \003(\0132." +
".org.jetbrains.kotlin.serialization.Anno" +
"tationB\022B\020DebugJvmProtoBuf"
};
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -3906,8 +3919,9 @@ public final class DebugJvmProtoBuf {
propertySignature.internalInit(descriptor.getExtensions().get(1));
implClassName.internalInit(descriptor.getExtensions().get(2));
typeAnnotation.internalInit(descriptor.getExtensions().get(3));
index.internalInit(descriptor.getExtensions().get(4));
classAnnotation.internalInit(descriptor.getExtensions().get(5));
isRaw.internalInit(descriptor.getExtensions().get(4));
index.internalInit(descriptor.getExtensions().get(5));
classAnnotation.internalInit(descriptor.getExtensions().get(6));
com.google.protobuf.ExtensionRegistry registry =
com.google.protobuf.ExtensionRegistry.newInstance();
registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.fqNameIdInTable);