Wie Paul Boddington sagte in einem Kommentar sagt, es ist eigentlich etwas, das JetBrains vergessen hat, in ihrem Algorithmus zu implementieren, das war fixed a few days ago.
Vorher:
if (opSign == LT && comparedWith <= rangeMin) return alwaysFalse(instruction, runner, memState);
if (opSign == LT && comparedWith > rangeMax) return alwaysTrue(instruction, runner, memState);
if (opSign == LE && comparedWith >= rangeMax) return alwaysTrue(instruction, runner, memState);
if (opSign == GT && comparedWith >= rangeMax) return alwaysFalse(instruction, runner, memState);
if (opSign == GT && comparedWith < rangeMin) return alwaysTrue(instruction, runner, memState);
if (opSign == GE && comparedWith <= rangeMin) return alwaysTrue(instruction, runner, memState);
Nach:
if (opSign == LT && comparedWith <= rangeMin) return alwaysFalse(instruction, runner, memState);
if (opSign == LT && comparedWith > rangeMax) return alwaysTrue(instruction, runner, memState);
if (opSign == LE && comparedWith >= rangeMax) return alwaysTrue(instruction, runner, memState);
if (opSign == LE && comparedWith < rangeMin) return alwaysFalse(instruction, runner, memState);
if (opSign == GT && comparedWith >= rangeMax) return alwaysFalse(instruction, runner, memState);
if (opSign == GT && comparedWith < rangeMin) return alwaysTrue(instruction, runner, memState);
if (opSign == GE && comparedWith <= rangeMin) return alwaysTrue(instruction, runner, memState);
if (opSign == GE && comparedWith > rangeMax) return alwaysFalse(instruction, runner, memState);
Entsprechende Ausgabe: https://youtrack.jetbrains.com/issue/IDEA-146950
scheint ein Fehler in der Implementierung von IntelliJ kein Java Problem. Ich würde empfehlen, dies JetBrains zu melden. –
Ich glaube nicht, dass es einen tiefen Grund gibt. Es muss nur ein Fehler sein, aber es ist ein ziemlich seltsamer. Wenn ich 'int i = 5 mache; if (i <= 2) 'Ich bekomme keine Warnung. –
Wahrscheinlich https://youtrack.jetbrains.com/issue/IDEA-146950 –