Implement JS proto comparison
This commit is contained in:
@@ -20,8 +20,10 @@ 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.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.*
|
||||
|
||||
@@ -60,7 +62,9 @@ class GenerateProtoBufCompare {
|
||||
private val CHECK_CLASS_ID_EQUALS_NAME = "checkClassIdEquals"
|
||||
private val HASH_CODE_NAME = "hashCode"
|
||||
|
||||
private val extensionsMap = DebugJvmProtoBuf.getDescriptor().extensions.groupBy { it.containingType }
|
||||
private val jvmExtensions = DebugJvmProtoBuf.getDescriptor().extensions
|
||||
private val jsExtensions = DebugJsProtoBuf.getDescriptor().extensions
|
||||
private val extensionsMap = (jvmExtensions + jsExtensions).groupBy { it.containingType }
|
||||
|
||||
private val allMessages: MutableSet<Descriptors.Descriptor> = linkedSetOf()
|
||||
private val messagesToProcess: Queue<Descriptors.Descriptor> = LinkedList()
|
||||
@@ -77,6 +81,7 @@ class GenerateProtoBufCompare {
|
||||
p.println("import org.jetbrains.kotlin.serialization.ProtoBuf")
|
||||
p.println("import org.jetbrains.kotlin.serialization.deserialization.NameResolver")
|
||||
p.println("import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf")
|
||||
p.println("import org.jetbrains.kotlin.serialization.js.JsProtoBuf")
|
||||
p.println("import org.jetbrains.kotlin.utils.Interner")
|
||||
p.println("import java.util.*")
|
||||
p.println()
|
||||
@@ -429,7 +434,18 @@ class GenerateProtoBufCompare {
|
||||
}
|
||||
|
||||
private val Descriptors.FieldDescriptor.enumName: String
|
||||
get() = (name.javaName + (if (isRepeated) "List" else "")).replace("[A-Z]".toRegex()) { "_" + it.value }.toUpperCase()
|
||||
get() {
|
||||
var extensionPrefix = ""
|
||||
if (isExtension) {
|
||||
if (this in jvmExtensions) {
|
||||
extensionPrefix = "jvmExt_"
|
||||
}
|
||||
if (this in jsExtensions) {
|
||||
extensionPrefix = "jsExt_"
|
||||
}
|
||||
}
|
||||
return (extensionPrefix + name.javaName + (if (isRepeated) "List" else "")).replace("[A-Z]".toRegex()) { "_" + it.value }.toUpperCase()
|
||||
}
|
||||
|
||||
private fun Descriptors.FieldDescriptor.helperMethodName(): String {
|
||||
val packageHeader = this.file.`package`
|
||||
|
||||
@@ -150,6 +150,7 @@ import org.jetbrains.kotlin.j2k.AbstractJavaToKotlinConverterMultiFileTest
|
||||
import org.jetbrains.kotlin.j2k.AbstractJavaToKotlinConverterSingleFileTest
|
||||
import org.jetbrains.kotlin.jps.build.*
|
||||
import org.jetbrains.kotlin.jps.build.android.AbstractAndroidJpsTestCase
|
||||
import org.jetbrains.kotlin.jps.incremental.AbstractJsProtoComparisonTest
|
||||
import org.jetbrains.kotlin.jps.incremental.AbstractJvmProtoComparisonTest
|
||||
import org.jetbrains.kotlin.js.test.AbstractDceTest
|
||||
import org.jetbrains.kotlin.js.test.AbstractJsLineNumberTest
|
||||
@@ -1211,15 +1212,24 @@ fun main(args: Array<String>) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
testGroup("jps-plugin/jps-tests/test", "jps-plugin/testData") {
|
||||
fun TestGroup.TestClass.commonProtoComparisonTests() {
|
||||
model("comparison/classSignatureChange", extension = null, excludeParentDirs = true)
|
||||
model("comparison/classPrivateOnlyChange", extension = null, excludeParentDirs = true)
|
||||
model("comparison/classMembersOnlyChanged", extension = null, excludeParentDirs = true)
|
||||
model("comparison/packageMembers", extension = null, excludeParentDirs = true)
|
||||
model("comparison/unchanged", extension = null, excludeParentDirs = true)
|
||||
}
|
||||
|
||||
testClass<AbstractJvmProtoComparisonTest> {
|
||||
commonProtoComparisonTests()
|
||||
model("comparison/jvmOnly", extension = null, excludeParentDirs = true)
|
||||
}
|
||||
|
||||
testClass<AbstractJsProtoComparisonTest> {
|
||||
commonProtoComparisonTests()
|
||||
}
|
||||
}
|
||||
|
||||
testGroup("plugins/plugins-tests/tests", "plugins/android-extensions/android-extensions-compiler/testData") {
|
||||
|
||||
Reference in New Issue
Block a user