Tests: do not report backend diagnostics in diagnostic tests
There's a separate test data directory `testsWithJvmBackend` with a runner that properly invokes the JVM backend and reports diagnostics from it. All tests where JVM diagnostic presence/absence is important were copied/moved there in this and previous commits. The problem with the code removed in this commit is that it invoked some parts of the _old JVM backend_ and old light classes, which is very far from what users see in the production compiler at this point. This led to real issues where we implemented incorrect behavior in K2 based on the misleading diagnostic report from the K1 test. The diagnostic in `triangleWithFlexibleTypeAndSubstitution4.kt` was removed, but there's a copy of this test in `codegen/box/javaInterop` which fails for K2 (KT-66529). The diagnostic in `intersectionWithMappedSignature.kt` was removed and that is OK because at this point CONFLICTING_JVM_DECLARATIONS there seems like a bug in the old JVM backend.
This commit is contained in:
committed by
Space Team
parent
7d6cd8d126
commit
324d2e042a
Vendored
-38
@@ -1,38 +0,0 @@
|
||||
// FULL_JDK
|
||||
// SCOPE_DUMP: B1:remove, B2:remove
|
||||
// FILE: Java1.java
|
||||
public interface Java1 {
|
||||
Boolean remove(Integer element);
|
||||
}
|
||||
|
||||
// FILE: testRemove.kt
|
||||
import java.util.*
|
||||
|
||||
// CONFLICTING_JVM_DECLARATIONS in K1 is only reported with old backend, not with K1.
|
||||
class B1 : ArrayList<Int>(), Java1 {
|
||||
override fun remove(element: Int?): Boolean {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// CONFLICTING_JVM_DECLARATIONS in K1 is only reported with old backend, not with K1.
|
||||
class B2 : ArrayList<Int>(), Java1 {
|
||||
}
|
||||
|
||||
// FILE: Java2.java
|
||||
public interface Java2 {
|
||||
Character get(Integer i);
|
||||
}
|
||||
|
||||
// FILE: MyString.java
|
||||
public abstract class MyString implements CharSequence {
|
||||
@Override
|
||||
public char charAt(int i) {
|
||||
return 'c';
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: testRenamed.kt
|
||||
abstract class B3 : MyString(), Java2 {
|
||||
override fun get(i: Int?): Char? = null
|
||||
}
|
||||
Vendored
+4
-5
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// FULL_JDK
|
||||
// SCOPE_DUMP: B1:remove, B2:remove
|
||||
// FILE: Java1.java
|
||||
@@ -8,14 +9,12 @@ public interface Java1 {
|
||||
// FILE: testRemove.kt
|
||||
import java.util.*
|
||||
|
||||
// CONFLICTING_JVM_DECLARATIONS in K1 is only reported with old backend, not with K1.
|
||||
class <!CONFLICTING_JVM_DECLARATIONS!>B1<!> : ArrayList<Int>(), Java1 {
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>override fun remove(element: Int?): Boolean<!> {
|
||||
class B1 : ArrayList<Int>(), Java1 {
|
||||
override fun remove(element: Int?): Boolean {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// CONFLICTING_JVM_DECLARATIONS in K1 is only reported with old backend, not with K1.
|
||||
class B2 : ArrayList<Int>(), Java1 {
|
||||
}
|
||||
|
||||
@@ -35,4 +34,4 @@ public abstract class MyString implements CharSequence {
|
||||
// FILE: testRenamed.kt
|
||||
abstract class B3 : MyString(), Java2 {
|
||||
override fun get(i: Int?): Char? = null
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -22,4 +22,3 @@ B2:
|
||||
[SubstitutionOverride(DeclarationSite)]: public abstract override fun remove(element: R|E|): R|kotlin/Boolean| from Substitution scope for [Use site scope of kotlin/collections/MutableCollection] for type kotlin/collections/MutableList<E> [id: 11]
|
||||
[Library]: public abstract fun remove(element: R|E|): R|kotlin/Boolean| from Use site scope of kotlin/collections/MutableCollection [id: 8]
|
||||
[Enhancement]: public abstract fun remove(element: R|kotlin/Int!|): R|kotlin/Boolean!| from Java enhancement scope for /Java1 [id: 13]
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ open class C : A<Int>()
|
||||
|
||||
interface D : B<Int>
|
||||
|
||||
class <!CONFLICTING_INHERITED_JVM_DECLARATIONS!>E<!> : C(), D
|
||||
class E : C(), D
|
||||
|
||||
fun main() {
|
||||
E().foo(42)
|
||||
|
||||
-9
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.test.directives
|
||||
|
||||
import org.jetbrains.kotlin.test.backend.handlers.JvmBackendDiagnosticsHandler
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.USE_JAVAC
|
||||
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.ConstantValuesHandler
|
||||
@@ -54,14 +53,6 @@ object DiagnosticsDirectives : SimpleDirectivesContainer() {
|
||||
""".trimIndent()
|
||||
)
|
||||
|
||||
val REPORT_JVM_DIAGNOSTICS_ON_FRONTEND by directive(
|
||||
description = """
|
||||
Collect additional jvm specific diagnostics on frontend
|
||||
Note that this directive is not needed if ${JvmBackendDiagnosticsHandler::class}
|
||||
is enabled in test
|
||||
""".trimIndent()
|
||||
)
|
||||
|
||||
val RENDER_PACKAGE by stringDirective(
|
||||
description = """
|
||||
Dump declaration from packages listed in directive
|
||||
|
||||
-31
@@ -5,24 +5,17 @@
|
||||
|
||||
package org.jetbrains.kotlin.test.frontend.classic.handlers
|
||||
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
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
|
||||
import org.jetbrains.kotlin.diagnostics.Severity
|
||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.AnalyzingUtils
|
||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactoryImpl
|
||||
import org.jetbrains.kotlin.test.directives.AdditionalFilesDirectives
|
||||
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives
|
||||
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.MARK_DYNAMIC_CALLS
|
||||
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.REPORT_JVM_DIAGNOSTICS_ON_FRONTEND
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
|
||||
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
||||
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact
|
||||
@@ -54,10 +47,6 @@ class ClassicDiagnosticsHandler(testServices: TestServices) : ClassicFrontendAna
|
||||
allDiagnostics = allDiagnostics.filter { it.factory.name != Errors.NEWER_VERSION_IN_SINCE_KOTLIN.name }
|
||||
}
|
||||
|
||||
if (allDiagnostics.none { it.severity == Severity.ERROR }) {
|
||||
allDiagnostics = allDiagnostics + computeJvmSignatureDiagnostics(info)
|
||||
}
|
||||
|
||||
val diagnosticsPerFile = allDiagnostics.groupBy { it.psiFile }
|
||||
val withNewInferenceModeEnabled = testServices.withNewInferenceModeEnabled()
|
||||
val configuration = reporter.createConfiguration(module)
|
||||
@@ -76,26 +65,6 @@ class ClassicDiagnosticsHandler(testServices: TestServices) : ClassicFrontendAna
|
||||
}
|
||||
}
|
||||
|
||||
private fun computeJvmSignatureDiagnostics(info: ClassicFrontendOutputArtifact): Set<Diagnostic> {
|
||||
if (testServices.moduleStructure.modules.any { !it.targetPlatform.isJvm() }) return emptySet()
|
||||
if (REPORT_JVM_DIAGNOSTICS_ON_FRONTEND !in testServices.moduleStructure.allDirectives) return emptySet()
|
||||
val bindingContext = info.analysisResult.bindingContext
|
||||
val jvmSignatureDiagnostics = HashSet<Diagnostic>()
|
||||
for (ktFile in info.ktFiles.values) {
|
||||
val declarations = PsiTreeUtil.findChildrenOfType(ktFile, KtDeclaration::class.java)
|
||||
for (declaration in declarations) {
|
||||
val diagnostics = getJvmSignatureDiagnostics(
|
||||
declaration,
|
||||
bindingContext.diagnostics,
|
||||
) ?: continue
|
||||
|
||||
jvmSignatureDiagnostics.addAll(diagnostics.forElement(declaration))
|
||||
}
|
||||
}
|
||||
return jvmSignatureDiagnostics
|
||||
}
|
||||
|
||||
|
||||
private fun processDebugInfoDiagnostics(
|
||||
configuration: DiagnosticsRenderingConfiguration,
|
||||
module: TestModule,
|
||||
|
||||
-2
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.test.builders.classicFrontendStep
|
||||
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB
|
||||
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.CHECK_COMPILE_TIME_VALUES
|
||||
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.DIAGNOSTICS
|
||||
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.REPORT_JVM_DIAGNOSTICS_ON_FRONTEND
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.JDK_KIND
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.USE_PSI_CLASS_FILES_READING
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.WITH_REFLECT
|
||||
@@ -56,7 +55,6 @@ abstract class AbstractDiagnosticTest : AbstractKotlinCompilerTest() {
|
||||
|
||||
defaultDirectives {
|
||||
+USE_PSI_CLASS_FILES_READING
|
||||
+REPORT_JVM_DIAGNOSTICS_ON_FRONTEND
|
||||
}
|
||||
|
||||
enableMetaInfoHandler()
|
||||
|
||||
-3
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.builders.classicFrontendHandlersStep
|
||||
import org.jetbrains.kotlin.test.builders.classicFrontendStep
|
||||
import org.jetbrains.kotlin.test.builders.configureClassicFrontendHandlersStep
|
||||
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.REPORT_JVM_DIAGNOSTICS_ON_FRONTEND
|
||||
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.SKIP_TXT
|
||||
import org.jetbrains.kotlin.test.directives.ForeignAnnotationsDirectives.ANNOTATIONS_PATH
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.ALL_JAVA_AS_BINARY
|
||||
@@ -26,7 +25,6 @@ import org.jetbrains.kotlin.test.model.DependencyKind
|
||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||
import org.jetbrains.kotlin.test.preprocessors.ExternalAnnotationsSourcePreprocessor
|
||||
import org.jetbrains.kotlin.test.preprocessors.JspecifyMarksCleanupPreprocessor
|
||||
import org.jetbrains.kotlin.test.services.SourceFilePreprocessor
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
import org.jetbrains.kotlin.test.services.configuration.*
|
||||
import org.jetbrains.kotlin.test.services.jvm.ForeignAnnotationAgainstCompiledJavaTestSuppressor
|
||||
@@ -48,7 +46,6 @@ abstract class AbstractForeignAnnotationsTestBase(private val kind: ForeignAnnot
|
||||
}
|
||||
|
||||
defaultDirectives {
|
||||
+REPORT_JVM_DIAGNOSTICS_ON_FRONTEND
|
||||
+WITH_FOREIGN_ANNOTATIONS
|
||||
if (kind.compiledJava) {
|
||||
+ALL_JAVA_AS_BINARY
|
||||
|
||||
-2
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.builders.classicFrontendHandlersStep
|
||||
import org.jetbrains.kotlin.test.builders.classicFrontendStep
|
||||
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.DIAGNOSTICS
|
||||
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.REPORT_JVM_DIAGNOSTICS_ON_FRONTEND
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.USE_PSI_CLASS_FILES_READING
|
||||
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFailingTestSuppressor
|
||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler
|
||||
@@ -32,7 +31,6 @@ abstract class AbstractParcelizeDiagnosticTest : AbstractKotlinCompilerTest() {
|
||||
|
||||
defaultDirectives {
|
||||
+USE_PSI_CLASS_FILES_READING
|
||||
+REPORT_JVM_DIAGNOSTICS_ON_FRONTEND
|
||||
DIAGNOSTICS with listOf("-UNUSED_PARAMETER", "-PRE_RELEASE_CLASS")
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user