From 923303c2c1e0691fac2922e1a450cfb800d7cee2 Mon Sep 17 00:00:00 2001 From: Anton Bannykh Date: Mon, 5 Apr 2021 17:35:48 +0300 Subject: [PATCH] JS PIR: move PIR proto messages to a separate file --- .../kotlin/ir/persistentIrGenerator/Main.kt | 2 +- .../PersistentIrGenerator.kt | 26 ++-- .../serialization.common/src/KotlinIr.proto | 128 ----------------- .../src/KotlinPirCarriers.proto | 133 ++++++++++++++++++ .../generators/protobuf/GenerateProtoBuf.kt | 1 + 5 files changed, 148 insertions(+), 142 deletions(-) create mode 100644 compiler/ir/serialization.common/src/KotlinPirCarriers.proto diff --git a/compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt b/compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt index f1734fc5249..7b4098ec2e5 100644 --- a/compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt +++ b/compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt @@ -20,7 +20,7 @@ fun main() { generateTypeParameter() generateValueParameter() - updateKotlinIrProto() + generateKotlinPirCarriersProto() generateCarrierDeserializer() generateCarrierSerializer() } diff --git a/compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/PersistentIrGenerator.kt b/compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/PersistentIrGenerator.kt index ab5525c9222..b0a51cb67a6 100644 --- a/compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/PersistentIrGenerator.kt +++ b/compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/PersistentIrGenerator.kt @@ -661,27 +661,27 @@ internal object PersistentIrGenerator { File(prefix + path).writeText(content) } - fun updateKotlinIrProto() { - val file = File("compiler/ir/serialization.common/src/KotlinIr.proto") + fun generateKotlinPirCarriersProto() { + val file = File("compiler/ir/serialization.common/src/KotlinPirCarriers.proto") - if (!file.exists()) throw IllegalStateException("KotlinIr.proto file not found!") + val sb = StringBuilder(""" + syntax = "proto2"; + package org.jetbrains.kotlin.backend.common.serialization.proto; - val lines = file.readText().lines() + option java_multiple_files = true; + option java_outer_classname = "KotlinIr"; + option optimize_for = LITE_RUNTIME; - val start = lines.indexOf("// PIR GENERATOR START") - if (start < 0) throw IllegalStateException("Couldn't find the '// PIR GENERATOR START' line. Don't know where to write generated messages.") - - val end = lines.indexOf("// PIR GENERATOR END") - if (end < 0) throw IllegalStateException("Couldn't find the '// PIR GENERATOR END' line. Don't know where to write generated messages.") - - val sb = StringBuilder(lines.subList(0, start + 1).joinToString(separator = "\n")) + import "compiler/ir/serialization.common/src/KotlinIr.proto"; + + // Auto-generated by compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt. DO NOT EDIT! + + """.trimIndent()) for (m in protoMessages) { sb.append("\n").append(m) } - sb.append("\n").append(lines.subList(end, lines.size).joinToString(separator = "\n")) - file.writeText(sb.toString()) } diff --git a/compiler/ir/serialization.common/src/KotlinIr.proto b/compiler/ir/serialization.common/src/KotlinIr.proto index a1554954cc8..cd0d27c3db2 100644 --- a/compiler/ir/serialization.common/src/KotlinIr.proto +++ b/compiler/ir/serialization.common/src/KotlinIr.proto @@ -590,134 +590,6 @@ message IrStatement { } } -/* ------- Persistent IR Carriers --------------------------------------------- */ -// Auto-generated by compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt. DO NOT EDIT! -// PIR GENERATOR START -message PirAnonymousInitializerCarrier { - required int32 lastModified = 1; - optional int64 parentSymbol = 2; - optional int32 origin = 3; - repeated IrConstructorCall annotation = 4; - optional int32 body = 5; -} - -message PirClassCarrier { - required int32 lastModified = 1; - optional int64 parentSymbol = 2; - optional int32 origin = 3; - repeated IrConstructorCall annotation = 4; - optional int64 thisReceiver = 5; - repeated int64 typeParameters = 6; - repeated int32 superTypes = 7; - optional int64 flags = 8 [default = 0]; -} - -message PirConstructorCarrier { - required int32 lastModified = 1; - optional int64 parentSymbol = 2; - optional int32 origin = 3; - repeated IrConstructorCall annotation = 4; - required int32 returnTypeField = 5; - optional int64 dispatchReceiverParameter = 6; - optional int64 extensionReceiverParameter = 7; - optional int32 body = 8; - repeated int64 typeParameters = 9; - repeated int64 valueParameters = 10; - optional int64 flags = 11 [default = 0]; -} - -message PirEnumEntryCarrier { - required int32 lastModified = 1; - optional int64 parentSymbol = 2; - optional int32 origin = 3; - repeated IrConstructorCall annotation = 4; - optional int64 correspondingClass = 5; - optional int32 initializerExpression = 6; -} - -message PirErrorDeclarationCarrier { - required int32 lastModified = 1; - optional int64 parentSymbol = 2; - optional int32 origin = 3; - repeated IrConstructorCall annotation = 4; -} - -message PirFieldCarrier { - required int32 lastModified = 1; - optional int64 parentSymbol = 2; - optional int32 origin = 3; - repeated IrConstructorCall annotation = 4; - required int32 type = 5; - optional int32 initializer = 6; - optional int64 correspondingPropertySymbol = 7; -} - -message PirFunctionCarrier { - required int32 lastModified = 1; - optional int64 parentSymbol = 2; - optional int32 origin = 3; - repeated IrConstructorCall annotation = 4; - required int32 returnTypeField = 5; - optional int64 dispatchReceiverParameter = 6; - optional int64 extensionReceiverParameter = 7; - optional int32 body = 8; - repeated int64 typeParameters = 9; - repeated int64 valueParameters = 10; - optional int64 correspondingPropertySymbol = 11; - repeated int64 overriddenSymbols = 12; - optional int64 flags = 13 [default = 0]; -} - -message PirLocalDelegatedPropertyCarrier { - required int32 lastModified = 1; - optional int64 parentSymbol = 2; - optional int32 origin = 3; - repeated IrConstructorCall annotation = 4; - required int32 type = 5; - optional IrVariable delegate = 6; - optional int64 getter = 7; - optional int64 setter = 8; -} - -message PirPropertyCarrier { - required int32 lastModified = 1; - optional int64 parentSymbol = 2; - optional int32 origin = 3; - repeated IrConstructorCall annotation = 4; - optional int64 backingField = 5; - optional int64 getter = 6; - optional int64 setter = 7; -} - -message PirTypeAliasCarrier { - required int32 lastModified = 1; - optional int64 parentSymbol = 2; - optional int32 origin = 3; - repeated IrConstructorCall annotation = 4; - repeated int64 typeParameters = 5; - required int32 expandedType = 6; -} - -message PirTypeParameterCarrier { - required int32 lastModified = 1; - optional int64 parentSymbol = 2; - optional int32 origin = 3; - repeated IrConstructorCall annotation = 4; - repeated int32 superTypes = 5; -} - -message PirValueParameterCarrier { - required int32 lastModified = 1; - optional int64 parentSymbol = 2; - optional int32 origin = 3; - repeated IrConstructorCall annotation = 4; - optional int32 defaultValue = 5; - required int32 type = 6; - optional int32 varargElementType = 7; -} - -// PIR GENERATOR END - message PirBodyCarrier { required int32 lastModified = 1; optional int64 containerFieldSymbol = 2; diff --git a/compiler/ir/serialization.common/src/KotlinPirCarriers.proto b/compiler/ir/serialization.common/src/KotlinPirCarriers.proto new file mode 100644 index 00000000000..2130d22b7f7 --- /dev/null +++ b/compiler/ir/serialization.common/src/KotlinPirCarriers.proto @@ -0,0 +1,133 @@ +syntax = "proto2"; +package org.jetbrains.kotlin.backend.common.serialization.proto; + +option java_multiple_files = true; +option java_outer_classname = "KotlinIr"; +option optimize_for = LITE_RUNTIME; + +import "compiler/ir/serialization.common/src/KotlinIr.proto"; + +// Auto-generated by compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt. DO NOT EDIT! + +message PirAnonymousInitializerCarrier { + required int32 lastModified = 1; + optional int64 parentSymbol = 2; + optional int32 origin = 3; + repeated IrConstructorCall annotation = 4; + optional int32 body = 5; +} + +message PirClassCarrier { + required int32 lastModified = 1; + optional int64 parentSymbol = 2; + optional int32 origin = 3; + repeated IrConstructorCall annotation = 4; + optional int64 thisReceiver = 5; + repeated int64 typeParameters = 6; + repeated int32 superTypes = 7; + optional int64 flags = 8 [default = 0]; +} + +message PirConstructorCarrier { + required int32 lastModified = 1; + optional int64 parentSymbol = 2; + optional int32 origin = 3; + repeated IrConstructorCall annotation = 4; + required int32 returnTypeField = 5; + optional int64 dispatchReceiverParameter = 6; + optional int64 extensionReceiverParameter = 7; + optional int32 body = 8; + repeated int64 typeParameters = 9; + repeated int64 valueParameters = 10; + optional int64 flags = 11 [default = 0]; +} + +message PirEnumEntryCarrier { + required int32 lastModified = 1; + optional int64 parentSymbol = 2; + optional int32 origin = 3; + repeated IrConstructorCall annotation = 4; + optional int64 correspondingClass = 5; + optional int32 initializerExpression = 6; +} + +message PirErrorDeclarationCarrier { + required int32 lastModified = 1; + optional int64 parentSymbol = 2; + optional int32 origin = 3; + repeated IrConstructorCall annotation = 4; +} + +message PirFieldCarrier { + required int32 lastModified = 1; + optional int64 parentSymbol = 2; + optional int32 origin = 3; + repeated IrConstructorCall annotation = 4; + required int32 type = 5; + optional int32 initializer = 6; + optional int64 correspondingPropertySymbol = 7; +} + +message PirFunctionCarrier { + required int32 lastModified = 1; + optional int64 parentSymbol = 2; + optional int32 origin = 3; + repeated IrConstructorCall annotation = 4; + required int32 returnTypeField = 5; + optional int64 dispatchReceiverParameter = 6; + optional int64 extensionReceiverParameter = 7; + optional int32 body = 8; + repeated int64 typeParameters = 9; + repeated int64 valueParameters = 10; + optional int64 correspondingPropertySymbol = 11; + repeated int64 overriddenSymbols = 12; + optional int64 flags = 13 [default = 0]; +} + +message PirLocalDelegatedPropertyCarrier { + required int32 lastModified = 1; + optional int64 parentSymbol = 2; + optional int32 origin = 3; + repeated IrConstructorCall annotation = 4; + required int32 type = 5; + optional IrVariable delegate = 6; + optional int64 getter = 7; + optional int64 setter = 8; +} + +message PirPropertyCarrier { + required int32 lastModified = 1; + optional int64 parentSymbol = 2; + optional int32 origin = 3; + repeated IrConstructorCall annotation = 4; + optional int64 backingField = 5; + optional int64 getter = 6; + optional int64 setter = 7; +} + +message PirTypeAliasCarrier { + required int32 lastModified = 1; + optional int64 parentSymbol = 2; + optional int32 origin = 3; + repeated IrConstructorCall annotation = 4; + repeated int64 typeParameters = 5; + required int32 expandedType = 6; +} + +message PirTypeParameterCarrier { + required int32 lastModified = 1; + optional int64 parentSymbol = 2; + optional int32 origin = 3; + repeated IrConstructorCall annotation = 4; + repeated int32 superTypes = 5; +} + +message PirValueParameterCarrier { + required int32 lastModified = 1; + optional int64 parentSymbol = 2; + optional int32 origin = 3; + repeated IrConstructorCall annotation = 4; + optional int32 defaultValue = 5; + required int32 type = 6; + optional int32 varargElementType = 7; +} diff --git a/generators/tests/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt b/generators/tests/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt index 88dbe11a554..e17cd6d3c1e 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt @@ -49,6 +49,7 @@ val PROTO_PATHS: List = listOf( ProtoPath("build-common/src/java_descriptors.proto"), ProtoPath("compiler/util-klib-metadata/src/KlibMetadataProtoBuf.proto"), ProtoPath("compiler/ir/serialization.common/src/KotlinIr.proto", false), + ProtoPath("compiler/ir/serialization.common/src/KotlinPirCarriers.proto", false), ProtoPath("plugins/kotlin-serialization/kotlin-serialization-compiler/src/class_extensions.proto", generateDebug = false) )