diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt index 32e747c281b..cf8f85752da 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt @@ -36,8 +36,8 @@ class AndroidExtensionsSubpluginIndicator @Inject internal constructor(private v registry.register(KotlinAndroidExtensionModelBuilder()) project.plugins.apply(AndroidSubplugin::class.java) - project.logger.warn( - "Warning: The 'kotlin-android-extensions' Gradle plugin is deprecated. " + + project.logger.error( + "Error: The 'kotlin-android-extensions' Gradle plugin is no longer supported. " + "Please use this migration guide (https://goo.gle/kotlin-android-extensions-deprecation) to start " + "working with View Binding (https://developer.android.com/topic/libraries/view-binding) " + "and the 'kotlin-parcelize' plugin." diff --git a/plugins/android-extensions/android-extensions-compiler/build.gradle.kts b/plugins/android-extensions/android-extensions-compiler/build.gradle.kts index 960d284658a..c91e6143ee2 100644 --- a/plugins/android-extensions/android-extensions-compiler/build.gradle.kts +++ b/plugins/android-extensions/android-extensions-compiler/build.gradle.kts @@ -20,6 +20,7 @@ dependencies { compileOnly(project(":compiler:ir.backend.common")) compileOnly(project(":compiler:backend.jvm")) compileOnly(project(":compiler:ir.tree")) + compileOnly(project(":compiler:cli")) compileOnly(project(":kotlin-android-extensions-runtime")) compileOnly(intellijCore()) compileOnly(commonDependency("org.jetbrains.intellij.deps:asm-all")) diff --git a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/AndroidComponentRegistrar.kt b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/AndroidComponentRegistrar.kt index 9028a6c1a92..ab9003ddcfe 100644 --- a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/AndroidComponentRegistrar.kt +++ b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/AndroidComponentRegistrar.kt @@ -30,6 +30,8 @@ import org.jetbrains.kotlin.android.synthetic.res.AndroidVariant import org.jetbrains.kotlin.android.synthetic.res.CliAndroidLayoutXmlFileManager import org.jetbrains.kotlin.android.synthetic.res.CliAndroidPackageFragmentProviderExtension import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension +import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys +import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension import org.jetbrains.kotlin.codegen.extensions.ExpressionCodegenExtension import org.jetbrains.kotlin.compiler.plugin.* @@ -103,6 +105,16 @@ class AndroidCommandLineProcessor : CommandLineProcessor { @Suppress("DEPRECATION") class AndroidComponentRegistrar : ComponentRegistrar { companion object { + fun reportRemovedError(configuration: CompilerConfiguration) { + val errorMessage = + "The Android extensions ('kotlin-android-extensions') compiler plugin is no longer supported. " + + "Please use kotlin parcelize and view binding. " + + "More information: https://goo.gle/kotlin-android-extensions-deprecation" + configuration.get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY) + ?.report(CompilerMessageSeverity.ERROR, errorMessage, null) + ?: throw IllegalStateException(errorMessage) + } + fun registerParcelExtensions(project: Project) { ExpressionCodegenExtension.registerExtension(project, ParcelableCodegenExtension()) IrGenerationExtension.registerExtension(project, ParcelableIrGeneratorExtension()) @@ -153,6 +165,8 @@ class AndroidComponentRegistrar : ComponentRegistrar { } override fun registerProjectComponents(project: MockProject, configuration: CompilerConfiguration) { + reportRemovedError(configuration) + val features = configuration.get(AndroidConfigurationKeys.FEATURES) ?: AndroidExtensionsFeature.values().toSet() val isExperimental = configuration.get(AndroidConfigurationKeys.EXPERIMENTAL) == "true"