K1:report warning on OptIn usages inside SAM constructor #KT-47708 Fixed

This commit is contained in:
Mikhail Glukhikh
2022-05-31 13:38:43 +02:00
committed by Space
parent 8fefa8a57b
commit 6fc27c22f4
4 changed files with 20 additions and 2 deletions
@@ -13,7 +13,9 @@ import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl
import org.jetbrains.kotlin.descriptors.synthetic.FunctionInterfaceConstructorDescriptor
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindExclude
interface SamConstructorDescriptor : SimpleFunctionDescriptor, FunctionInterfaceConstructorDescriptor
interface SamConstructorDescriptor : SimpleFunctionDescriptor, FunctionInterfaceConstructorDescriptor {
fun getSingleAbstractMethod(): CallableMemberDescriptor
}
class SamConstructorDescriptorImpl(
containingDeclaration: DeclarationDescriptor,
@@ -28,6 +30,9 @@ class SamConstructorDescriptorImpl(
), SamConstructorDescriptor {
override val baseDescriptorForSynthetic: ClassDescriptor
get() = samInterface
override fun getSingleAbstractMethod(): CallableMemberDescriptor =
getAbstractMembers(samInterface).single()
}
object SamConstructorDescriptorKindExclude : DescriptorKindExclude() {
@@ -27,6 +27,9 @@ class SamTypeAliasConstructorDescriptorImpl(
CallableMemberDescriptor.Kind.SYNTHESIZED,
typeAliasDescriptor.source
), SamTypeAliasConstructorDescriptor {
override fun getSingleAbstractMethod(): CallableMemberDescriptor =
expandedConstructorDescriptor.getSingleAbstractMethod()
override val baseDescriptorForSynthetic: ClassDescriptor
get() = expandedConstructorDescriptor.baseDescriptorForSynthetic
}