Add protobuf extensions to serialized Java descriptors

#KT-17621 In Progress
This commit is contained in:
Denis Zharkov
2017-11-02 14:51:48 +03:00
parent 34452f4f4a
commit c86dc0d7af
10 changed files with 642 additions and 130 deletions
@@ -55,7 +55,8 @@ val PROTO_PATHS: List<ProtoPath> = listOf(
ProtoPath("js/js.serializer/src/js.proto"),
ProtoPath("js/js.serializer/src/js-ast.proto"),
ProtoPath("core/descriptors.jvm/src/jvm_descriptors.proto"),
ProtoPath("core/descriptors.jvm/src/jvm_package_table.proto")
ProtoPath("core/descriptors.jvm/src/jvm_package_table.proto"),
ProtoPath("build-common/src/java_descriptors.proto")
)
private val EXT_OPTIONS_PROTO_PATH = ProtoPath("core/deserialization/src/ext_options.proto")
@@ -20,10 +20,11 @@ import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil
import org.jetbrains.kotlin.protobuf.Descriptors
import org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf
import org.jetbrains.kotlin.serialization.DebugProtoBuf
import org.jetbrains.kotlin.serialization.builtins.DebugBuiltInsProtoBuf
import org.jetbrains.kotlin.serialization.java.DebugJavaClassProtoBuf
import org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf
import org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf
import org.jetbrains.kotlin.utils.Printer
import org.jetbrains.rpc.requestToByteBuf
import java.io.File
import java.util.*
@@ -64,7 +65,9 @@ class GenerateProtoBufCompare {
private val jvmExtensions = DebugJvmProtoBuf.getDescriptor().extensions
private val jsExtensions = DebugJsProtoBuf.getDescriptor().extensions
private val extensionsMap = (jvmExtensions + jsExtensions).groupBy { it.containingType }
private val javaExtensions = DebugJavaClassProtoBuf.getDescriptor().extensions
private val builtInsExtensions = DebugBuiltInsProtoBuf.getDescriptor().extensions
private val extensionsMap = (jvmExtensions + jsExtensions + javaExtensions + builtInsExtensions).groupBy { it.containingType }
private val allMessages: MutableSet<Descriptors.Descriptor> = linkedSetOf()
private val messagesToProcess: Queue<Descriptors.Descriptor> = LinkedList()
@@ -80,8 +83,10 @@ class GenerateProtoBufCompare {
p.println("import org.jetbrains.kotlin.name.ClassId")
p.println("import org.jetbrains.kotlin.serialization.ProtoBuf")
p.println("import org.jetbrains.kotlin.serialization.deserialization.NameResolver")
p.println("import org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf")
p.println("import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf")
p.println("import org.jetbrains.kotlin.serialization.js.JsProtoBuf")
p.println("import org.jetbrains.kotlin.serialization.java.JavaClassProtoBuf")
p.println("import org.jetbrains.kotlin.utils.Interner")
p.println("import java.util.*")
p.println()
@@ -450,6 +455,12 @@ class GenerateProtoBufCompare {
if (this in jsExtensions) {
extensionPrefix = "jsExt_"
}
if (this in javaExtensions) {
extensionPrefix = "javaExt_"
}
if (this in builtInsExtensions) {
extensionPrefix = "builtInsExt_"
}
}
return (extensionPrefix + name.javaName + (if (isRepeated) "List" else "")).replace("[A-Z]".toRegex()) { "_" + it.value }.toUpperCase()
}
@@ -468,4 +479,4 @@ class GenerateProtoBufCompare {
private fun Printer.printlnMultiline(string: String) {
string.trimIndent().split("\n").forEach { this.println(it) }
}
}