Graying members from smart cast receiver types that require explicit receiver cast

+ changed immediate member criteria (override member is not counted as immediate anymore)
+ fixed a bug in graying members
This commit is contained in:
Valentin Kipyatkov
2015-08-12 21:51:24 +03:00
parent b21226ac1c
commit 9e26d0eacf
15 changed files with 87 additions and 47 deletions
@@ -13,4 +13,4 @@ fun foo(o: Any?) {
// EXIST: { lookupString: "forNullableAny", attributes: "" }
// EXIST: { lookupString: "forString", attributes: "bold" }
// EXIST: { lookupString: "forAny", attributes: "" }
// EXIST: { lookupString: "compareTo", attributes: "bold" }
// EXIST: { lookupString: "compareTo", attributes: "" }
@@ -0,0 +1,11 @@
fun String.forString(){}
fun globalFun(){}
fun String?.foo() {
<caret>
}
// EXIST: { lookupString: "globalFun", attributes: "" }
// EXIST: { lookupString: "compareTo", attributes: "grayed" }
// EXIST: { lookupString: "forString", attributes: "grayed" }
@@ -0,0 +1,15 @@
fun String.forString(){}
fun Any.forAny(){}
fun <T> T.forT() {}
fun f(pair: Pair<out Any, out Any>) {
if (pair.first !is String) return
pair.first.<caret>
}
// EXIST: { lookupString: "length", attributes: "grayed" }
// EXIST: { lookupString: "hashCode", attributes: "bold" }
// EXIST: { lookupString: "forString", attributes: "grayed" }
// EXIST: { lookupString: "forAny", attributes: "bold" }
// EXIST: { lookupString: "forT", attributes: "bold" }
@@ -11,4 +11,4 @@ fun foo(s: String?) {
// EXIST: { lookupString: "forNullableAny", attributes: "" }
// EXIST: { lookupString: "forString", attributes: "bold" }
// EXIST: { lookupString: "forAny", attributes: "" }
// EXIST: { lookupString: "compareTo", attributes: "bold" }
// EXIST: { lookupString: "compareTo", attributes: "" }
@@ -16,7 +16,7 @@ fun foo(d: Derived) {
d.<caret>
}
// EXIST: { itemText: "fromTrait", attributes: "bold" }
// EXIST: { itemText: "fromTrait", attributes: "" }
// EXIST: { itemText: "fromDerived", attributes: "bold" }
// EXIST: { itemText: "fromBase", attributes: "" }
// EXIST: { itemText: "hashCode", attributes: "" }
@@ -18,7 +18,7 @@ fun foo(o: Any) {
}
}
// EXIST: { itemText: "fromTrait", attributes: "bold" }
// EXIST: { itemText: "fromTrait", attributes: "" }
// EXIST: { itemText: "fromDerived", attributes: "bold" }
// EXIST: { itemText: "fromBase", attributes: "" }
// EXIST: { itemText: "hashCode", attributes: "" }
@@ -11,6 +11,6 @@ fun foo(b: B) {
b.<caret>
}
// EXIST: { itemText: "foo1", attributes: "bold" }
// EXIST: { itemText: "foo1", attributes: "" }
// EXIST: { itemText: "foo2", attributes: "" }
// EXIST: { itemText: "equals", attributes: "" }
@@ -19,7 +19,7 @@ class Derived : Base() {
}
// EXIST: { itemText: "foo", attributes: "bold" }
// EXIST: { itemText: "fromTrait", attributes: "bold" }
// EXIST: { itemText: "fromTrait", attributes: "" }
// EXIST: { itemText: "fromDerived", attributes: "bold" }
// EXIST: { itemText: "fromBase", attributes: "" }
// EXIST: { itemText: "hashCode", attributes: "" }
@@ -11,4 +11,4 @@ class C {
// EXIST: { itemText: "extFunForString", attributes: "bold" }
// EXIST: { itemText: "extFunForAny", attributes: "" }
// EXIST: { itemText: "extFunForStringNullable", attributes: "bold" }
// EXIST: { itemText: "charAt", attributes: "bold" }
// EXIST: { itemText: "charAt", attributes: "" }