From 8a0808b1330ad106187d618244046c0cb927364a Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 6 Mar 2015 14:35:50 +0300 Subject: [PATCH] Create From Usage: Do not generate type for local variables, but add dummy initializer instead #KT-6705 Fixed --- .idea/compiler.xml | 1 + .../idea/codeInsight/CodeInsightUtils.java | 7 ++ .../callableBuilder/CallableBuilder.kt | 16 +++- .../CreateLocalVariableActionFactory.kt | 77 +++++++++---------- ...ithNotNullableTypeWithInitializer.kt.after | 2 +- .../var/varWoTypeWithInitializer.kt.after | 2 +- .../localVariable/afterInAccessor.kt | 3 +- .../afterInAccessorWithExpressionBody.kt | 3 +- .../localVariable/afterInFun.kt | 3 +- .../afterInFunWithExpressionBody.kt | 3 +- .../localVariable/afterInLambdaNoParams.kt | 3 +- .../localVariable/afterInLambdaWithParams.kt | 3 +- .../afterInMultiLineLambdaNoParams.kt | 3 +- .../afterInMultiLineLambdaWithParams.kt | 3 +- .../localVariable/afterInWhen.kt | 3 +- .../afterLocalWithPackageName.kt | 3 +- .../localVariable/afterNullableType.kt | 3 +- .../localVariable/afterUnitTypedInFun.kt | 3 +- .../localVariable/beforeInAccessor.kt | 1 - .../beforeInAccessorWithExpressionBody.kt | 1 - .../localVariable/beforeInFun.kt | 1 - .../beforeInFunWithExpressionBody.kt | 1 - .../localVariable/beforeInLambdaNoParams.kt | 1 - .../localVariable/beforeInLambdaWithParams.kt | 1 - .../beforeInMultiLineLambdaNoParams.kt | 1 - .../beforeInMultiLineLambdaWithParams.kt | 1 - .../localVariable/beforeInWhen.kt | 1 - .../beforeLocalWithPackageName.kt | 1 - .../localVariable/beforeNullableType.kt | 1 - .../localVariable/beforeUnitTypedInFun.kt | 1 - 30 files changed, 72 insertions(+), 81 deletions(-) diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 1be8a5b2e25..13d6655cce8 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -5,6 +5,7 @@ + diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/CodeInsightUtils.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/CodeInsightUtils.java index e4c39840f31..31cd0c48b0d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/CodeInsightUtils.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/CodeInsightUtils.java @@ -182,6 +182,7 @@ public class CodeInsightUtils { return element; } + @Nullable public static String defaultInitializer(JetType type) { KotlinBuiltIns builtIns = KotlinBuiltIns.getInstance(); if (type.isMarkedNullable()) { @@ -203,6 +204,12 @@ public class CodeInsightUtils { else if (type.equals(builtIns.getBooleanType())) { return "false"; } + else if (type.equals(builtIns.getUnitType())) { + return "Unit"; + } + else if (type.equals(builtIns.getStringType())) { + return "\"\""; + } return null; } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt index 7b6991f8e97..d7b7121a168 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt @@ -79,6 +79,7 @@ import org.jetbrains.kotlin.idea.refactoring.* import org.jetbrains.kotlin.idea.util.* import com.intellij.openapi.ui.* import com.intellij.codeInsight.template.impl.* +import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils import org.jetbrains.kotlin.idea.util.application.* private val TYPE_PARAMETER_LIST_VARIABLE_NAME = "typeParameterList" @@ -324,7 +325,7 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { returnTypeCandidate?.theType?.isUnit() ?: false CallableKind.CONSTRUCTOR -> callableInfo.returnTypeInfo == TypeInfo.Empty || returnTypeCandidate?.theType?.isAny() ?: false - CallableKind.PROPERTY -> false + CallableKind.PROPERTY -> containingElement is JetBlockExpression } // figure out type parameter renames to avoid conflicts @@ -883,6 +884,7 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { private fun setupEditor(declaration: JetNamedDeclaration) { val caretModel = containingFileEditor.getCaretModel() + val selectionModel = containingFileEditor.getSelectionModel() caretModel.moveToOffset(declaration.getNameIdentifier().getTextRange().getEndOffset()) @@ -892,7 +894,7 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { val startOffset = from.getTextRange().getStartOffset() val endOffset = to.getTextRange().getEndOffset() caretModel.moveToOffset(endOffset) - containingFileEditor.getSelectionModel().setSelection(startOffset, endOffset) + selectionModel.setSelection(startOffset, endOffset) } when (declaration) { @@ -903,9 +905,15 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { caretModel.moveToOffset(declaration.getTextRange().getStartOffset()) } is JetProperty -> { - if (!declaration.hasInitializer()) { - caretModel.moveToOffset(declaration.getTextRange().getEndOffset()) + if (!declaration.hasInitializer() && containingElement is JetBlockExpression) { + val defaultValueType = typeCandidates[callableInfo.returnTypeInfo].firstOrNull()?.theType + ?: KotlinBuiltIns.getInstance().getAnyType() + val defaultValue = CodeInsightUtils.defaultInitializer(defaultValueType) ?: "null" + val initializer = declaration.setInitializer(JetPsiFactory(declaration).createExpression(defaultValue))!! + val range = initializer.getTextRange() + selectionModel.setSelection(range.getStartOffset(), range.getEndOffset()) } + caretModel.moveToOffset(declaration.getTextRange().getEndOffset()) } } containingFileEditor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE) diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createVariable/CreateLocalVariableActionFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createVariable/CreateLocalVariableActionFactory.kt index 9054d730ebc..874176f5fb8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createVariable/CreateLocalVariableActionFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createVariable/CreateLocalVariableActionFactory.kt @@ -16,62 +16,61 @@ package org.jetbrains.kotlin.idea.quickfix.createFromUsage.createVariable -import org.jetbrains.kotlin.idea.quickfix.createFromUsage.CreateFromUsageFixBase -import org.jetbrains.kotlin.idea.JetBundle -import com.intellij.openapi.project.Project -import com.intellij.openapi.editor.Editor -import org.jetbrains.kotlin.psi.JetFile -import org.jetbrains.kotlin.idea.quickfix.JetSingleIntentionActionFactory -import org.jetbrains.kotlin.diagnostics.Diagnostic import com.intellij.codeInsight.intention.IntentionAction -import org.jetbrains.kotlin.idea.quickfix.QuickFixUtil -import org.jetbrains.kotlin.psi.JetSimpleNameExpression -import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElement -import org.jetbrains.kotlin.psi.JetBlockExpression -import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.TypeInfo -import org.jetbrains.kotlin.types.Variance -import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.CallableBuilderConfiguration -import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.createBuilder -import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.CallablePlacement import com.intellij.openapi.command.CommandProcessor -import org.jetbrains.kotlin.psi.psiUtil.parents -import org.jetbrains.kotlin.psi.JetElement +import com.intellij.openapi.editor.Editor +import com.intellij.openapi.project.Project +import org.jetbrains.kotlin.diagnostics.Diagnostic +import org.jetbrains.kotlin.idea.JetBundle import org.jetbrains.kotlin.idea.intentions.ConvertToBlockBodyAction -import org.jetbrains.kotlin.psi.JetDeclarationWithBody -import org.jetbrains.kotlin.idea.refactoring.getExtractionContainers -import org.jetbrains.kotlin.psi.JetClassBody -import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.PropertyInfo +import org.jetbrains.kotlin.idea.quickfix.JetSingleIntentionActionFactory +import org.jetbrains.kotlin.idea.quickfix.QuickFixUtil +import org.jetbrains.kotlin.idea.quickfix.createFromUsage.CreateFromUsageFixBase +import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.* +import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getAssignmentByLHS -import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.getExpressionForTypeGuess +import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElement +import org.jetbrains.kotlin.psi.psiUtil.parents +import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.utils.addToStdlib.singletonOrEmptyList +import java.util.Collections object CreateLocalVariableActionFactory: JetSingleIntentionActionFactory() { override fun createAction(diagnostic: Diagnostic): IntentionAction? { val refExpr = QuickFixUtil.getParentElementOfType(diagnostic, javaClass()) ?: return null if (refExpr.getQualifiedElement() != refExpr) return null + val propertyName = refExpr.getReferencedName() + val container = refExpr.parents(false) .filter { it is JetBlockExpression || it is JetDeclarationWithBody } .firstOrNull() as? JetElement ?: return null - val assignment = refExpr.getAssignmentByLHS() - val varExpected = assignment != null - val typeInfo = TypeInfo( - refExpr.getExpressionForTypeGuess(), - if (varExpected) Variance.INVARIANT else Variance.OUT_VARIANCE - ) - val containers = refExpr.getExtractionContainers().filterNot { it is JetClassBody || it is JetFile } - val propertyInfo = PropertyInfo(refExpr.getReferencedName(), TypeInfo.Empty, typeInfo, varExpected, containers) - return object: CreateFromUsageFixBase(refExpr) { - override fun getText(): String = JetBundle.message("create.local.variable.from.usage", propertyInfo.name) + override fun getText(): String = JetBundle.message("create.local.variable.from.usage", propertyName) - override fun invoke(project: Project, editor: Editor?, file: JetFile?) { - with (CallableBuilderConfiguration(propertyInfo.singletonOrEmptyList(), assignment ?: refExpr, file!!, editor!!).createBuilder()) { - val actualContainer = when (container) { - is JetBlockExpression -> container - else -> ConvertToBlockBodyAction.convert(container as JetDeclarationWithBody).getBodyExpression()!! - } + override fun invoke(project: Project, editor: Editor, file: JetFile) { + val assignment = refExpr.getAssignmentByLHS() + val varExpected = assignment != null + var originalElement = assignment ?: refExpr + + val actualContainer = when (container) { + is JetBlockExpression -> container + else -> ConvertToBlockBodyAction.convert(container as JetDeclarationWithBody).getBodyExpression()!! + } as JetBlockExpression + + if (actualContainer != container) { + val bodyExpression = actualContainer.getStatements().first() as JetExpression + originalElement = (bodyExpression as? JetReturnExpression)?.getReturnedExpression() ?: bodyExpression + } + + val typeInfo = TypeInfo( + originalElement.getExpressionForTypeGuess(), + if (varExpected) Variance.INVARIANT else Variance.OUT_VARIANCE + ) + val propertyInfo = PropertyInfo(propertyName, TypeInfo.Empty, typeInfo, varExpected, Collections.singletonList(actualContainer)) + + with (CallableBuilderConfiguration(propertyInfo.singletonOrEmptyList(), originalElement, file, editor).createBuilder()) { placement = CallablePlacement.NoReceiver(actualContainer) CommandProcessor.getInstance().executeCommand(project, { build() }, getText(), null) } diff --git a/idea/testData/codeInsight/surroundWith/if/moveDeclarationsOut/var/varWithNotNullableTypeWithInitializer.kt.after b/idea/testData/codeInsight/surroundWith/if/moveDeclarationsOut/var/varWithNotNullableTypeWithInitializer.kt.after index 2427f7e20cf..26ed7edb07e 100644 --- a/idea/testData/codeInsight/surroundWith/if/moveDeclarationsOut/var/varWithNotNullableTypeWithInitializer.kt.after +++ b/idea/testData/codeInsight/surroundWith/if/moveDeclarationsOut/var/varWithNotNullableTypeWithInitializer.kt.after @@ -1,5 +1,5 @@ fun foo() { - var a: String + var a: String = "" if () { a = "aaa" } diff --git a/idea/testData/codeInsight/surroundWith/if/moveDeclarationsOut/var/varWoTypeWithInitializer.kt.after b/idea/testData/codeInsight/surroundWith/if/moveDeclarationsOut/var/varWoTypeWithInitializer.kt.after index 2427f7e20cf..26ed7edb07e 100644 --- a/idea/testData/codeInsight/surroundWith/if/moveDeclarationsOut/var/varWoTypeWithInitializer.kt.after +++ b/idea/testData/codeInsight/surroundWith/if/moveDeclarationsOut/var/varWoTypeWithInitializer.kt.after @@ -1,5 +1,5 @@ fun foo() { - var a: String + var a: String = "" if () { a = "aaa" } diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInAccessor.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInAccessor.kt index 83779ca800d..5f208b20a49 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInAccessor.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInAccessor.kt @@ -1,10 +1,9 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized class A { val t: Int get() { - val foo: Int + val foo = 0 return foo } } \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInAccessorWithExpressionBody.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInAccessorWithExpressionBody.kt index 83779ca800d..5f208b20a49 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInAccessorWithExpressionBody.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInAccessorWithExpressionBody.kt @@ -1,10 +1,9 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized class A { val t: Int get() { - val foo: Int + val foo = 0 return foo } } \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInFun.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInFun.kt index 6fe0e99dd4a..d7c90a85f55 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInFun.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInFun.kt @@ -1,8 +1,7 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized fun test(): Int { - val foo: Int + val foo = 0 return foo } \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInFunWithExpressionBody.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInFunWithExpressionBody.kt index 6fe0e99dd4a..d7c90a85f55 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInFunWithExpressionBody.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInFunWithExpressionBody.kt @@ -1,8 +1,7 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized fun test(): Int { - val foo: Int + val foo = 0 return foo } \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInLambdaNoParams.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInLambdaNoParams.kt index 5f9d567c8b8..b857cce82d7 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInLambdaNoParams.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInLambdaNoParams.kt @@ -1,10 +1,9 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized fun test(n: Int) { val f: () -> Int = { - val foo: Int + val foo = 0 foo } } \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInLambdaWithParams.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInLambdaWithParams.kt index 187d90d0251..e1fe2b31832 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInLambdaWithParams.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInLambdaWithParams.kt @@ -1,10 +1,9 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized fun test(n: Int) { val f: (Int, Int) -> Int = { (a, b) -> - val foo: Int + val foo = 0 foo } } \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInMultiLineLambdaNoParams.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInMultiLineLambdaNoParams.kt index 5f9d567c8b8..b857cce82d7 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInMultiLineLambdaNoParams.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInMultiLineLambdaNoParams.kt @@ -1,10 +1,9 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized fun test(n: Int) { val f: () -> Int = { - val foo: Int + val foo = 0 foo } } \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInMultiLineLambdaWithParams.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInMultiLineLambdaWithParams.kt index 187d90d0251..e1fe2b31832 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInMultiLineLambdaWithParams.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInMultiLineLambdaWithParams.kt @@ -1,10 +1,9 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized fun test(n: Int) { val f: (Int, Int) -> Int = { (a, b) -> - val foo: Int + val foo = 0 foo } } \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInWhen.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInWhen.kt index bcf381c10d0..79dfe6d7e56 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInWhen.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterInWhen.kt @@ -1,10 +1,9 @@ // "Create local variable 'foo'" "true" -// ERROR: Variable 'foo' must be initialized fun test(n: Int): Int { return when (n) { 1 -> { - val foo: Int + val foo = 0 foo } else -> { diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterLocalWithPackageName.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterLocalWithPackageName.kt index bb89c84262b..3b56a27c0af 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterLocalWithPackageName.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterLocalWithPackageName.kt @@ -1,10 +1,9 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized package foo fun test(): Int { - val foo: Int + val foo = 0 return foo } \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterNullableType.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterNullableType.kt index 9880f97de41..233a2062d7e 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterNullableType.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterNullableType.kt @@ -1,7 +1,6 @@ // "Create local variable 'foo'" "true" -// ERROR: Variable 'foo' must be initialized fun test(): Int? { - val foo: Int? + val foo = null return foo } \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterUnitTypedInFun.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterUnitTypedInFun.kt index bbd6607e287..e78f3374d24 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterUnitTypedInFun.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/afterUnitTypedInFun.kt @@ -1,8 +1,7 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized fun test() { - val foo: Unit + val foo = Unit val u: Unit = foo } \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInAccessor.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInAccessor.kt index 368e6ef8127..71fd9a2490f 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInAccessor.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInAccessor.kt @@ -1,6 +1,5 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized class A { val t: Int get() { diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInAccessorWithExpressionBody.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInAccessorWithExpressionBody.kt index a76a86af693..b5fd14d8c09 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInAccessorWithExpressionBody.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInAccessorWithExpressionBody.kt @@ -1,6 +1,5 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized class A { val t: Int get() = foo diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInFun.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInFun.kt index 9285cf3a3c2..70019a3d561 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInFun.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInFun.kt @@ -1,6 +1,5 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized fun test(): Int { return foo diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInFunWithExpressionBody.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInFunWithExpressionBody.kt index 4c0bac10971..61bccabe909 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInFunWithExpressionBody.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInFunWithExpressionBody.kt @@ -1,5 +1,4 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized fun test(): Int = foo \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInLambdaNoParams.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInLambdaNoParams.kt index 4658d82edbc..c5645330ad4 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInLambdaNoParams.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInLambdaNoParams.kt @@ -1,6 +1,5 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized fun test(n: Int) { val f: () -> Int = { foo } diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInLambdaWithParams.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInLambdaWithParams.kt index 08e56a6a8be..869228b38e8 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInLambdaWithParams.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInLambdaWithParams.kt @@ -1,6 +1,5 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized fun test(n: Int) { val f: (Int, Int) -> Int = { (a, b) -> foo } diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInMultiLineLambdaNoParams.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInMultiLineLambdaNoParams.kt index 1d6370a7e59..54abae7bb8b 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInMultiLineLambdaNoParams.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInMultiLineLambdaNoParams.kt @@ -1,6 +1,5 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized fun test(n: Int) { val f: () -> Int = { diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInMultiLineLambdaWithParams.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInMultiLineLambdaWithParams.kt index 567980a7b5a..e1dd99cf7ad 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInMultiLineLambdaWithParams.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInMultiLineLambdaWithParams.kt @@ -1,6 +1,5 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized fun test(n: Int) { val f: (Int, Int) -> Int = { (a, b) -> diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInWhen.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInWhen.kt index 4a08c00d3d8..f6057faee2d 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInWhen.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeInWhen.kt @@ -1,5 +1,4 @@ // "Create local variable 'foo'" "true" -// ERROR: Variable 'foo' must be initialized fun test(n: Int): Int { return when (n) { diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeLocalWithPackageName.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeLocalWithPackageName.kt index 71b27a05bc9..c7f20c5493a 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeLocalWithPackageName.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeLocalWithPackageName.kt @@ -1,6 +1,5 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized package foo diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeNullableType.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeNullableType.kt index 6b3d56c50cd..5e220b3f2ac 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeNullableType.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeNullableType.kt @@ -1,5 +1,4 @@ // "Create local variable 'foo'" "true" -// ERROR: Variable 'foo' must be initialized fun test(): Int? { return foo diff --git a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeUnitTypedInFun.kt b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeUnitTypedInFun.kt index 011d3d6382c..acde1167f25 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeUnitTypedInFun.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/localVariable/beforeUnitTypedInFun.kt @@ -1,6 +1,5 @@ // "Create local variable 'foo'" "true" // ACTION: Create parameter 'foo' -// ERROR: Variable 'foo' must be initialized fun test() { val u: Unit = foo