From 0f6b9473e9c9e2313c5c9ab995657f4d94a387b4 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 13 Apr 2017 15:23:53 +0300 Subject: [PATCH] Inliner: don't take into account nonexistent PSI to keep parameter So #KT-17272 Fixed --- .../org/jetbrains/kotlin/idea/codeInliner/CodeInliner.kt | 1 + .../inline/function/expressionBody/DoNotKeepString.kt | 5 +++++ .../inline/function/expressionBody/DoNotKeepString.kt.after | 3 +++ .../kotlin/idea/refactoring/inline/InlineTestGenerated.java | 6 ++++++ 4 files changed, 15 insertions(+) create mode 100644 idea/testData/refactoring/inline/function/expressionBody/DoNotKeepString.kt create mode 100644 idea/testData/refactoring/inline/function/expressionBody/DoNotKeepString.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInliner/CodeInliner.kt b/idea/src/org/jetbrains/kotlin/idea/codeInliner/CodeInliner.kt index 0311d076c0b..6765c02254a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInliner/CodeInliner.kt +++ b/idea/src/org/jetbrains/kotlin/idea/codeInliner/CodeInliner.kt @@ -305,6 +305,7 @@ class CodeInliner( is KtBinaryExpression -> if (sideEffectOnly) left.shouldKeepValue(usageCount) || right.shouldKeepValue(usageCount) else true is KtIfExpression -> if (sideEffectOnly) condition.shouldKeepValue(usageCount) || then.shouldKeepValue(usageCount) || `else`.shouldKeepValue(usageCount) else true is KtBinaryExpressionWithTypeRHS -> true + null -> false else -> true } } diff --git a/idea/testData/refactoring/inline/function/expressionBody/DoNotKeepString.kt b/idea/testData/refactoring/inline/function/expressionBody/DoNotKeepString.kt new file mode 100644 index 00000000000..825fd8cd0ed --- /dev/null +++ b/idea/testData/refactoring/inline/function/expressionBody/DoNotKeepString.kt @@ -0,0 +1,5 @@ +fun manyParams(used: String, unused: String) = println(used) + +fun callMany() { + manyParams("op", "qr") +} \ No newline at end of file diff --git a/idea/testData/refactoring/inline/function/expressionBody/DoNotKeepString.kt.after b/idea/testData/refactoring/inline/function/expressionBody/DoNotKeepString.kt.after new file mode 100644 index 00000000000..8d446ea8bbc --- /dev/null +++ b/idea/testData/refactoring/inline/function/expressionBody/DoNotKeepString.kt.after @@ -0,0 +1,3 @@ +fun callMany() { + println("op") +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/inline/InlineTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/inline/InlineTestGenerated.java index c494abd790c..3fa28b8e36d 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/inline/InlineTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/inline/InlineTestGenerated.java @@ -118,6 +118,12 @@ public class InlineTestGenerated extends AbstractInlineTest { doTest(fileName); } + @TestMetadata("DoNotKeepString.kt") + public void testDoNotKeepString() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/inline/function/expressionBody/DoNotKeepString.kt"); + doTest(fileName); + } + @TestMetadata("ExplicitReturnType.kt") public void testExplicitReturnType() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/inline/function/expressionBody/ExplicitReturnType.kt");