[ULC] Add JvmDeclarationOriginKind.DELEGATION to DeclarationOriginKindForOrigin of delegated methods

This commit is contained in:
Igor Yakovlev
2020-07-31 14:50:29 +03:00
parent b263e1c924
commit 31b4a021a9
2 changed files with 15 additions and 5 deletions
@@ -39,6 +39,7 @@ import org.jetbrains.kotlin.resolve.annotations.JVM_STATIC_ANNOTATION_FQ_NAME
import org.jetbrains.kotlin.resolve.annotations.argumentValue
import org.jetbrains.kotlin.resolve.constants.EnumValue
import org.jetbrains.kotlin.resolve.jvm.annotations.JVM_OVERLOADS_FQ_NAME
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.typeUtil.isAnyOrNullableAny
@@ -341,7 +342,7 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
object : DataClassMethodGenerator(classOrObject, bindingContext) {
private fun addFunction(descriptor: FunctionDescriptor, declarationForOrigin: KtDeclaration? = null) {
result.add(createGeneratedMethodFromDescriptor(descriptor, declarationForOrigin))
result.add(createGeneratedMethodFromDescriptor(descriptor, JvmDeclarationOriginKind.OTHER, declarationForOrigin))
}
override fun generateComponentFunction(function: FunctionDescriptor, parameter: ValueParameterDescriptor) {
@@ -387,9 +388,17 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
when (delegate) {
is PropertyDescriptor -> delegate.accessors.mapTo(result) {
createGeneratedMethodFromDescriptor(it)
createGeneratedMethodFromDescriptor(
descriptor = it,
declarationOriginKindForOrigin = JvmDeclarationOriginKind.DELEGATION
)
}
is FunctionDescriptor -> result.add(createGeneratedMethodFromDescriptor(delegate))
is FunctionDescriptor -> result.add(
createGeneratedMethodFromDescriptor(
descriptor = delegate,
declarationOriginKindForOrigin = JvmDeclarationOriginKind.DELEGATION
)
)
}
}
}
@@ -236,7 +236,8 @@ fun KotlinType.cleanFromAnonymousTypes(): KotlinType? {
fun KtUltraLightClass.createGeneratedMethodFromDescriptor(
descriptor: FunctionDescriptor,
declarationForOrigin: KtDeclaration? = null,
declarationOriginKindForOrigin: JvmDeclarationOriginKind = JvmDeclarationOriginKind.OTHER,
declarationForOrigin: KtDeclaration? = null
): KtLightMethod {
val kotlinOrigin =
@@ -244,7 +245,7 @@ fun KtUltraLightClass.createGeneratedMethodFromDescriptor(
?: DescriptorToSourceUtils.descriptorToDeclaration(descriptor) as? KtDeclaration
?: kotlinOrigin
val lightMemberOrigin = LightMemberOriginForDeclaration(kotlinOrigin, JvmDeclarationOriginKind.OTHER)
val lightMemberOrigin = LightMemberOriginForDeclaration(kotlinOrigin, declarationOriginKindForOrigin)
return KtUltraLightMethodForDescriptor(descriptor, lightMethod(descriptor), lightMemberOrigin, support, this)
}