diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCompilerFacility.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCompilerFacility.kt index 22bb8d1edbe..fcd39370308 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCompilerFacility.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCompilerFacility.kt @@ -64,6 +64,7 @@ import org.jetbrains.kotlin.ir.descriptors.IrBasedVariableDescriptor import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.IrSymbol +import org.jetbrains.kotlin.ir.symbols.IrSymbolInternals import org.jetbrains.kotlin.ir.types.IrSimpleType import org.jetbrains.kotlin.ir.util.classId import org.jetbrains.kotlin.ir.util.StubGeneratorExtensions @@ -242,6 +243,7 @@ internal class KtFirCompilerFacility( irCodeFragmentFiles.forEach { it.acceptVoid(patchingVisitor) } } + @OptIn(IrSymbolInternals::class) private fun computeAdditionalCodeFragmentMapping(descriptor: IrBasedDeclarationDescriptor<*>): CodeFragmentCapturedValue? { val owner = descriptor.owner @@ -541,6 +543,7 @@ private class IrDeclarationPatchingVisitor(private val mapping: Map patchIfNeeded(irSymbol: T?, patcher: (T) -> Unit) { if (irSymbol != null) { val irDeclaration = irSymbol.owner as? IrMetadataSourceOwner ?: return @@ -551,4 +554,4 @@ private class IrDeclarationPatchingVisitor(private val mapping: Map : IrSymbol { + @IrSymbolInternals override val owner: Owner @ObsoleteDescriptorBasedAPI @@ -221,6 +230,7 @@ sealed interface IrValueSymbol : IrSymbol { @ObsoleteDescriptorBasedAPI override val descriptor: ValueDescriptor + @IrSymbolInternals override val owner: IrValueDeclaration } @@ -243,6 +253,7 @@ sealed interface IrReturnTargetSymbol : IrSymbol { @ObsoleteDescriptorBasedAPI override val descriptor: FunctionDescriptor + @IrSymbolInternals override val owner: IrReturnTarget } @@ -252,6 +263,7 @@ sealed interface IrReturnTargetSymbol : IrSymbol { * @see IrFunctionReference */ sealed interface IrFunctionSymbol : IrReturnTargetSymbol, FunctionSymbolMarker { + @IrSymbolInternals override val owner: IrFunction } diff --git a/compiler/ir/serialization.common/build.gradle.kts b/compiler/ir/serialization.common/build.gradle.kts index eff2f458604..29682b9055f 100644 --- a/compiler/ir/serialization.common/build.gradle.kts +++ b/compiler/ir/serialization.common/build.gradle.kts @@ -16,6 +16,8 @@ dependencies { compileOnly(intellijCore()) } +optInToIrSymbolInternals() + sourceSets { "main" { projectDefault() } "test" {} diff --git a/compiler/tests-common-new/build.gradle.kts b/compiler/tests-common-new/build.gradle.kts index aa0aba308e1..9a498656586 100644 --- a/compiler/tests-common-new/build.gradle.kts +++ b/compiler/tests-common-new/build.gradle.kts @@ -39,6 +39,7 @@ dependencies { } optInToExperimentalCompilerApi() +optInToIrSymbolInternals() sourceSets { "main" { none() } diff --git a/compiler/tests-common/build.gradle.kts b/compiler/tests-common/build.gradle.kts index e801f2d4581..26eb94e8396 100644 --- a/compiler/tests-common/build.gradle.kts +++ b/compiler/tests-common/build.gradle.kts @@ -85,6 +85,7 @@ dependencies { } optInToExperimentalCompilerApi() +optInToIrSymbolInternals() sourceSets { "main" { } diff --git a/compiler/tests-compiler-utils/build.gradle.kts b/compiler/tests-compiler-utils/build.gradle.kts index 94474e114d5..04b1caa1805 100644 --- a/compiler/tests-compiler-utils/build.gradle.kts +++ b/compiler/tests-compiler-utils/build.gradle.kts @@ -37,6 +37,8 @@ dependencies { testApi(commonDependency("org.jetbrains.intellij.deps:jdom")) } +optInToIrSymbolInternals() + sourceSets { "main" { none() } "test" { projectDefault() } diff --git a/kotlin-native/backend.native/build.gradle b/kotlin-native/backend.native/build.gradle index bd446a1b9a3..4906f835663 100644 --- a/kotlin-native/backend.native/build.gradle +++ b/kotlin-native/backend.native/build.gradle @@ -41,6 +41,8 @@ compileCompilerKotlin { '-Xskip-prerelease-check'] } +TasksKt.optInToIrSymbolInternals(project) + compileCli_bcKotlin { kotlinOptions.freeCompilerArgs += ['-Xskip-prerelease-check'] } diff --git a/plugins/android-extensions/android-extensions-compiler/build.gradle.kts b/plugins/android-extensions/android-extensions-compiler/build.gradle.kts index b043cb640d6..79cace3035d 100644 --- a/plugins/android-extensions/android-extensions-compiler/build.gradle.kts +++ b/plugins/android-extensions/android-extensions-compiler/build.gradle.kts @@ -50,6 +50,7 @@ dependencies { } optInToExperimentalCompilerApi() +optInToIrSymbolInternals() sourceSets { "main" { projectDefault() } diff --git a/plugins/atomicfu/atomicfu-compiler/build.gradle.kts b/plugins/atomicfu/atomicfu-compiler/build.gradle.kts index 2e1e572faf5..b0311eff0f5 100644 --- a/plugins/atomicfu/atomicfu-compiler/build.gradle.kts +++ b/plugins/atomicfu/atomicfu-compiler/build.gradle.kts @@ -156,14 +156,13 @@ dependencies { } optInToExperimentalCompilerApi() +optInToIrSymbolInternals() sourceSets { "main" { projectDefault() } "test" { projectDefault() } } -optInToExperimentalCompilerApi() - testsJar() useD8Plugin() diff --git a/plugins/fir-plugin-prototype/build.gradle.kts b/plugins/fir-plugin-prototype/build.gradle.kts index 7c8b8b87710..783bc9a2759 100644 --- a/plugins/fir-plugin-prototype/build.gradle.kts +++ b/plugins/fir-plugin-prototype/build.gradle.kts @@ -45,6 +45,7 @@ dependencies { } optInToExperimentalCompilerApi() +optInToIrSymbolInternals() val generationRoot = projectDir.resolve("tests-gen") diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.backend/build.gradle.kts b/plugins/kotlinx-serialization/kotlinx-serialization.backend/build.gradle.kts index 02fbdf77fce..e1a8fe6efd1 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.backend/build.gradle.kts +++ b/plugins/kotlinx-serialization/kotlinx-serialization.backend/build.gradle.kts @@ -25,6 +25,8 @@ dependencies { compileOnly(intellijCore()) } +optInToIrSymbolInternals() + sourceSets { "main" { projectDefault() } "test" { none() } diff --git a/plugins/noarg/noarg.backend/build.gradle.kts b/plugins/noarg/noarg.backend/build.gradle.kts index 2cc2d059718..8123b4783de 100644 --- a/plugins/noarg/noarg.backend/build.gradle.kts +++ b/plugins/noarg/noarg.backend/build.gradle.kts @@ -13,6 +13,8 @@ dependencies { implementation(kotlinStdlib()) } +optInToIrSymbolInternals() + sourceSets { "main" { projectDefault() } "test" { none() } diff --git a/plugins/parcelize/parcelize-compiler/build.gradle.kts b/plugins/parcelize/parcelize-compiler/build.gradle.kts index 896dd7b85f0..cb13f4c5f33 100644 --- a/plugins/parcelize/parcelize-compiler/build.gradle.kts +++ b/plugins/parcelize/parcelize-compiler/build.gradle.kts @@ -66,6 +66,7 @@ dependencies { } optInToExperimentalCompilerApi() +optInToIrSymbolInternals() sourceSets { "main" { none() } diff --git a/plugins/parcelize/parcelize-compiler/parcelize.backend/build.gradle.kts b/plugins/parcelize/parcelize-compiler/parcelize.backend/build.gradle.kts index bbe9d70a752..a7cfdc9fdd1 100644 --- a/plugins/parcelize/parcelize-compiler/parcelize.backend/build.gradle.kts +++ b/plugins/parcelize/parcelize-compiler/parcelize.backend/build.gradle.kts @@ -18,6 +18,8 @@ dependencies { compileOnly(commonDependency("org.jetbrains.intellij.deps:asm-all")) } +optInToIrSymbolInternals() + sourceSets { "main" { projectDefault() } "test" { none() } diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt index 245eead6625..32b83337725 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt @@ -402,11 +402,18 @@ fun Project.confugureFirPluginAnnotationsDependency(testTask: TaskProvider } } -fun Project.optInToExperimentalCompilerApi() { - @Suppress("DEPRECATION") +private fun Project.optInTo(annotationFqName: String) { tasks.withType>().configureEach { kotlinOptions { - freeCompilerArgs += "-opt-in=org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi" + freeCompilerArgs += "-opt-in=$annotationFqName" } } } + +fun Project.optInToExperimentalCompilerApi() { + optInTo("org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi") +} + +fun Project.optInToIrSymbolInternals() { + optInTo("org.jetbrains.kotlin.ir.symbols.IrSymbolInternals") +}