[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:
committed by
Space Team
parent
bd49df9878
commit
770332152b
+4
-1
@@ -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)
|
||||
|
||||
|
||||
Vendored
-41
@@ -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<!>() {}
|
||||
Reference in New Issue
Block a user