diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt b/idea/src/org/jetbrains/jet/plugin/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt index d037248d7bc..1cff29e5bd1 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt @@ -410,6 +410,10 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { return returnTypeExpression } + private fun setupValVarTemplate(builder: TemplateBuilder, property: JetProperty) { + builder.replaceElement(property.getValOrVarNode().getPsi()!!, ValVarExpression) + } + private fun setupTypeParameterListTemplate(builder: TemplateBuilderImpl, declaration: JetCallableDeclaration): TypeParameterListExpression { val typeParameterMap = HashMap>() val receiverTypeParameterNames = receiverTypeCandidate?.let { it.typeParameterNames!! } ?: ArrayUtil.EMPTY_STRING_ARRAY @@ -481,6 +485,9 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { caretModel.moveToOffset(containingFile.getNode().getStartOffset()) val builder = TemplateBuilderImpl(containingFile) + if (declaration is JetProperty) { + setupValVarTemplate(builder, declaration) + } val returnTypeExpression = if (isUnit) null else setupReturnTypeTemplate(builder, declaration) val parameterTypeExpressions = setupParameterTypeTemplates(builder, declaration.getValueParameterList()?.getParameters() ?: Collections.emptyList()) diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/createFromUsage/callableBuilder/templateExpressions.kt b/idea/src/org/jetbrains/jet/plugin/quickfix/createFromUsage/callableBuilder/templateExpressions.kt index 061ed849ea3..3ac15e93abf 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/createFromUsage/callableBuilder/templateExpressions.kt +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/createFromUsage/callableBuilder/templateExpressions.kt @@ -140,3 +140,13 @@ private class TypeParameterListExpression(private val typeParameterNamesFromRece // do not offer the user any choices override fun calculateLookupItems(context: ExpressionContext?) = array() } + +private object ValVarExpression: Expression() { + private val cachedLookupElements = listOf("val", "var").map { LookupElementBuilder.create(it) }.copyToArray() + + override fun calculateResult(context: ExpressionContext?): Result? = TextResult("val") + + override fun calculateQuickResult(context: ExpressionContext?): Result? = calculateResult(context) + + override fun calculateLookupItems(context: ExpressionContext?): Array? = cachedLookupElements +} \ No newline at end of file