From cbf9b13ef862fe7f127fb94306b24f9f302cb8da Mon Sep 17 00:00:00 2001 From: Dmitry Gridin Date: Tue, 28 Jun 2022 17:57:33 +0200 Subject: [PATCH] Revert "Revert "[light classes] drop old light classes and backend: iteration #9"" This reverts commit 38c623bc3afb17e6055be03557264e8481ad0a48. --- .../compiler/CliExtraDiagnosticsProvider.kt | 7 +++--- .../FirKotlinToJvmBytecodeCompiler.kt | 3 +-- .../cli/jvm/compiler/KotlinCoreEnvironment.kt | 2 -- .../compiler/KotlinToJVMBytecodeCompiler.kt | 16 ++---------- .../compiler}/duplicateJvmSignatureUtil.kt | 6 ++--- .../KotlinExtraDiagnosticsProvider.java | 25 ------------------- .../handlers/ClassicDiagnosticsHandler.kt | 4 +-- .../kotlin/checkers/BaseDiagnosticsTest.kt | 18 +++---------- 8 files changed, 14 insertions(+), 67 deletions(-) rename compiler/{light-classes/src/org/jetbrains/kotlin/asJava => cli/src/org/jetbrains/kotlin/cli/jvm/compiler}/duplicateJvmSignatureUtil.kt (95%) delete mode 100644 compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinExtraDiagnosticsProvider.java diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliExtraDiagnosticsProvider.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliExtraDiagnosticsProvider.kt index 729c209e2db..b7eec859680 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliExtraDiagnosticsProvider.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliExtraDiagnosticsProvider.kt @@ -10,7 +10,6 @@ import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.util.CachedValue import com.intellij.psi.util.CachedValuesManager import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport -import org.jetbrains.kotlin.asJava.KotlinExtraDiagnosticsProvider import org.jetbrains.kotlin.asJava.LightClassGenerationSupport import org.jetbrains.kotlin.asJava.classes.getOutermostClassOrObject import org.jetbrains.kotlin.asJava.classes.safeIsLocal @@ -31,8 +30,8 @@ private val JAVA_API_STUB_LOCK = Key.create("JAVA_API_STUB_LOCK") private val javaApiStubInitIsRunning: ThreadLocal = ThreadLocal.withInitial { false } -class CliExtraDiagnosticsProvider : KotlinExtraDiagnosticsProvider { - override fun forClassOrObject(kclass: KtClassOrObject): Diagnostics { +object CliExtraDiagnosticsProvider { + fun forClassOrObject(kclass: KtClassOrObject): Diagnostics { if (kclass.shouldNotBeVisibleAsLightClass()) { return Diagnostics.EMPTY } @@ -44,7 +43,7 @@ class CliExtraDiagnosticsProvider : KotlinExtraDiagnosticsProvider { }.extraDiagnostics } - override fun forFacade(file: KtFile, moduleScope: GlobalSearchScope): Diagnostics { + fun forFacade(file: KtFile, moduleScope: GlobalSearchScope): Diagnostics { val project = file.project val facadeFqName = JvmFileClassUtil.getFileClassInfoNoResolve(file).facadeClassFqName val files = KotlinAsJavaSupport.getInstance(project) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt index 216da932262..aa43873521b 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt @@ -1,12 +1,11 @@ /* - * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package org.jetbrains.kotlin.cli.jvm.compiler import org.jetbrains.kotlin.analyzer.common.CommonPlatformAnalyzerServices -import org.jetbrains.kotlin.asJava.FilteredJvmDiagnostics import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt index 9b9f8b8685c..4f13d455ad2 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt @@ -39,7 +39,6 @@ import com.intellij.util.io.URLUtil import com.intellij.util.lang.UrlClassLoader import org.jetbrains.annotations.TestOnly import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport -import org.jetbrains.kotlin.asJava.KotlinExtraDiagnosticsProvider import org.jetbrains.kotlin.asJava.LightClassGenerationSupport import org.jetbrains.kotlin.asJava.classes.FacadeCache import org.jetbrains.kotlin.asJava.finder.JavaElementFinder @@ -720,7 +719,6 @@ class KotlinCoreEnvironment private constructor( val traceHolder = CliTraceHolder() val cliLightClassGenerationSupport = CliLightClassGenerationSupport(traceHolder, project) val kotlinAsJavaSupport = CliKotlinAsJavaSupport(this, traceHolder) - registerService(KotlinExtraDiagnosticsProvider::class.java, CliExtraDiagnosticsProvider()) registerService(LightClassGenerationSupport::class.java, cliLightClassGenerationSupport) registerService(CliLightClassGenerationSupport::class.java, cliLightClassGenerationSupport) registerService(KotlinAsJavaSupport::class.java, kotlinAsJavaSupport) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt index 11ed7612baa..16a22118b73 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt @@ -1,17 +1,6 @@ /* - * 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. + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package org.jetbrains.kotlin.cli.jvm.compiler @@ -24,7 +13,6 @@ import com.intellij.psi.PsiJavaModule import com.intellij.psi.search.DelegatingGlobalSearchScope import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.analyzer.AnalysisResult -import org.jetbrains.kotlin.asJava.FilteredJvmDiagnostics import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.checkKotlinPackageUsage diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/duplicateJvmSignatureUtil.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/duplicateJvmSignatureUtil.kt similarity index 95% rename from compiler/light-classes/src/org/jetbrains/kotlin/asJava/duplicateJvmSignatureUtil.kt rename to compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/duplicateJvmSignatureUtil.kt index 8ed5fd80d36..0a034e2daf4 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/duplicateJvmSignatureUtil.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/duplicateJvmSignatureUtil.kt @@ -3,7 +3,7 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.asJava +package org.jetbrains.kotlin.cli.jvm.compiler import com.intellij.psi.PsiElement import com.intellij.psi.search.GlobalSearchScope @@ -21,7 +21,7 @@ import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind.* fun getJvmSignatureDiagnostics(element: PsiElement, otherDiagnostics: Diagnostics, moduleScope: GlobalSearchScope): Diagnostics? { fun getDiagnosticsForClass(ktClassOrObject: KtClassOrObject): Diagnostics { val outermostClass = getOutermostClassOrObject(ktClassOrObject) - return KotlinExtraDiagnosticsProvider.getInstance(ktClassOrObject.project).forClassOrObject(outermostClass) + return CliExtraDiagnosticsProvider.forClassOrObject(outermostClass) } fun doGetDiagnostics(): Diagnostics? { @@ -45,7 +45,7 @@ fun getJvmSignatureDiagnostics(element: PsiElement, otherDiagnostics: Diagnostic when (parent) { is KtFile -> { - return KotlinExtraDiagnosticsProvider.getInstance(parent.project).forFacade(parent, moduleScope) + return CliExtraDiagnosticsProvider.forFacade(parent, moduleScope) } is KtClassBody -> { diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinExtraDiagnosticsProvider.java b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinExtraDiagnosticsProvider.java deleted file mode 100644 index 4bab2ecb9a7..00000000000 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinExtraDiagnosticsProvider.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.asJava; - -import com.intellij.openapi.project.Project; -import com.intellij.psi.search.GlobalSearchScope; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.psi.KtClassOrObject; -import org.jetbrains.kotlin.psi.KtFile; -import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics; - -public interface KotlinExtraDiagnosticsProvider { - @NotNull - Diagnostics forClassOrObject(@NotNull KtClassOrObject kclass); - - @NotNull - Diagnostics forFacade(@NotNull KtFile file, @NotNull GlobalSearchScope moduleScope); - - static @NotNull KotlinExtraDiagnosticsProvider getInstance(@NotNull Project project) { - return project.getService(KotlinExtraDiagnosticsProvider.class); - } -} \ No newline at end of file diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/handlers/ClassicDiagnosticsHandler.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/handlers/ClassicDiagnosticsHandler.kt index 2807a6514ea..d011a19a3e0 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/handlers/ClassicDiagnosticsHandler.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/handlers/ClassicDiagnosticsHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -7,10 +7,10 @@ package org.jetbrains.kotlin.test.frontend.classic.handlers import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.util.PsiTreeUtil -import org.jetbrains.kotlin.asJava.getJvmSignatureDiagnostics import org.jetbrains.kotlin.checkers.diagnostics.SyntaxErrorDiagnostic import org.jetbrains.kotlin.checkers.utils.CheckerTestUtil import org.jetbrains.kotlin.checkers.utils.DiagnosticsRenderingConfiguration +import org.jetbrains.kotlin.cli.jvm.compiler.getJvmSignatureDiagnostics import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.Errors diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt index eb35ad5783e..2f8e5e5f8da 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt @@ -1,17 +1,6 @@ /* - * 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. + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package org.jetbrains.kotlin.checkers @@ -23,7 +12,6 @@ import com.intellij.openapi.util.TextRange import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.util.PsiTreeUtil import com.intellij.util.containers.ContainerUtil -import org.jetbrains.kotlin.asJava.getJvmSignatureDiagnostics import org.jetbrains.kotlin.checkers.BaseDiagnosticsTest.TestFile import org.jetbrains.kotlin.checkers.BaseDiagnosticsTest.TestModule import org.jetbrains.kotlin.checkers.diagnostics.ActualDiagnostic @@ -34,6 +22,7 @@ import org.jetbrains.kotlin.checkers.diagnostics.factories.SyntaxErrorDiagnostic import org.jetbrains.kotlin.checkers.utils.CheckerTestUtil import org.jetbrains.kotlin.checkers.utils.DiagnosticsRenderingConfiguration import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment +import org.jetbrains.kotlin.cli.jvm.compiler.getJvmSignatureDiagnostics import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl @@ -56,7 +45,6 @@ import org.jetbrains.kotlin.test.util.KtTestUtil import org.jetbrains.kotlin.utils.addIfNotNull import org.junit.Assert import java.io.File -import java.util.* import java.util.regex.Pattern import kotlin.reflect.jvm.javaField