Fixed EA-57220.
This commit is contained in:
@@ -818,7 +818,7 @@ public class JetPsiUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static JetElement getEnclosingElementForLocalDeclaration(@Nullable JetDeclaration declaration) {
|
public static JetElement getEnclosingElementForLocalDeclaration(@NotNull JetDeclaration declaration) {
|
||||||
if (declaration instanceof JetTypeParameter) {
|
if (declaration instanceof JetTypeParameter) {
|
||||||
declaration = PsiTreeUtil.getParentOfType(declaration, JetNamedDeclaration.class);
|
declaration = PsiTreeUtil.getParentOfType(declaration, JetNamedDeclaration.class);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import org.jetbrains.jet.lang.psi.JetCallExpression
|
|||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils
|
||||||
import org.jetbrains.jet.lang.psi.JetElement
|
import org.jetbrains.jet.lang.psi.JetElement
|
||||||
import org.jetbrains.jet.lang.resolve.bindingContextUtil.isUsedAsStatement
|
import org.jetbrains.jet.lang.resolve.bindingContextUtil.isUsedAsStatement
|
||||||
|
import org.jetbrains.jet.lang.psi.JetProperty
|
||||||
|
|
||||||
val NULL_PTR_EXCEPTION = "NullPointerException"
|
val NULL_PTR_EXCEPTION = "NullPointerException"
|
||||||
val NULL_PTR_EXCEPTION_FQ = "java.lang.NullPointerException"
|
val NULL_PTR_EXCEPTION_FQ = "java.lang.NullPointerException"
|
||||||
@@ -141,6 +142,8 @@ fun JetElement.replace(expressionAsString: String): PsiElement =
|
|||||||
fun JetSimpleNameExpression.inlineIfDeclaredLocallyAndOnlyUsedOnceWithPrompt(editor: Editor) {
|
fun JetSimpleNameExpression.inlineIfDeclaredLocallyAndOnlyUsedOnceWithPrompt(editor: Editor) {
|
||||||
val declaration = this.getReference()?.resolve() as JetDeclaration
|
val declaration = this.getReference()?.resolve() as JetDeclaration
|
||||||
|
|
||||||
|
if (declaration !is JetProperty) return
|
||||||
|
|
||||||
val enclosingElement = JetPsiUtil.getEnclosingElementForLocalDeclaration(declaration)
|
val enclosingElement = JetPsiUtil.getEnclosingElementForLocalDeclaration(declaration)
|
||||||
val isLocal = enclosingElement != null
|
val isLocal = enclosingElement != null
|
||||||
if (!isLocal) return
|
if (!isLocal) return
|
||||||
|
|||||||
+1
-1
@@ -80,7 +80,7 @@ public class IfThenToElvisIntention : JetSelfTargetingIntention<JetIfExpression>
|
|||||||
assert(resultingExpression is JetBinaryExpression,
|
assert(resultingExpression is JetBinaryExpression,
|
||||||
"Unexpected expression type: ${resultingExpression?.javaClass}, expected JetBinaryExpression, element = '${element.getText()}'")
|
"Unexpected expression type: ${resultingExpression?.javaClass}, expected JetBinaryExpression, element = '${element.getText()}'")
|
||||||
|
|
||||||
val elvis= resultingExpression as JetBinaryExpression
|
val elvis = resultingExpression as JetBinaryExpression
|
||||||
elvis.inlineLeftSideIfApplicableWithPrompt(editor)
|
elvis.inlineLeftSideIfApplicableWithPrompt(editor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Replace 'if' expression with elvis expression" "true"
|
||||||
|
|
||||||
|
data class IntPair(val first: Int?, val second: Int?)
|
||||||
|
|
||||||
|
fun f(pair: IntPair): Int {
|
||||||
|
val (x, y) = pair
|
||||||
|
return if (x != <caret>null) x else 5
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Replace 'if' expression with elvis expression" "true"
|
||||||
|
|
||||||
|
data class IntPair(val first: Int?, val second: Int?)
|
||||||
|
|
||||||
|
fun f(pair: IntPair): Int {
|
||||||
|
val (x, y) = pair
|
||||||
|
return x ?: 5
|
||||||
|
}
|
||||||
@@ -79,6 +79,14 @@
|
|||||||
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">If-Then foldable to '?:'.</problem_class>
|
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">If-Then foldable to '?:'.</problem_class>
|
||||||
<description>Replace 'if' expression with elvis expression</description>
|
<description>Replace 'if' expression with elvis expression</description>
|
||||||
</problem>
|
</problem>
|
||||||
|
<problem>
|
||||||
|
<file>doesNotInlineVariableInMultiDeclaration.kt</file>
|
||||||
|
<line>7</line>
|
||||||
|
<module>light_idea_test_case</module>
|
||||||
|
<entry_point TYPE="file" FQNAME="temp:///src/src/doesNotInlineVariableInMultiDeclaration.kt" />
|
||||||
|
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">If-Then foldable to '?:'.</problem_class>
|
||||||
|
<description>Replace 'if' expression with elvis expression</description>
|
||||||
|
</problem>
|
||||||
<problem>
|
<problem>
|
||||||
<file>doesNotinlineValueIfUsedMoreThanOnce.kt</file>
|
<file>doesNotinlineValueIfUsedMoreThanOnce.kt</file>
|
||||||
<line>11</line>
|
<line>11</line>
|
||||||
|
|||||||
@@ -1228,6 +1228,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("doesNotInlineVariableInMultiDeclaration.kt")
|
||||||
|
public void testDoesNotInlineVariableInMultiDeclaration() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/branched/ifThenToElvis/doesNotInlineVariableInMultiDeclaration.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("doesNotinlineValueIfUsedMoreThanOnce.kt")
|
@TestMetadata("doesNotinlineValueIfUsedMoreThanOnce.kt")
|
||||||
public void testDoesNotinlineValueIfUsedMoreThanOnce() throws Exception {
|
public void testDoesNotinlineValueIfUsedMoreThanOnce() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/branched/ifThenToElvis/doesNotinlineValueIfUsedMoreThanOnce.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/branched/ifThenToElvis/doesNotinlineValueIfUsedMoreThanOnce.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user