[stubs] fix cls stubs for declarations with context receivers

^KTIJ-21243 fixed
This commit is contained in:
Ilya Kirillov
2022-06-16 17:13:03 +02:00
parent a47880a98b
commit ba797fa1b4
12 changed files with 297 additions and 12 deletions
@@ -0,0 +1,24 @@
// !LANGUAGE: +ContextReceivers
private open class ContextReceiversCallableMembers {
context(A, B)
private fun Int.function(): Int = valueA + valueB
context(A, B)
private val Int.property: Int get() = valueA + valueB
context(A, B)
private var Int.propertyWithSetter: Int
get() = valueA + valueB
set(v) { println(valueA + valueB) }
}
class A {
val valueA: Int = 10
}
class B {
val valueB: Int = 11
}
@@ -0,0 +1,73 @@
PsiJetFileStubImpl[package=]
PACKAGE_DIRECTIVE
IMPORT_LIST
CLASS[classId=/ContextReceiversCallableMembers, fqName=ContextReceiversCallableMembers, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=ContextReceiversCallableMembers, superNames=[]]
MODIFIER_LIST[open private]
PRIMARY_CONSTRUCTOR
MODIFIER_LIST[public]
VALUE_PARAMETER_LIST
CLASS_BODY
PROPERTY[fqName=ContextReceiversCallableMembers.property, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=true, isTopLevel=false, isVar=false, name=property]
CONTEXT_RECEIVER_LIST
CONTEXT_RECEIVER
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=A]
CONTEXT_RECEIVER
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=B]
MODIFIER_LIST[private final]
TYPE_REFERENCE
USER_TYPE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=kotlin]
REFERENCE_EXPRESSION[referencedName=Int]
TYPE_REFERENCE
USER_TYPE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=kotlin]
REFERENCE_EXPRESSION[referencedName=Int]
PROPERTY[fqName=ContextReceiversCallableMembers.propertyWithSetter, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=true, isTopLevel=false, isVar=true, name=propertyWithSetter]
CONTEXT_RECEIVER_LIST
CONTEXT_RECEIVER
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=A]
CONTEXT_RECEIVER
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=B]
MODIFIER_LIST[private final]
TYPE_REFERENCE
USER_TYPE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=kotlin]
REFERENCE_EXPRESSION[referencedName=Int]
TYPE_REFERENCE
USER_TYPE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=kotlin]
REFERENCE_EXPRESSION[referencedName=Int]
FUN[fqName=ContextReceiversCallableMembers.function, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=true, isTopLevel=false, mayHaveContract=false, name=function]
CONTEXT_RECEIVER_LIST
CONTEXT_RECEIVER
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=A]
CONTEXT_RECEIVER
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=B]
MODIFIER_LIST[private final]
TYPE_REFERENCE
USER_TYPE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=kotlin]
REFERENCE_EXPRESSION[referencedName=Int]
VALUE_PARAMETER_LIST
TYPE_REFERENCE
USER_TYPE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=kotlin]
REFERENCE_EXPRESSION[referencedName=Int]
@@ -0,0 +1,14 @@
// !LANGUAGE: +ContextReceivers
context(A, B)
private open class ContextReceiversOnClass {
}
class A {
val valueA: Int = 10
}
class B {
val valueB: Int = 11
}
@@ -0,0 +1,18 @@
PsiJetFileStubImpl[package=]
PACKAGE_DIRECTIVE
IMPORT_LIST
CLASS[classId=/ContextReceiversOnClass, fqName=ContextReceiversOnClass, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=ContextReceiversOnClass, superNames=[]]
CONTEXT_RECEIVER_LIST
CONTEXT_RECEIVER
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=A]
CONTEXT_RECEIVER
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=B]
MODIFIER_LIST[open private]
PRIMARY_CONSTRUCTOR
MODIFIER_LIST[public]
VALUE_PARAMETER_LIST
CLASS_BODY
@@ -0,0 +1,23 @@
// JVM_FILE_NAME: ContextReceiversOnTopLevelCallablesKt
// !LANGUAGE: +ContextReceivers
context(A, B)
private fun Int.function(): Int = valueA + valueB
context(A, B)
private val Int.property: Int get() = valueA + valueB
context(A, B)
private var Int.propertyWithSetter: Int
get() = valueA + valueB
set(v) { println(valueA + valueB) }
class A {
val valueA: Int = 10
}
class B {
val valueB: Int = 11
}
@@ -0,0 +1,67 @@
PsiJetFileStubImpl[package=]
PACKAGE_DIRECTIVE
IMPORT_LIST
PROPERTY[fqName=property, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=true, isTopLevel=true, isVar=false, name=property]
CONTEXT_RECEIVER_LIST
CONTEXT_RECEIVER
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=A]
CONTEXT_RECEIVER
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=B]
MODIFIER_LIST[private]
TYPE_REFERENCE
USER_TYPE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=kotlin]
REFERENCE_EXPRESSION[referencedName=Int]
TYPE_REFERENCE
USER_TYPE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=kotlin]
REFERENCE_EXPRESSION[referencedName=Int]
PROPERTY[fqName=propertyWithSetter, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=true, isTopLevel=true, isVar=true, name=propertyWithSetter]
CONTEXT_RECEIVER_LIST
CONTEXT_RECEIVER
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=A]
CONTEXT_RECEIVER
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=B]
MODIFIER_LIST[private]
TYPE_REFERENCE
USER_TYPE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=kotlin]
REFERENCE_EXPRESSION[referencedName=Int]
TYPE_REFERENCE
USER_TYPE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=kotlin]
REFERENCE_EXPRESSION[referencedName=Int]
FUN[fqName=function, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=true, isTopLevel=true, mayHaveContract=false, name=function]
CONTEXT_RECEIVER_LIST
CONTEXT_RECEIVER
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=A]
CONTEXT_RECEIVER
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=B]
MODIFIER_LIST[private]
TYPE_REFERENCE
USER_TYPE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=kotlin]
REFERENCE_EXPRESSION[referencedName=Int]
VALUE_PARAMETER_LIST
TYPE_REFERENCE
USER_TYPE
USER_TYPE
REFERENCE_EXPRESSION[referencedName=kotlin]
REFERENCE_EXPRESSION[referencedName=Int]