Psi2Ir: Create instance initializer calls in enum class constructors

This commit is contained in:
Steven Schäfer
2020-01-09 14:03:42 +01:00
committed by max-kammerer
parent 83edc7fa73
commit f8779ddf9d
3 changed files with 8 additions and 64 deletions
@@ -54,11 +54,15 @@ fun ResolvedCall<*>.isValueArgumentReorderingRequired(): Boolean {
}
fun KtSecondaryConstructor.isConstructorDelegatingToSuper(bindingContext: BindingContext): Boolean {
val delegatingResolvedCall = getDelegationCall().getResolvedCall(bindingContext) ?: return false
val constructorDescriptor = bindingContext.get(BindingContext.CONSTRUCTOR, this) ?: return false
val ownerClassDescriptor = constructorDescriptor.containingDeclaration
val targetClassDescriptor = delegatingResolvedCall.resultingDescriptor.containingDeclaration
return targetClassDescriptor != ownerClassDescriptor
val delegatingResolvedCall = getDelegationCall().getResolvedCall(bindingContext)
return if (delegatingResolvedCall != null) {
val ownerClassDescriptor = constructorDescriptor.containingDeclaration
val targetClassDescriptor = delegatingResolvedCall.resultingDescriptor.containingDeclaration
targetClassDescriptor != ownerClassDescriptor
} else {
constructorDescriptor.constructedClass.kind == ClassKind.ENUM_CLASS
}
}
inline fun ClassDescriptor.findFirstFunction(name: String, predicate: (CallableMemberDescriptor) -> Boolean) =