Add postfix template for listOf/setOf/etc

#KT-25239 Fixed
This commit is contained in:
Denis Zharkov
2018-07-04 12:14:01 +03:00
parent 4ab97e8454
commit 0d00eb7de3
23 changed files with 119 additions and 1 deletions
@@ -58,7 +58,11 @@ class KtPostfixTemplateProvider : PostfixTemplateProvider {
KtParenthesizedPostfixTemplate,
KtSoutPostfixTemplate,
KtReturnPostfixTemplate,
KtWhilePostfixTemplate
KtWhilePostfixTemplate,
KtWrapWithListOfPostfixTemplate,
KtWrapWithSetOfPostfixTemplate,
KtWrapWithArrayOfPostfixTemplate,
KtWrapWithSequenceOfPostfixTemplate
)
override fun isTerminalSymbol(currentChar: Char) = currentChar == '.' || currentChar == '!'
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.idea.liveTemplates.macro.SuggestVariableNameMacro
import org.jetbrains.kotlin.idea.resolve.ideService
import org.jetbrains.kotlin.idea.util.getResolutionScope
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.psi.KtReturnExpression
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.calls.callUtil.getType
import org.jetbrains.kotlin.types.KotlinType
@@ -44,6 +45,18 @@ internal abstract class ConstantStringBasedPostfixTemplate(
override fun getElementToRemove(expr: PsiElement?) = expr
}
internal abstract class KtWrapWithCallPostfixTemplate(val functionName: String) : ConstantStringBasedPostfixTemplate(
functionName,
"$functionName(expr)",
"$functionName(\$expr$)\$END$",
createExpressionSelectorWithComplexFilter { expression, _ -> expression !is KtReturnExpression }
)
internal object KtWrapWithListOfPostfixTemplate : KtWrapWithCallPostfixTemplate("listOf")
internal object KtWrapWithSetOfPostfixTemplate : KtWrapWithCallPostfixTemplate("setOf")
internal object KtWrapWithArrayOfPostfixTemplate : KtWrapWithCallPostfixTemplate("arrayOf")
internal object KtWrapWithSequenceOfPostfixTemplate : KtWrapWithCallPostfixTemplate("sequenceOf")
internal class KtForEachPostfixTemplate(
name: String
) : ConstantStringBasedPostfixTemplate(