K2: Use deserialized type annotation for lambda type resolution.
This commit adds code to check whether a deserialized cone type is a special function type kind or not when resolving the type of a lambda expression (anonymous function). If it is a special function kind, it sets the type of lambda based on the special function kind. ^KT-64994 Fixed
This commit is contained in:
@@ -24,6 +24,7 @@ dependencies {
|
||||
testImplementation(projectTests(":compiler:tests-common"))
|
||||
testApi(projectTests(":compiler:test-infrastructure-utils"))
|
||||
testApi(projectTests(":compiler:test-infrastructure"))
|
||||
testImplementation(projectTests(":plugins:fir-plugin-prototype"))
|
||||
testImplementation(projectTests(":compiler:tests-common-new"))
|
||||
testImplementation(projectTests(":analysis:analysis-api-impl-barebone"))
|
||||
testImplementation(project(":analysis:symbol-light-classes"))
|
||||
|
||||
+11
-3
@@ -26,19 +26,19 @@ import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.plugin.services.PluginRuntimeAnnotationsProvider
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||
import org.jetbrains.kotlin.ir.util.DumpIrTreeOptions
|
||||
import org.jetbrains.kotlin.ir.util.dump
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.test.Constructor
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
|
||||
import org.jetbrains.kotlin.test.directives.model.DirectiveApplicability
|
||||
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
||||
import org.jetbrains.kotlin.test.model.TestModule
|
||||
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
import org.jetbrains.kotlin.test.services.assertions
|
||||
import org.jetbrains.kotlin.test.services.*
|
||||
import org.jetbrains.org.objectweb.asm.ClassReader
|
||||
import org.jetbrains.org.objectweb.asm.Opcodes
|
||||
import org.jetbrains.org.objectweb.asm.Type
|
||||
@@ -48,6 +48,11 @@ import kotlin.test.assertFalse
|
||||
|
||||
abstract class AbstractMultiModuleCompilerFacilityTest : AbstractCompilerFacilityTest()
|
||||
|
||||
abstract class AbstractFirPluginPrototypeMultiBinaryModuleCompilerFacilityTest : AbstractCompilerFacilityTest() {
|
||||
override fun extraCustomRuntimeClasspathProviders(): Array<Constructor<RuntimeClasspathProvider>> =
|
||||
arrayOf(::PluginRuntimeAnnotationsProvider)
|
||||
}
|
||||
|
||||
abstract class AbstractCompilerFacilityTest : AbstractAnalysisApiBasedTest() {
|
||||
private companion object {
|
||||
private val ALLOWED_ERRORS = listOf(
|
||||
@@ -107,6 +112,8 @@ abstract class AbstractCompilerFacilityTest : AbstractAnalysisApiBasedTest() {
|
||||
}
|
||||
}
|
||||
|
||||
open fun extraCustomRuntimeClasspathProviders(): Array<Constructor<RuntimeClasspathProvider>> = emptyArray()
|
||||
|
||||
override fun configureTest(builder: TestConfigurationBuilder) {
|
||||
super.configureTest(builder)
|
||||
with(builder) {
|
||||
@@ -116,6 +123,7 @@ abstract class AbstractCompilerFacilityTest : AbstractAnalysisApiBasedTest() {
|
||||
+ConfigurationDirectives.WITH_STDLIB
|
||||
+JvmEnvironmentConfigurationDirectives.FULL_JDK
|
||||
}
|
||||
useCustomRuntimeClasspathProviders(*extraCustomRuntimeClasspathProviders())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user