don't report unnecessary smart cast on receiver
This commit is contained in:
+2
-1
@@ -35,8 +35,9 @@ public class AutoCastServiceImpl implements AutoCastService {
|
||||
@NotNull
|
||||
@Override
|
||||
public List<ReceiverValue> getVariantsForReceiver(@NotNull ReceiverValue receiverValue) {
|
||||
List<ReceiverValue> variants = Lists.newArrayList(AutoCastUtils.getAutoCastVariants(bindingContext, dataFlowInfo, receiverValue));
|
||||
List<ReceiverValue> variants = Lists.newArrayList();
|
||||
variants.add(receiverValue);
|
||||
variants.addAll(AutoCastUtils.getAutoCastVariants(bindingContext, dataFlowInfo, receiverValue));
|
||||
return variants;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package d
|
||||
|
||||
fun bar(a: Any?) {
|
||||
if (a != null) {
|
||||
<!DEBUG_INFO_AUTOCAST!>a<!>.foo() //overload resolution ambiguity
|
||||
<!DEBUG_INFO_AUTOCAST!>a<!>.sure() //overload resolution ambiguity
|
||||
a.foo() //overload resolution ambiguity
|
||||
a.sure() //overload resolution ambiguity
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -183,7 +183,7 @@ fun returnFunctionLiteral(a: Any?): Function0<Int> =
|
||||
fun mergeAutocasts(a: Any?) {
|
||||
if (a is String || a is Int) {
|
||||
a.<!UNRESOLVED_REFERENCE!>compareTo<!>("")
|
||||
<!DEBUG_INFO_AUTOCAST!>a<!>.toString()
|
||||
a.toString()
|
||||
}
|
||||
if (a is Int || a is String) {
|
||||
a.<!UNRESOLVED_REFERENCE!>compareTo<!>("")
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
fun Any?.foo() {}
|
||||
|
||||
fun test(a: Any?) {
|
||||
if (a != null) {
|
||||
a.foo()
|
||||
}
|
||||
}
|
||||
@@ -6173,6 +6173,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage
|
||||
doTest("compiler/testData/diagnostics/tests/smartCasts/noErrorCheckForPackageLevelVal.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("noUnnecessarySmartCastForReceiver.kt")
|
||||
public void testNoUnnecessarySmartCastForReceiver() throws Exception {
|
||||
doTest("compiler/testData/diagnostics/tests/smartCasts/noUnnecessarySmartCastForReceiver.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("thisWithLabel.kt")
|
||||
public void testThisWithLabel() throws Exception {
|
||||
doTest("compiler/testData/diagnostics/tests/smartCasts/thisWithLabel.kt");
|
||||
|
||||
Reference in New Issue
Block a user