[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.annotations.argumentValue
import org.jetbrains.kotlin.resolve.constants.EnumValue import org.jetbrains.kotlin.resolve.constants.EnumValue
import org.jetbrains.kotlin.resolve.jvm.annotations.JVM_OVERLOADS_FQ_NAME 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.KotlinType
import org.jetbrains.kotlin.types.typeUtil.isAnyOrNullableAny import org.jetbrains.kotlin.types.typeUtil.isAnyOrNullableAny
@@ -341,7 +342,7 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
object : DataClassMethodGenerator(classOrObject, bindingContext) { object : DataClassMethodGenerator(classOrObject, bindingContext) {
private fun addFunction(descriptor: FunctionDescriptor, declarationForOrigin: KtDeclaration? = null) { 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) { override fun generateComponentFunction(function: FunctionDescriptor, parameter: ValueParameterDescriptor) {
@@ -387,9 +388,17 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
when (delegate) { when (delegate) {
is PropertyDescriptor -> delegate.accessors.mapTo(result) { 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( fun KtUltraLightClass.createGeneratedMethodFromDescriptor(
descriptor: FunctionDescriptor, descriptor: FunctionDescriptor,
declarationForOrigin: KtDeclaration? = null, declarationOriginKindForOrigin: JvmDeclarationOriginKind = JvmDeclarationOriginKind.OTHER,
declarationForOrigin: KtDeclaration? = null
): KtLightMethod { ): KtLightMethod {
val kotlinOrigin = val kotlinOrigin =
@@ -244,7 +245,7 @@ fun KtUltraLightClass.createGeneratedMethodFromDescriptor(
?: DescriptorToSourceUtils.descriptorToDeclaration(descriptor) as? KtDeclaration ?: DescriptorToSourceUtils.descriptorToDeclaration(descriptor) as? KtDeclaration
?: kotlinOrigin ?: kotlinOrigin
val lightMemberOrigin = LightMemberOriginForDeclaration(kotlinOrigin, JvmDeclarationOriginKind.OTHER) val lightMemberOrigin = LightMemberOriginForDeclaration(kotlinOrigin, declarationOriginKindForOrigin)
return KtUltraLightMethodForDescriptor(descriptor, lightMethod(descriptor), lightMemberOrigin, support, this) return KtUltraLightMethodForDescriptor(descriptor, lightMethod(descriptor), lightMemberOrigin, support, this)
} }