[PSI2IR] Propagate smart cast information for variable loads.
This gives us more precise type information and can enable backend optimizations. This was motivated by when expressions not compiled to table switches in the JVM_IR backend. Fixed KT-36845.
This commit is contained in:
@@ -26,7 +26,7 @@ fun test4(a: Any) {
|
||||
|
||||
fun test5(a: Any) {
|
||||
a as Function1<String, String> /*~> Unit */
|
||||
bar<@FlexibleNullability String?>(j = a /*as Function1<@ParameterName(name = "x") @FlexibleNullability String?, @FlexibleNullability String?> */ /*-> @FlexibleNullability J<@FlexibleNullability String?>? */)
|
||||
bar<@FlexibleNullability String?>(j = a /*as Function1<String, String> */ /*-> @FlexibleNullability J<@FlexibleNullability String?>? */)
|
||||
}
|
||||
|
||||
fun <T : Any?> test6(a: Function1<T, T>) {
|
||||
@@ -35,7 +35,7 @@ fun <T : Any?> test6(a: Function1<T, T>) {
|
||||
|
||||
fun <T : Any?> test7(a: Any) {
|
||||
a as Function1<T, T> /*~> Unit */
|
||||
bar<@FlexibleNullability T?>(j = a /*as Function1<@ParameterName(name = "x") @FlexibleNullability T?, @FlexibleNullability T?> */ /*-> @FlexibleNullability J<@FlexibleNullability T?>? */)
|
||||
bar<@FlexibleNullability T?>(j = a /*as Function1<T, T> */ /*-> @FlexibleNullability J<@FlexibleNullability T?>? */)
|
||||
}
|
||||
|
||||
fun test8(efn: @ExtensionFunctionType Function1<String, String>): J<@FlexibleNullability String?> {
|
||||
|
||||
Reference in New Issue
Block a user