Introduce Type Alias
#KT-12902 Fixed
This commit is contained in:
@@ -98,11 +98,19 @@ class KtPsiFactory(private val project: Project) {
|
||||
return typeReference
|
||||
}
|
||||
|
||||
fun createType(typeElement: KtTypeElement) = createType("X").apply { this.typeElement!!.replace(typeElement) }
|
||||
|
||||
fun createTypeIfPossible(type: String): KtTypeReference? {
|
||||
val typeReference = createProperty("val x : $type").typeReference
|
||||
return if (typeReference?.text == type) typeReference else null
|
||||
}
|
||||
|
||||
fun createTypeAlias(name: String, typeParameters: List<String>, typeElement: KtTypeElement): KtTypeAlias {
|
||||
val typeParametersText = if (typeParameters.isNotEmpty()) typeParameters.joinToString(prefix = "<", postfix = ">") else ""
|
||||
return createDeclaration<KtTypeAlias>("typealias $name$typeParametersText = X")
|
||||
.apply { getTypeReference()!!.replace(createType(typeElement)) }
|
||||
}
|
||||
|
||||
fun createStar(): PsiElement {
|
||||
return createType("List<*>").findElementAt(5)!!
|
||||
}
|
||||
|
||||
@@ -41,4 +41,9 @@ public class KtTypeArgumentList extends KtElementImplStub<KotlinPlaceHolderStub<
|
||||
public List<KtTypeProjection> getArguments() {
|
||||
return getStubOrPsiChildrenAsList(KtStubElementTypes.TYPE_PROJECTION);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public KtTypeProjection addArgument(@NotNull KtTypeProjection argument) {
|
||||
return EditCommaSeparatedListHelper.INSTANCE.addItem(this, getArguments(), argument);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,6 +140,10 @@ fun PsiElement.getNextSiblingIgnoringWhitespaceAndComments(): PsiElement? {
|
||||
return siblings(withItself = false).filter { it !is PsiWhiteSpace && it !is PsiComment }.firstOrNull()
|
||||
}
|
||||
|
||||
fun PsiElement.getPrevSiblingIgnoringWhitespaceAndComments(): PsiElement? {
|
||||
return siblings(withItself = false, forward = false).filter { it !is PsiWhiteSpace && it !is PsiComment }.firstOrNull()
|
||||
}
|
||||
|
||||
inline fun <reified T : PsiElement> T.nextSiblingOfSameType() = PsiTreeUtil.getNextSiblingOfType(this, T::class.java)
|
||||
|
||||
inline fun <reified T : PsiElement> T.prevSiblingOfSameType() = PsiTreeUtil.getPrevSiblingOfType(this, T::class.java)
|
||||
|
||||
Reference in New Issue
Block a user