提交 0e70e3f8 编写于 作者: M Mikhail Glukhikh

USELESS_ELVIS_RIGHT_IS_NULL is no more reported for flexible left argument #KT-13593 Fixed

上级 8d16bd12
......@@ -1284,7 +1284,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
if (leftType != null && isKnownToBeNotNull(left, leftType, context)) {
context.trace.report(USELESS_ELVIS.on(expression, leftType));
}
else if (KtPsiUtil.isNullConstant(right)) {
else if (KtPsiUtil.isNullConstant(right) && leftType != null && !FlexibleTypesKt.isNullabilityFlexible(leftType)) {
context.trace.report(USELESS_ELVIS_RIGHT_IS_NULL.on(expression));
}
KotlinTypeInfo rightTypeInfo = BindingContextUtils.getRecordedTypeInfo(right, context.trace.getBindingContext());
......
......@@ -9,11 +9,30 @@ public class J {
public static J staticN;
}
// FILE: JJ.java
public class JJ {
public static JJ staticNN;
}
// FILE: JJJ.java
import org.jetbrains.annotations.*;
public class JJJ {
@NotNull
public static JJJ staticNNN;
}
// FILE: k.kt
fun test() {
val a = J.staticN <!USELESS_ELVIS_RIGHT_IS_NULL!>?: null<!>
foo(a)
val b = JJ.staticNN ?: null
foo(b)
val c = JJJ.staticNNN <!USELESS_ELVIS!>?: null<!>
foo(c)
}
fun foo(a: Any?) {
......
......@@ -12,3 +12,23 @@ public open class J {
// Static members
@org.jetbrains.annotations.Nullable public final var staticN: J?
}
public open class JJ {
public constructor JJ()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final var staticNN: JJ!
}
public open class JJJ {
public constructor JJJ()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
@org.jetbrains.annotations.NotNull public final var staticNNN: JJJ
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册