From 5171d92fb96bcf691953177a1704cf1b46dc29cd Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Tue, 6 Jun 2023 18:56:48 +0200 Subject: [PATCH] [KLIB] API for dumping KLIB ABI ^KT-54402 --- .../Generate_Compiler_Tests.xml | 3 +- build.gradle.kts | 2 + compiler/util-klib-abi/ReadMe.md | 7 + compiler/util-klib-abi/build.gradle.kts | 38 + .../abi/ExperimentalLibraryAbiReader.kt | 16 + .../kotlin/library/abi/LibraryAbi.kt | 284 +++++++ .../kotlin/library/abi/LibraryAbiReader.kt | 75 ++ .../kotlin/library/abi/LibraryAbiRenderer.kt | 37 + .../kotlin/library/abi/LibraryManifest.kt | 28 + .../kotlin/library/abi/impl/FlagFieldEx.kt | 61 ++ .../kotlin/library/abi/impl/LibraryAbiImpl.kt | 251 ++++++ .../library/abi/impl/LibraryAbiReaderImpl.kt | 728 ++++++++++++++++++ .../abi/impl/LibraryAbiRendererImpl.kt | 434 +++++++++++ .../abi/AbiTypeArgumentRenderingTest.kt | 80 ++ .../abi/AbstractLibraryAbiReaderTest.kt | 42 + ...AllKnownIrSignatureVersionsAreSupported.kt | 34 + .../abi/GenerateLibraryAbiReaderTests.kt | 20 + .../library/abi/ManifestRenderingTest.kt | 45 ++ .../org/jetbrains/kotlin/library/abi/utils.kt | 235 ++++++ .../testData/content/callables.kt | 149 ++++ .../testData/content/callables.v1.txt | 163 ++++ .../testData/content/callables.v2.txt | 163 ++++ .../testData/content/classifiers.kt | 67 ++ .../testData/content/classifiers.v1.txt | 103 +++ .../testData/content/classifiers.v2.txt | 103 +++ .../testData/content/excluded_classes_1.kt | 19 + .../content/excluded_classes_1.v1.txt | 33 + .../content/excluded_classes_1.v2.txt | 33 + .../testData/content/excluded_classes_2.kt | 19 + .../content/excluded_classes_2.v1.txt | 15 + .../content/excluded_classes_2.v2.txt | 15 + .../testData/content/excluded_classes_3.kt | 17 + .../content/excluded_classes_3.v1.txt | 15 + .../content/excluded_classes_3.v2.txt | 15 + .../content/excluded_classes_unspecified.kt | 19 + .../excluded_classes_unspecified.v1.txt | 33 + .../excluded_classes_unspecified.v2.txt | 33 + .../content/excluded_packages_non_root_1.kt | 7 + .../excluded_packages_non_root_1.v1.txt | 6 + .../excluded_packages_non_root_1.v2.txt | 6 + .../content/excluded_packages_non_root_2.kt | 7 + .../excluded_packages_non_root_2.v1.txt | 6 + .../excluded_packages_non_root_2.v2.txt | 6 + .../content/excluded_packages_non_root_3.kt | 7 + .../excluded_packages_non_root_3.v1.txt | 12 + .../excluded_packages_non_root_3.v2.txt | 12 + .../content/excluded_packages_non_root_4.kt | 7 + .../excluded_packages_non_root_4.v1.txt | 12 + .../excluded_packages_non_root_4.v2.txt | 12 + .../content/excluded_packages_root_1.kt | 5 + .../content/excluded_packages_root_1.v1.txt | 6 + .../content/excluded_packages_root_1.v2.txt | 6 + .../content/excluded_packages_root_2.kt | 7 + .../content/excluded_packages_root_2.v1.txt | 6 + .../content/excluded_packages_root_2.v2.txt | 6 + .../content/excluded_packages_unspecified.kt | 5 + .../excluded_packages_unspecified.v1.txt | 12 + .../excluded_packages_unspecified.v2.txt | 12 + .../testData/content/inheritance.kt | 188 +++++ .../testData/content/inheritance.v1.txt | 264 +++++++ .../testData/content/inheritance.v2.txt | 264 +++++++ .../testData/content/root_package.kt | 14 + .../testData/content/root_package.v1.txt | 21 + .../testData/content/root_package.v2.txt | 21 + .../testData/content/type_parameters.kt | 133 ++++ .../testData/content/type_parameters.v1.txt | 148 ++++ .../testData/content/type_parameters.v2.txt | 148 ++++ .../testData/content/value_parameters.kt | 25 + .../testData/content/value_parameters.v1.txt | 14 + .../testData/content/value_parameters.v2.txt | 14 + .../testData/content/visibilities.kt | 73 ++ .../testData/content/visibilities.v1.txt | 82 ++ .../testData/content/visibilities.v2.txt | 82 ++ .../content/with_non_public_markers_1.kt | 116 +++ .../content/with_non_public_markers_1.v1.txt | 241 ++++++ .../content/with_non_public_markers_1.v2.txt | 241 ++++++ .../content/with_non_public_markers_2.kt | 116 +++ .../content/with_non_public_markers_2.v1.txt | 176 +++++ .../content/with_non_public_markers_2.v2.txt | 176 +++++ .../content/with_non_public_markers_3.kt | 116 +++ .../content/with_non_public_markers_3.v1.txt | 123 +++ .../content/with_non_public_markers_3.v2.txt | 123 +++ .../content/with_non_public_markers_4.kt | 118 +++ .../content/with_non_public_markers_4.v1.txt | 176 +++++ .../content/with_non_public_markers_4.v2.txt | 176 +++++ .../content/with_non_public_markers_5.kt | 118 +++ .../content/with_non_public_markers_5.v1.txt | 123 +++ .../content/with_non_public_markers_5.v2.txt | 123 +++ ..._non_public_markers_private_annotations.kt | 41 + ..._public_markers_private_annotations.v1.txt | 15 + ..._public_markers_private_annotations.v2.txt | 15 + .../with_non_public_markers_unspecified.kt | 118 +++ ...with_non_public_markers_unspecified.v1.txt | 241 ++++++ ...with_non_public_markers_unspecified.v2.txt | 241 ++++++ .../library/abi/LibraryAbiReaderTest.java | 176 +++++ .../kotlin/library/KotlinLibraryVersioning.kt | 1 + settings.gradle | 2 + 97 files changed, 8201 insertions(+), 1 deletion(-) create mode 100644 compiler/util-klib-abi/ReadMe.md create mode 100644 compiler/util-klib-abi/build.gradle.kts create mode 100644 compiler/util-klib-abi/src/org/jetbrains/kotlin/library/abi/ExperimentalLibraryAbiReader.kt create mode 100644 compiler/util-klib-abi/src/org/jetbrains/kotlin/library/abi/LibraryAbi.kt create mode 100644 compiler/util-klib-abi/src/org/jetbrains/kotlin/library/abi/LibraryAbiReader.kt create mode 100644 compiler/util-klib-abi/src/org/jetbrains/kotlin/library/abi/LibraryAbiRenderer.kt create mode 100644 compiler/util-klib-abi/src/org/jetbrains/kotlin/library/abi/LibraryManifest.kt create mode 100644 compiler/util-klib-abi/src/org/jetbrains/kotlin/library/abi/impl/FlagFieldEx.kt create mode 100644 compiler/util-klib-abi/src/org/jetbrains/kotlin/library/abi/impl/LibraryAbiImpl.kt create mode 100644 compiler/util-klib-abi/src/org/jetbrains/kotlin/library/abi/impl/LibraryAbiReaderImpl.kt create mode 100644 compiler/util-klib-abi/src/org/jetbrains/kotlin/library/abi/impl/LibraryAbiRendererImpl.kt create mode 100644 compiler/util-klib-abi/test/org/jetbrains/kotlin/library/abi/AbiTypeArgumentRenderingTest.kt create mode 100644 compiler/util-klib-abi/test/org/jetbrains/kotlin/library/abi/AbstractLibraryAbiReaderTest.kt create mode 100644 compiler/util-klib-abi/test/org/jetbrains/kotlin/library/abi/AllKnownIrSignatureVersionsAreSupported.kt create mode 100644 compiler/util-klib-abi/test/org/jetbrains/kotlin/library/abi/GenerateLibraryAbiReaderTests.kt create mode 100644 compiler/util-klib-abi/test/org/jetbrains/kotlin/library/abi/ManifestRenderingTest.kt create mode 100644 compiler/util-klib-abi/test/org/jetbrains/kotlin/library/abi/utils.kt create mode 100644 compiler/util-klib-abi/testData/content/callables.kt create mode 100644 compiler/util-klib-abi/testData/content/callables.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/callables.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/classifiers.kt create mode 100644 compiler/util-klib-abi/testData/content/classifiers.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/classifiers.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_classes_1.kt create mode 100644 compiler/util-klib-abi/testData/content/excluded_classes_1.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_classes_1.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_classes_2.kt create mode 100644 compiler/util-klib-abi/testData/content/excluded_classes_2.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_classes_2.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_classes_3.kt create mode 100644 compiler/util-klib-abi/testData/content/excluded_classes_3.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_classes_3.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_classes_unspecified.kt create mode 100644 compiler/util-klib-abi/testData/content/excluded_classes_unspecified.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_classes_unspecified.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_non_root_1.kt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_non_root_1.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_non_root_1.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_non_root_2.kt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_non_root_2.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_non_root_2.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_non_root_3.kt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_non_root_3.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_non_root_3.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_non_root_4.kt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_non_root_4.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_non_root_4.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_root_1.kt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_root_1.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_root_1.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_root_2.kt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_root_2.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_root_2.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_unspecified.kt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_unspecified.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/excluded_packages_unspecified.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/inheritance.kt create mode 100644 compiler/util-klib-abi/testData/content/inheritance.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/inheritance.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/root_package.kt create mode 100644 compiler/util-klib-abi/testData/content/root_package.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/root_package.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/type_parameters.kt create mode 100644 compiler/util-klib-abi/testData/content/type_parameters.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/type_parameters.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/value_parameters.kt create mode 100644 compiler/util-klib-abi/testData/content/value_parameters.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/value_parameters.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/visibilities.kt create mode 100644 compiler/util-klib-abi/testData/content/visibilities.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/visibilities.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_1.kt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_1.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_1.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_2.kt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_2.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_2.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_3.kt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_3.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_3.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_4.kt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_4.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_4.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_5.kt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_5.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_5.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_private_annotations.kt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_private_annotations.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_private_annotations.v2.txt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_unspecified.kt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_unspecified.v1.txt create mode 100644 compiler/util-klib-abi/testData/content/with_non_public_markers_unspecified.v2.txt create mode 100644 compiler/util-klib-abi/tests-gen/org/jetbrains/kotlin/library/abi/LibraryAbiReaderTest.java diff --git a/.idea/runConfigurations/Generate_Compiler_Tests.xml b/.idea/runConfigurations/Generate_Compiler_Tests.xml index 23c55d3aa91..515b76fb6a0 100644 --- a/.idea/runConfigurations/Generate_Compiler_Tests.xml +++ b/.idea/runConfigurations/Generate_Compiler_Tests.xml @@ -13,10 +13,11 @@