Files
kotlin-fork/idea/testData/resolve/partialBodyResolve/ContractFromBinary.completion
T
Dmitry Savvinov f90b29c2e3 Support contracts in PartialBodyResolveFilter
Previously, PartialBodyResolveFilter didn't know about contracts and was
filtering out calls of such functions, leading to unstable completion in
cases like that:

fun test(x: Any?) {
    require(x is String)
    x.<caret>
}

However, PartialBodyResolveFilter works by pure PSI, while to determine
if function has a contract we have to resolve it.

To solve it, we do something very similar to what has been done with
Nothin-returning functions: introduce
KotlinProbablyContractedFunctionShortNameIndex, which collects all
function which *may* have a contract during indexing.

^KT-25275 Fixed
2018-07-27 16:59:24 +03:00

18 lines
492 B
Plaintext
Vendored

Resolve target: value-parameter x: kotlin.Any? smart-cast to kotlin.String
----------------------------------------------
// COMPILER_ARGUMENTS: -XXLanguage:+ReadDeserializedContracts -XXLanguage:+UseReturnsEffect
package test
fun irrelevantConsume(y: Any?) {}
fun testContractFromBinaryDependency(x: Any?, y: Any?) {
require(x is String)
require(y is String)
/* STATEMENT DELETED: irrelevantConsume(x) */
<caret>x.length
/* STATEMENT DELETED: require(x is Int) */
}