Intentions: Convert function type receiver to parameter
#KT-14246 Fixed
This commit is contained in:
@@ -32,7 +32,7 @@ object EditCommaSeparatedListHelper {
|
||||
fun <TItem: KtElement> addItemAfter(list: KtElement, allItems: List<TItem>, item: TItem, anchor: TItem?, prefix: KtToken = KtTokens.LPAR): TItem {
|
||||
assert(anchor == null || anchor.parent == list)
|
||||
if (allItems.isEmpty()) {
|
||||
if (list.firstChild.node.elementType == prefix) {
|
||||
if (list.firstChild?.node?.elementType == prefix) {
|
||||
return list.addAfter(item, list.firstChild) as TItem
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -112,6 +112,10 @@ class KtPsiFactory(private val project: Project) {
|
||||
return (createType("A.() -> B").typeElement as KtFunctionType).receiver!!.apply { this.typeReference.replace(typeReference) }
|
||||
}
|
||||
|
||||
fun createFunctionTypeParameter(typeReference: KtTypeReference): KtParameter {
|
||||
return (createType("(A) -> B").typeElement as KtFunctionType).parameters.first().apply { this.typeReference!!.replace(typeReference) }
|
||||
}
|
||||
|
||||
fun createTypeAlias(name: String, typeParameters: List<String>, typeElement: KtTypeElement): KtTypeAlias {
|
||||
return createTypeAlias(name, typeParameters, "X").apply { getTypeReference()!!.replace(createType(typeElement)) }
|
||||
}
|
||||
|
||||
@@ -475,4 +475,25 @@ fun isTypeConstructorReference(e: PsiElement): Boolean {
|
||||
|
||||
fun KtParameter.isPropertyParameter() = ownerFunction is KtPrimaryConstructor && hasValOrVar()
|
||||
|
||||
fun isDoubleColonReceiver(expression: KtExpression) = expression.getParentOfTypeAndBranch<KtDoubleColonExpression> { this.receiverExpression } != null
|
||||
fun isDoubleColonReceiver(expression: KtExpression) = expression.getParentOfTypeAndBranch<KtDoubleColonExpression> { this.receiverExpression } != null
|
||||
|
||||
fun KtFunctionLiteral.getOrCreateParameterList(): KtParameterList {
|
||||
valueParameterList?.let { return it }
|
||||
|
||||
val psiFactory = KtPsiFactory(this)
|
||||
|
||||
val anchor = lBrace
|
||||
val newParameterList = addAfter(psiFactory.createLambdaParameterList("x"), anchor) as KtParameterList
|
||||
newParameterList.removeParameter(0)
|
||||
if (arrow == null) {
|
||||
val whitespaceAndArrow = psiFactory.createWhitespaceAndArrow()
|
||||
addRangeAfter(whitespaceAndArrow.first, whitespaceAndArrow.second, newParameterList)
|
||||
}
|
||||
return newParameterList
|
||||
}
|
||||
|
||||
fun KtCallExpression.getOrCreateValueArgumentList(): KtValueArgumentList {
|
||||
valueArgumentList?.let { return it }
|
||||
return addAfter(KtPsiFactory(this).createCallArguments("()"),
|
||||
typeArgumentList ?: calleeExpression) as KtValueArgumentList
|
||||
}
|
||||
Reference in New Issue
Block a user