diff --git a/java/lang/correctness/eqeq.java b/java/lang/correctness/eqeq.java index 60d14133c6..d9acd01e7d 100644 --- a/java/lang/correctness/eqeq.java +++ b/java/lang/correctness/eqeq.java @@ -21,3 +21,19 @@ void main() { } } } + +class TernaryCondition { + void main() { + BooleanExpression expr = null; + BooleanExpression other = null; + + // ok:eqeq + expr = (expr != null ? expr.and(other) : other); + } +} + +class BooleanExpression { + BooleanExpression and(BooleanExpression other) { + return other; + } +} diff --git a/java/lang/correctness/eqeq.yaml b/java/lang/correctness/eqeq.yaml index 29c2231efd..1f800eae42 100644 --- a/java/lang/correctness/eqeq.yaml +++ b/java/lang/correctness/eqeq.yaml @@ -8,6 +8,10 @@ rules: - pattern: $X == $X - pattern: $X != $X - pattern-not: 1 == 1 + - pattern-not: $X == null + - pattern-not: $X != null + - pattern-not: null == $X + - pattern-not: null != $X message: >- `$X == $X` or `$X != $X` is always true. (Unless the value compared is a float or double).