[FIR IDE] Ensure resolve to CONTRACTS phase in ReturnTypeCalculator

If we want to analyse some function's call, we need to know about its
contracts, otherwise resolving the following code would be broken.
Computing return type of function is a prerequisite to using it in any
sensible way, so it's the best place to resolve it to CONTRACTS

KT-50733
This commit is contained in:
Roman Golyshev
2022-05-27 13:30:19 +04:00
committed by Space
parent e14ac2a062
commit 166c771e1b
59 changed files with 260 additions and 64 deletions
@@ -0,0 +1,26 @@
// SKIP_JAVAC
// This directive is needed to skip this test in LazyBodyIsNotTouchedTilContractsPhaseTestGenerated,
// because it fails to parse module structure of multimodule test
// WITH_STDLIB
// MODULE: lib
package lib
import kotlin.contracts.*
fun requireIsTrue(value: Boolean) contract [
returns() implies value
] {
if (!value) throw IllegalArgumentException()
}
// MODULE: main(lib)
package main
import lib.requireIsTrue
fun test(s: Any) {
requireIsTrue(s is String)
s.length
}