From 13b3a8675a2d96368e0b5d5a32e15a1949c2444a Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Tue, 17 Jul 2018 10:52:35 +0200 Subject: [PATCH] inline local: don't enable short circuit when detecting refs/defs (IDEA-195332) --- .../src/com/intellij/psi/controlFlow/DefUseUtil.java | 2 +- .../refactoring/inlineLocal/DisableShortCircuit.java | 6 ++++++ .../refactoring/inlineLocal/DisableShortCircuit.java.after | 5 +++++ .../intellij/java/refactoring/inline/InlineLocalTest.java | 4 ++++ 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/inlineLocal/DisableShortCircuit.java create mode 100644 java/java-tests/testData/refactoring/inlineLocal/DisableShortCircuit.java.after diff --git a/java/java-psi-impl/src/com/intellij/psi/controlFlow/DefUseUtil.java b/java/java-psi-impl/src/com/intellij/psi/controlFlow/DefUseUtil.java index e795c3eceb2f..638f36719e3f 100644 --- a/java/java-psi-impl/src/com/intellij/psi/controlFlow/DefUseUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/controlFlow/DefUseUtil.java @@ -397,7 +397,7 @@ public class DefUseUtil { RefsDefs(@NotNull PsiCodeBlock body) throws AnalysisCanceledException { this.body = body; - flow = ControlFlowFactory.getInstance(body.getProject()).getControlFlow(body, ourPolicy); + flow = ControlFlowFactory.getInstance(body.getProject()).getControlFlow(body, ourPolicy, false, false); instructions = flow.getInstructions(); } diff --git a/java/java-tests/testData/refactoring/inlineLocal/DisableShortCircuit.java b/java/java-tests/testData/refactoring/inlineLocal/DisableShortCircuit.java new file mode 100644 index 000000000000..5c0815550248 --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineLocal/DisableShortCircuit.java @@ -0,0 +1,6 @@ +class MyTest { + { + int j = 0; + System.out.println(false ? j : 'x'); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/inlineLocal/DisableShortCircuit.java.after b/java/java-tests/testData/refactoring/inlineLocal/DisableShortCircuit.java.after new file mode 100644 index 000000000000..b6d56344555f --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineLocal/DisableShortCircuit.java.after @@ -0,0 +1,5 @@ +class MyTest { + { + System.out.println(false ? 0 : 'x'); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineLocalTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineLocalTest.java index e0063cd7aac5..2c695a1c2bd6 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineLocalTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineLocalTest.java @@ -270,6 +270,10 @@ public class InlineLocalTest extends LightCodeInsightTestCase { doTest(false); } + public void testDisableShortCircuit() { + doTest(false); + } + public void testOperationPrecedenceWhenInlineToStringConcatenation() { doTest(false); }