kapt: Fix compilation in 'compile' running mode (KT-33800)
This commit is contained in:
@@ -47,6 +47,7 @@ import org.jetbrains.kotlin.resolve.BindingTrace
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||
import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisHandlerExtension
|
||||
import org.jetbrains.kotlin.resolve.jvm.extensions.PartialAnalysisHandlerExtension
|
||||
import org.jetbrains.kotlin.utils.decodePluginOptions
|
||||
import java.io.ByteArrayInputStream
|
||||
import java.io.File
|
||||
@@ -186,7 +187,7 @@ class Kapt3ComponentRegistrar : ComponentRegistrar {
|
||||
val kapt3AnalysisCompletedHandlerExtension = ClasspathBasedKapt3Extension(options, logger, configuration)
|
||||
|
||||
AnalysisHandlerExtension.registerExtension(project, kapt3AnalysisCompletedHandlerExtension)
|
||||
StorageComponentContainerContributor.registerExtension(project, KaptComponentContributor())
|
||||
StorageComponentContainerContributor.registerExtension(project, KaptComponentContributor(kapt3AnalysisCompletedHandlerExtension))
|
||||
}
|
||||
|
||||
private fun KaptOptions.Builder.checkOptions(project: MockProject, logger: KaptLogger, configuration: CompilerConfiguration): Boolean {
|
||||
@@ -235,14 +236,14 @@ class Kapt3ComponentRegistrar : ComponentRegistrar {
|
||||
return true
|
||||
}
|
||||
|
||||
class KaptComponentContributor : StorageComponentContainerContributor {
|
||||
class KaptComponentContributor(private val analysisExtension: PartialAnalysisHandlerExtension) : StorageComponentContainerContributor {
|
||||
override fun registerModuleComponents(
|
||||
container: StorageComponentContainer,
|
||||
platform: TargetPlatform,
|
||||
moduleDescriptor: ModuleDescriptor
|
||||
) {
|
||||
if (!platform.isJvm()) return
|
||||
container.useInstance(KaptAnonymousTypeTransformer())
|
||||
container.useInstance(KaptAnonymousTypeTransformer(analysisExtension))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+10
-2
@@ -11,15 +11,23 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithVisibility
|
||||
import org.jetbrains.kotlin.resolve.DeclarationSignatureAnonymousTypeTransformer
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils.*
|
||||
import org.jetbrains.kotlin.resolve.jvm.extensions.PartialAnalysisHandlerExtension
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.TypeProjectionImpl
|
||||
import org.jetbrains.kotlin.types.replace
|
||||
import org.jetbrains.kotlin.types.typeUtil.builtIns
|
||||
|
||||
class KaptAnonymousTypeTransformer : DeclarationSignatureAnonymousTypeTransformer {
|
||||
class KaptAnonymousTypeTransformer(
|
||||
private val analysisExtension: PartialAnalysisHandlerExtension
|
||||
) : DeclarationSignatureAnonymousTypeTransformer {
|
||||
override fun transformAnonymousType(descriptor: DeclarationDescriptorWithVisibility, type: KotlinType): KotlinType? {
|
||||
if (isLocal(descriptor))
|
||||
if (!analysisExtension.analyzePartially) {
|
||||
return null
|
||||
}
|
||||
|
||||
if (isLocal(descriptor)) {
|
||||
return type
|
||||
}
|
||||
|
||||
return convertPossiblyAnonymousType(type)
|
||||
}
|
||||
|
||||
+3
-2
@@ -113,8 +113,9 @@ abstract class AbstractKotlinKapt3Test : CodegenTestCase() {
|
||||
|
||||
// Use light analysis mode in tests
|
||||
val project = myEnvironment.project
|
||||
AnalysisHandlerExtension.registerExtension(project, PartialAnalysisHandlerExtension())
|
||||
StorageComponentContainerContributor.registerExtension(project, KaptComponentContributor())
|
||||
val analysisExtension = PartialAnalysisHandlerExtension()
|
||||
AnalysisHandlerExtension.registerExtension(project, analysisExtension)
|
||||
StorageComponentContainerContributor.registerExtension(project, KaptComponentContributor(analysisExtension))
|
||||
|
||||
loadMultiFiles(files)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user