Support inline for private @JvmDefault members

This commit is contained in:
Mikhael Bogdanov
2018-02-27 12:15:55 +01:00
parent affe445955
commit d84a15c0f6
4 changed files with 73 additions and 1 deletions
@@ -28,6 +28,8 @@ import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCallWithAssert
import org.jetbrains.kotlin.resolve.jvm.annotations.hasJvmFieldAnnotation
import org.jetbrains.kotlin.resolve.jvm.annotations.isCallableMemberWithJvmDefaultAnnotation
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature
import org.jetbrains.kotlin.utils.addIfNotNull
import org.jetbrains.org.objectweb.asm.Label
@@ -445,7 +447,9 @@ class PsiSourceCompilerForInline(private val codegen: ExpressionCodegen, overrid
}
is ClassDescriptor -> {
val kind =
if (DescriptorUtils.isInterface(descriptor) && innerDescriptor !is ClassDescriptor)
if (DescriptorUtils.isInterface(descriptor) &&
innerDescriptor !is ClassDescriptor && !innerDescriptor.isCallableMemberWithJvmDefaultAnnotation()
)
OwnerKind.DEFAULT_IMPLS
else OwnerKind.IMPLEMENTATION