Description: Disables the Javac wrapper to be able to build with Java 17
 As of Kotlin 1.8.0 the wrapper, which is triggered by the -Xuse-javac
 compiler option, is still not compatible with the JDK 17 classes.
Author: Emmanuel Bourg <ebourg@apache.org>
Bug: https://youtrack.jetbrains.com/issue/KT-56235/
Forwarded: not-needed
Last-Update: 2023-01-31

--- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/javac/JavacLogger.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/javac/JavacLogger.kt
@@ -30,7 +30,7 @@
     errorWriter: PrintWriter,
     warningWriter: PrintWriter,
     infoWriter: PrintWriter
-) : Log(context, errorWriter, warningWriter, infoWriter) {
+) : Log(context/*, errorWriter, warningWriter, infoWriter*/) {
     init {
         context.put(Log.outKey, infoWriter)
     }
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt
@@ -38,7 +38,6 @@
 import org.jetbrains.kotlin.config.*
 import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
 import org.jetbrains.kotlin.incremental.components.LookupTracker
-import org.jetbrains.kotlin.javac.JavacWrapper
 import org.jetbrains.kotlin.load.java.JavaClassesTracker
 import org.jetbrains.kotlin.load.java.JvmAbi
 import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
@@ -244,7 +243,7 @@
         arguments: K2JVMCompilerArguments
     ): Boolean {
         if (arguments.compileJava) {
-            return JavacWrapper.getInstance(environment.project).use { it.compile() }
+            return false;
         }
         return true
     }
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt
@@ -52,7 +52,6 @@
 import org.jetbrains.kotlin.config.languageVersionSettings
 import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
 import org.jetbrains.kotlin.idea.MainFunctionDetector
-import org.jetbrains.kotlin.javac.JavacWrapper
 import org.jetbrains.kotlin.load.kotlin.ModuleVisibilityManager
 import org.jetbrains.kotlin.modules.Module
 import org.jetbrains.kotlin.modules.TargetId
@@ -161,19 +160,7 @@
             }
 
             if (projectConfiguration.getBoolean(JVMConfigurationKeys.COMPILE_JAVA)) {
-                val singleModule = chunk.singleOrNull()
-                if (singleModule != null) {
-                    return JavacWrapper.getInstance(environment.project).use {
-                        it.compile(File(singleModule.getOutputDirectory()))
-                    }
-                } else {
-                    projectConfiguration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY).report(
-                        WARNING,
-                        "A chunk contains multiple modules (${chunk.joinToString { it.getModuleName() }}). " +
-                                "-Xuse-javac option couldn't be used to compile java files"
-                    )
-                    JavacWrapper.getInstance(environment.project).close()
-                }
+                projectConfiguration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY).report(WARNING, "The -Xuse-javac option isn't supported in Debian (see KT-56235)")
             }
 
             return true
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/javac/JavacWrapperKotlinResolverImpl.kt
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2010-2017 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.cli.jvm.javac
-
-import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
-import org.jetbrains.kotlin.asJava.findFacadeClass
-import org.jetbrains.kotlin.asJava.toLightClass
-import org.jetbrains.kotlin.descriptors.ClassDescriptor
-import org.jetbrains.kotlin.javac.JavacWrapperKotlinResolver
-import org.jetbrains.kotlin.javac.resolve.MockKotlinField
-import org.jetbrains.kotlin.load.java.structure.JavaField
-import org.jetbrains.kotlin.name.ClassId
-import org.jetbrains.kotlin.psi.KtClassOrObject
-import org.jetbrains.kotlin.psi.KtFile
-import org.jetbrains.kotlin.resolve.BindingContext
-import org.jetbrains.kotlin.resolve.descriptorUtil.classId
-
-class JavacWrapperKotlinResolverImpl(private val lightClassGenerationSupport: LightClassGenerationSupport) : JavacWrapperKotlinResolver {
-
-    private val supersCache = hashMapOf<KtClassOrObject, List<ClassId>>()
-
-    override fun resolveSupertypes(classOrObject: KtClassOrObject): List<ClassId> {
-        if (supersCache.containsKey(classOrObject)) {
-            return supersCache[classOrObject]!!
-        }
-
-        val classDescriptor =
-            lightClassGenerationSupport.analyze(classOrObject).get(BindingContext.CLASS, classOrObject) ?: return emptyList()
-        val classIds = classDescriptor.defaultType.constructor.supertypes
-            .mapNotNull { (it.constructor.declarationDescriptor as? ClassDescriptor)?.classId }
-        supersCache[classOrObject] = classIds
-
-        return classIds
-    }
-
-    override fun findField(classOrObject: KtClassOrObject, name: String): JavaField? {
-        val lightClass = classOrObject.toLightClass() ?: return null
-
-        return lightClass.allFields.find { it.name == name }?.let(::MockKotlinField)
-    }
-
-    override fun findField(ktFile: KtFile?, name: String): JavaField? {
-        val lightClass = ktFile?.findFacadeClass() ?: return null
-
-        return lightClass.allFields.find { it.name == name }?.let(::MockKotlinField)
-    }
-}
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/javac/JavacWrapperRegistrar.kt
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2010-2017 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-@file:Suppress("JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE")
-package org.jetbrains.kotlin.cli.jvm.javac
-
-import com.intellij.mock.MockProject
-import com.sun.tools.javac.util.Context
-import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
-import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
-import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.ERROR
-import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
-import org.jetbrains.kotlin.config.CompilerConfiguration
-import org.jetbrains.kotlin.config.JVMConfigurationKeys
-import org.jetbrains.kotlin.javac.JavacWrapper
-import org.jetbrains.kotlin.psi.KtFile
-import java.io.File
-
-object JavacWrapperRegistrar {
-    private const val JAVAC_CONTEXT_CLASS = "com.sun.tools.javac.util.Context"
-
-    fun registerJavac(
-        project: MockProject,
-        configuration: CompilerConfiguration,
-        javaFiles: List<File>,
-        kotlinFiles: List<KtFile>,
-        arguments: Array<String>?,
-        bootClasspath: List<File>?,
-        sourcePath: List<File>?,
-        lightClassGenerationSupport: LightClassGenerationSupport
-    ): Boolean {
-        val messageCollector = configuration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY)
-
-        try {
-            Class.forName(JAVAC_CONTEXT_CLASS)
-        } catch (e: ClassNotFoundException) {
-            messageCollector.report(ERROR, "'$JAVAC_CONTEXT_CLASS' class can't be found ('tools.jar' is not found)")
-            return false
-        }
-
-        val context = Context()
-        JavacLogger.preRegister(context, messageCollector)
-
-        val jvmClasspathRoots = configuration.jvmClasspathRoots
-        val outputDirectory = configuration.get(JVMConfigurationKeys.OUTPUT_DIRECTORY)
-        val compileJava = configuration.getBoolean(JVMConfigurationKeys.COMPILE_JAVA)
-        val kotlinSupertypesResolver = JavacWrapperKotlinResolverImpl(lightClassGenerationSupport)
-
-        val javacWrapper = JavacWrapper(
-            javaFiles, kotlinFiles, arguments, jvmClasspathRoots, bootClasspath, sourcePath,
-            kotlinSupertypesResolver, compileJava, outputDirectory, context
-        )
-
-        project.registerService(JavacWrapper::class.java, javacWrapper)
-
-        return true
-    }
-}
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt
@@ -83,7 +83,6 @@
 import org.jetbrains.kotlin.cli.jvm.JvmRuntimeVersionsConsistencyChecker
 import org.jetbrains.kotlin.cli.jvm.config.*
 import org.jetbrains.kotlin.cli.jvm.index.*
-import org.jetbrains.kotlin.cli.jvm.javac.JavacWrapperRegistrar
 import org.jetbrains.kotlin.cli.jvm.modules.CliJavaModuleFinder
 import org.jetbrains.kotlin.cli.jvm.modules.CliJavaModuleResolver
 import org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem
@@ -298,10 +297,7 @@
         bootClasspath: List<File>? = null,
         sourcePath: List<File>? = null
     ): Boolean {
-        return JavacWrapperRegistrar.registerJavac(
-            projectEnvironment.project, configuration, javaFiles, kotlinFiles, arguments, bootClasspath, sourcePath,
-            LightClassGenerationSupport.getInstance(project)
-        )
+        return false;
     }
 
     private val applicationEnvironment: CoreApplicationEnvironment
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/TopDownAnalyzerFacadeForJVM.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/TopDownAnalyzerFacadeForJVM.kt
@@ -42,9 +42,6 @@
 import org.jetbrains.kotlin.frontend.java.di.initialize
 import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
 import org.jetbrains.kotlin.incremental.components.LookupTracker
-import org.jetbrains.kotlin.javac.components.JavacBasedClassFinder
-import org.jetbrains.kotlin.javac.components.JavacBasedSourceElementFactory
-import org.jetbrains.kotlin.javac.components.StubJavaResolverCache
 import org.jetbrains.kotlin.load.java.JavaClassesTracker
 import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolver
 import org.jetbrains.kotlin.load.java.structure.JavaClass
@@ -151,9 +148,6 @@
             } else null
 
         fun StorageComponentContainer.useJavac() {
-            useImpl<JavacBasedClassFinder>()
-            useImpl<StubJavaResolverCache>()
-            useImpl<JavacBasedSourceElementFactory>()
         }
 
         @Suppress("USELESS_CAST")
--- a/compiler/cli/build.gradle
+++ b/compiler/cli/build.gradle
@@ -36,8 +36,7 @@
     "main" {
         java.srcDirs("src")
 		resources.srcDir("resources")
-        java.srcDirs("../builtins-serializer/src",
-                     "../javac-wrapper/src")
+        java.srcDirs("../builtins-serializer/src")
     }
     "test" { }
 }
