UltraLight implementation for local and anonymous declarations

This commit is contained in:
Igor Yakovlev
2019-07-08 21:27:18 +03:00
parent d6c54b845b
commit 79a603768a
18 changed files with 389 additions and 178 deletions
@@ -87,7 +87,8 @@ class KotlinTypeMapper @JvmOverloads constructor(
private val incompatibleClassTracker: IncompatibleClassTracker = IncompatibleClassTracker.DoNothing,
val jvmTarget: JvmTarget = JvmTarget.DEFAULT,
private val isIrBackend: Boolean = false,
private val typePreprocessor: ((KotlinType) -> KotlinType?)? = null
private val typePreprocessor: ((KotlinType) -> KotlinType?)? = null,
private val namePreprocessor: ((ClassDescriptor) -> String?)? = null
) {
private val isReleaseCoroutines = languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines)
@@ -104,6 +105,10 @@ class KotlinTypeMapper @JvmOverloads constructor(
return getPredefinedTypeForClass(classDescriptor)?.internalName
}
override fun getPredefinedFullInternalNameForClass(classDescriptor: ClassDescriptor): String? {
return namePreprocessor?.invoke(classDescriptor)
}
override fun processErrorType(kotlinType: KotlinType, descriptor: ClassDescriptor) {
if (classBuilderMode.generateBodies) {
throw IllegalStateException(generateErrorMessageForErrorType(kotlinType, descriptor))