From c67517cb2bc99844d5393a655ef264ce46d05b73 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 6 Jun 2019 17:50:11 +0200 Subject: [PATCH] JVM IR: use fast class reading mode in boxAgainstJava tests annotationsViaActualTypeAliasFromBinary.kt is ignored because ExpectActualRemover can't find actual for the expected constructor of Anno now, because `ExpectedActualResolver.findActualForExpected` incorrectly filters out actual declarations without any source file, and Java classes loaded in the fast mode don't have any source files. This will need to be fixed separately, probably by making ExpectedActualResolver look for the actual class of an expected class member first (with source file-based filtering), and then unconditionally locating the corresponding member there --- .../kotlin/resolve/multiplatform/ExpectedActualResolver.kt | 2 ++ .../multiplatform/annotationsViaActualTypeAliasFromBinary.kt | 1 + .../codegen/ir/AbstractIrBlackBoxAgainstJavaCodegenTest.kt | 4 +--- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectedActualResolver.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectedActualResolver.kt index 1f6d8c53919..a121a02e057 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectedActualResolver.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectedActualResolver.kt @@ -52,6 +52,8 @@ object ExpectedActualResolver { is CallableMemberDescriptor -> { expected.findNamesakesFromModule(platformModule, moduleVisibilityFilter).filter { actual -> expected != actual && !actual.isExpect && + // TODO: use some other way to determine that the declaration is from Kotlin. + // This way behavior differs between fast and PSI-based Java class reading mode // TODO: support non-source definitions (e.g. from Java) actual.source.containingFile != SourceFile.NO_SOURCE_FILE }.groupBy { actual -> diff --git a/compiler/testData/codegen/boxAgainstJava/multiplatform/annotationsViaActualTypeAliasFromBinary.kt b/compiler/testData/codegen/boxAgainstJava/multiplatform/annotationsViaActualTypeAliasFromBinary.kt index 635fb7d069a..37a619d9caa 100644 --- a/compiler/testData/codegen/boxAgainstJava/multiplatform/annotationsViaActualTypeAliasFromBinary.kt +++ b/compiler/testData/codegen/boxAgainstJava/multiplatform/annotationsViaActualTypeAliasFromBinary.kt @@ -1,4 +1,5 @@ // !LANGUAGE: +MultiPlatformProjects +// IGNORE_BACKEND: JVM_IR // WITH_REFLECT // FILE: main.kt diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/ir/AbstractIrBlackBoxAgainstJavaCodegenTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/ir/AbstractIrBlackBoxAgainstJavaCodegenTest.kt index d85bef777dd..c8bb2c7a20c 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/ir/AbstractIrBlackBoxAgainstJavaCodegenTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/ir/AbstractIrBlackBoxAgainstJavaCodegenTest.kt @@ -5,16 +5,14 @@ package org.jetbrains.kotlin.codegen.ir -import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoot import org.jetbrains.kotlin.codegen.AbstractBlackBoxAgainstJavaCodegenTest import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.test.TargetBackend abstract class AbstractIrBlackBoxAgainstJavaCodegenTest : AbstractBlackBoxAgainstJavaCodegenTest() { - override fun updateConfiguration(configuration: CompilerConfiguration) { - configuration.addJvmClasspathRoot(javaClassesOutputDirectory) + super.updateConfiguration(configuration) configuration.put(JVMConfigurationKeys.IR, true) }