From 373aa6e40befc48040c8bcc0a3fd038a30756186 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Wed, 17 Jun 2026 16:50:04 -0400 Subject: [PATCH] Fix Simplify if/else to single return if possible clean-up - do not perform clean-up if the then statement is not a boolean literal - add new test to CleanUpTest - fixes #3020 --- .../internal/ui/fix/SimplifyBooleanIfElseCleanUpCore.java | 2 ++ .../ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest.java | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/internal/ui/fix/SimplifyBooleanIfElseCleanUpCore.java b/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/internal/ui/fix/SimplifyBooleanIfElseCleanUpCore.java index 98967da17bf..4499fec5e35 100644 --- a/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/internal/ui/fix/SimplifyBooleanIfElseCleanUpCore.java +++ b/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/internal/ui/fix/SimplifyBooleanIfElseCleanUpCore.java @@ -108,6 +108,8 @@ public static SimplifyStatus verifyBooleanIfElse(final IfStatement ifStatement) if (thenStatement instanceof ReturnStatement returnStatement) { if (returnStatement.getExpression() instanceof BooleanLiteral literal) { thenValue= literal.booleanValue(); + } else { + return SimplifyStatus.INVALID; } } else if (thenStatement instanceof Block block && block.statements().size() == 1 && block.statements().get(0) instanceof ReturnStatement returnStatement) { diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest.java index b24f79e57b2..112569f4919 100644 --- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest.java +++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest.java @@ -16879,6 +16879,7 @@ public void testDoNotSimplifyBooleanIfElseExpression01() throws Exception { package test1; public class E { + String text; public boolean doNotSimplifyIfBooleanSame(int x) { if (x > 0 && x < 7) { return true; @@ -16911,6 +16912,13 @@ public int doNotSimplifyNoneBoolean(String x) { return 2; } } + + public boolean doNotSimplifyInfixExpression(Integer x) { + if (text != null) + return text.length() > 43; + else + return false; + } } """;