[LL] Don't register Java components for built-ins of non-JVM modules

This is the cause for the 'missing dependency supertype: Serializable'
issue: symbols from built-ins will have the additional Serializable
supertype provided by FirJvmDeserializationExtension that shouldn't
be used for non-JVM. In regular modules it is correctly not added by
the non-JVM sessions, leading to difference in supertypes and the error.

KTIJ-27449
This commit is contained in:
Pavel Kirpichenkov
2023-10-18 19:37:59 +03:00
committed by Space Team
parent bd49df9878
commit 770332152b
2 changed files with 4 additions and 42 deletions
@@ -77,9 +77,12 @@ class LLFirBuiltinsSessionFactory(private val project: Project) {
register(FirLazyDeclarationResolver::class, FirDummyCompilerLazyDeclarationResolver)
registerCommonComponents(LanguageVersionSettingsImpl.DEFAULT/*TODO*/)
registerCommonComponentsAfterExtensionsAreConfigured()
registerJavaComponents(JavaModuleResolver.getInstance(project))
registerModuleData(moduleData)
if (platform.isJvm()) {
registerJavaComponents(JavaModuleResolver.getInstance(project))
}
val kotlinScopeProvider = FirKotlinScopeProvider(::wrapScopeWithJvmMapped)
register(FirKotlinScopeProvider::class, kotlinScopeProvider)
@@ -1,41 +0,0 @@
// LL_FIR_DIVERGENCE
// Difference to FIR is false-positive report of MISSING_DEPENDENCY_SUPERCLASS.
// This is because JVM Enum with `java.io.Serializable` superclass resolved instead of common builtin Enum.
// Must be fixed with KT-61757.
// LL_FIR_DIVERGENCE
// Test for ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT diagnostic when annotations arguments are lazily resolved.
// LANGUAGE: +MultiPlatformProjects
// MODULE: common
// TARGET_PLATFORM: Common
@Target(AnnotationTarget.<!MISSING_DEPENDENCY_SUPERCLASS!>TYPE<!>, AnnotationTarget.<!MISSING_DEPENDENCY_SUPERCLASS!>FUNCTION<!>)
annotation class Ann(val s: String = "default")
expect fun onType_negative(): @Ann("") Any
expect fun onType_positive(): @Ann("") Any
@Ann("")
expect fun onFunction_negative()
@Ann("")
expect fun onFunction_positive()
@Ann
expect fun withEmptyArguments_negative()
@Ann
expect fun withEmptyArguments_positive()
// MODULE: main()()(common)
// TARGET_PLATFORM: JVM
actual fun onType_negative(): @Ann("") Any = Any()
actual fun <!ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT!>onType_positive<!>(): @Ann("incorrect") Any = Any()
@Ann("")
actual fun onFunction_negative() {}
@Ann("incorrect")
actual fun <!ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT!>onFunction_positive<!>() {}
@Ann
actual fun withEmptyArguments_negative() {}
@Ann("incorrect")
actual fun <!ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT!>withEmptyArguments_positive<!>() {}