Skip to content

Commit 3cf0d8a

Browse files
committed
Kotlin !is does not work well with RemoveRedundantNullCheckBeforeInstanceof
1 parent fdb5d94 commit 3cf0d8a

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

src/main/java/org/openrewrite/staticanalysis/RemoveRedundantNullCheckBeforeInstanceof.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@
1818
import lombok.EqualsAndHashCode;
1919
import lombok.Value;
2020
import org.openrewrite.ExecutionContext;
21+
import org.openrewrite.Preconditions;
2122
import org.openrewrite.Recipe;
2223
import org.openrewrite.TreeVisitor;
2324
import org.openrewrite.java.JavaVisitor;
2425
import org.openrewrite.java.search.SemanticallyEqual;
2526
import org.openrewrite.java.tree.Expression;
2627
import org.openrewrite.java.tree.J;
28+
import org.openrewrite.staticanalysis.kotlin.KotlinFileChecker;
2729

2830
import java.time.Duration;
2931
import java.util.Collections;
@@ -55,7 +57,7 @@ public Duration getEstimatedEffortPerOccurrence() {
5557

5658
@Override
5759
public TreeVisitor<?, ExecutionContext> getVisitor() {
58-
return new JavaVisitor<ExecutionContext>() {
60+
return Preconditions.check(Preconditions.not(new KotlinFileChecker<>()), new JavaVisitor<ExecutionContext>() {
5961
@Override
6062
public J visitBinary(J.Binary binary, ExecutionContext ctx) {
6163
J.Binary bi = (J.Binary) super.visitBinary(binary, ctx);
@@ -107,6 +109,6 @@ private boolean isRedundantNullCheck(J.Binary nullCheck, J.InstanceOf instanceOf
107109
}
108110
return false;
109111
}
110-
};
112+
});
111113
}
112114
}

src/test/java/org/openrewrite/staticanalysis/RemoveRedundantNullCheckBeforeInstanceofTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@
1717

1818
import org.junit.jupiter.api.Test;
1919
import org.openrewrite.DocumentExample;
20+
import org.openrewrite.Issue;
2021
import org.openrewrite.test.RecipeSpec;
2122
import org.openrewrite.test.RewriteTest;
2223

2324
import static org.openrewrite.java.Assertions.java;
25+
import static org.openrewrite.kotlin.Assertions.kotlin;
2426

2527
@SuppressWarnings({"ConstantConditions", "ConditionCoveredByFurtherCondition"})
2628
class RemoveRedundantNullCheckBeforeInstanceofTest implements RewriteTest {
@@ -421,4 +423,23 @@ void foo(Object a, Object b) {
421423
)
422424
);
423425
}
426+
427+
@Issue("https://github.com/openrewrite/rewrite/pull/5736")
428+
@Test
429+
void kotlinIsNotInstanceOf() {
430+
rewriteRun(
431+
//language=kotlin
432+
kotlin(
433+
"""
434+
class A {
435+
fun foo(s: Object?) {
436+
if (s != null && s !is String) {
437+
println("Not null nor String")
438+
}
439+
}
440+
}
441+
"""
442+
)
443+
);
444+
}
424445
}

0 commit comments

Comments
 (0)