[FIR] Fix enhancement of FlexibleNullability and EnhancedNullability
- Add utilities to add new attribute to ConeAttributes
- Get rid of FlexibleNullability attribute (it can be easily inferred
for any flexible type at any moment)
- Fix determining of EnhancedNullability attribute
This commit is contained in:
+17
-16
@@ -1,51 +1,52 @@
|
||||
fun test1(): J<String?> {
|
||||
return local fun <anonymous>(x: String?): String? {
|
||||
fun test1(): J<@FlexibleNullability String?> {
|
||||
return local fun <anonymous>(x: @FlexibleNullability String?): @FlexibleNullability String? {
|
||||
return x
|
||||
}
|
||||
/*-> J<String?> */
|
||||
/*-> J<@FlexibleNullability String?> */
|
||||
}
|
||||
|
||||
fun test2(): J<String?> {
|
||||
return local fun <anonymous>(x: String): String? {
|
||||
fun test2(): J<@FlexibleNullability String?> {
|
||||
return local fun <anonymous>(x: String): @FlexibleNullability String? {
|
||||
return x
|
||||
}
|
||||
/*-> J<String?> */
|
||||
/*-> J<@FlexibleNullability String?> */
|
||||
}
|
||||
|
||||
fun test3() {
|
||||
return bar<String?>(j = local fun <anonymous>(x: String): String? {
|
||||
return bar<@FlexibleNullability String?>(j = local fun <anonymous>(x: String): @FlexibleNullability String? {
|
||||
return x
|
||||
}
|
||||
/*-> J<String?>? */)
|
||||
/*-> @FlexibleNullability J<@FlexibleNullability String?>? */)
|
||||
}
|
||||
|
||||
fun test4(a: Any) {
|
||||
a as J<String> /*~> Unit */
|
||||
bar<String?>(j = a /*as J<String> */)
|
||||
bar<@FlexibleNullability String?>(j = a /*as J<String> */)
|
||||
}
|
||||
|
||||
fun test5(a: Any) {
|
||||
a as Function1<String, String> /*~> Unit */
|
||||
bar<String?>(j = a /*as Function1<String, String> */ /*-> J<String?>? */)
|
||||
bar<@FlexibleNullability String?>(j = a /*as Function1<String, String> */ /*-> @FlexibleNullability J<@FlexibleNullability String?>? */)
|
||||
}
|
||||
|
||||
fun <T : Any?> test6(a: Function1<T, T>) {
|
||||
bar<T?>(j = a /*-> J<T?>? */)
|
||||
bar<@FlexibleNullability T?>(j = a /*-> @FlexibleNullability J<@FlexibleNullability T?>? */)
|
||||
}
|
||||
|
||||
fun <T : Any?> test7(a: Any) {
|
||||
a as Function1<T, T> /*~> Unit */
|
||||
bar<T?>(j = a /*as Function1<T, T> */ /*-> J<T?>? */)
|
||||
bar<@FlexibleNullability T?>(j = a /*as Function1<T, T> */ /*-> @FlexibleNullability J<@FlexibleNullability T?>? */)
|
||||
}
|
||||
|
||||
fun test8(efn: @ExtensionFunctionType Function1<String, String>): J<String?> {
|
||||
return efn /*-> J<String?> */
|
||||
fun test8(efn: @ExtensionFunctionType Function1<String, String>): J<@FlexibleNullability String?> {
|
||||
return efn /*-> J<@FlexibleNullability String?> */
|
||||
}
|
||||
|
||||
fun test9(efn: @ExtensionFunctionType Function1<String, String>) {
|
||||
bar<String?>(j = efn /*-> J<String?>? */)
|
||||
bar<@FlexibleNullability String?>(j = efn /*-> @FlexibleNullability J<@FlexibleNullability String?>? */)
|
||||
}
|
||||
|
||||
fun test10(fn: Function1<Int, String>) {
|
||||
bar2x<Int?>(j2x = fn /*-> J2X<Int?>? */)
|
||||
bar2x<@FlexibleNullability Int?>(j2x = fn /*-> @FlexibleNullability J2X<@FlexibleNullability Int?>? */)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user