[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)
|
register(FirLazyDeclarationResolver::class, FirDummyCompilerLazyDeclarationResolver)
|
||||||
registerCommonComponents(LanguageVersionSettingsImpl.DEFAULT/*TODO*/)
|
registerCommonComponents(LanguageVersionSettingsImpl.DEFAULT/*TODO*/)
|
||||||
registerCommonComponentsAfterExtensionsAreConfigured()
|
registerCommonComponentsAfterExtensionsAreConfigured()
|
||||||
registerJavaComponents(JavaModuleResolver.getInstance(project))
|
|
||||||
registerModuleData(moduleData)
|
registerModuleData(moduleData)
|
||||||
|
|
||||||
|
if (platform.isJvm()) {
|
||||||
|
registerJavaComponents(JavaModuleResolver.getInstance(project))
|
||||||
|
}
|
||||||
|
|
||||||
val kotlinScopeProvider = FirKotlinScopeProvider(::wrapScopeWithJvmMapped)
|
val kotlinScopeProvider = FirKotlinScopeProvider(::wrapScopeWithJvmMapped)
|
||||||
register(FirKotlinScopeProvider::class, kotlinScopeProvider)
|
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