Drop support for T!! syntactic structure

^KT-26245 In Progress
This commit is contained in:
Denis.Zharkov
2021-08-09 13:10:42 +03:00
committed by teamcityserver
parent 302eacbf59
commit c1b5d5551f
43 changed files with 2 additions and 902 deletions
@@ -1,14 +0,0 @@
// !LANGUAGE: +DefinitelyNotNullTypeParameters
fun <T> foo(x: T, y: T!!) = x!!
fun main() {
foo<String>("", "").length
foo<String>("", <!NULL_FOR_NONNULL_TYPE!>null<!>).length
foo<String?>(null, "").length
foo<String?>(null, null).length
foo("", "").length
foo("", null).length
foo(null, "").length
}
@@ -1,14 +0,0 @@
// !LANGUAGE: +DefinitelyNotNullTypeParameters
fun <T> foo(x: T, y: T!!) = x!!
fun main() {
foo<String>("", "").length
foo<String>("", <!NULL_FOR_NONNULL_TYPE!>null<!>).length
foo<String?>(null, "").length
foo<String?>(null, <!NULL_FOR_NONNULL_TYPE!>null<!>).length
foo("", "").length
foo("", <!NULL_FOR_NONNULL_TYPE!>null<!>).length
foo(null, "").length
}
@@ -1,4 +0,0 @@
package
public fun </*0*/ T> foo(/*0*/ x: T, /*1*/ y: T!!): T!!
public fun main(): kotlin.Unit
@@ -1,3 +0,0 @@
// !LANGUAGE: -DefinitelyNotNullTypeParameters
fun <T> foo(x: T, y: T!!): List<T!!>? = null
@@ -1,3 +0,0 @@
// !LANGUAGE: -DefinitelyNotNullTypeParameters
fun <T> foo(x: T, y: <!UNSUPPORTED_FEATURE!>T!!<!>): List<<!UNSUPPORTED_FEATURE!>T!!<!>>? = null
@@ -1,4 +0,0 @@
package
public fun </*0*/ T> foo(/*0*/ x: T, /*1*/ y: T): kotlin.collections.List<T>?
@@ -1,33 +0,0 @@
// !LANGUAGE: +DefinitelyNotNullTypeParameters
fun <T> toDefNotNull(s: T): T!! = s!!
fun <K> removeQuestionMark(x: K?): K = x!!
fun Any.foo() {}
fun <E> expectNN(e: E!!) {}
fun <F> main(x: F, y: F, z: F, w: F, m: F) {
val y1 = toDefNotNull(x) // K instead of K!!
val y2: F!! = toDefNotNull(x) // K instead of K!!
val x1 = removeQuestionMark(x) // T or T!!
val x2: F!! = removeQuestionMark(x) // T or T!!
val z1 = x!!
val z2: F!! = y!!
val w1 = if (z != null) z else return
val w2: F!! = if (w != null) w else return
y1<!UNSAFE_CALL!>.<!>foo()
y2<!UNSAFE_CALL!>.<!>foo()
x1.foo()
x2<!UNSAFE_CALL!>.<!>foo()
z1.foo()
z2<!UNSAFE_CALL!>.<!>foo()
w1.foo()
w2<!UNSAFE_CALL!>.<!>foo()
expectNN(m)
expectNN(m!!)
}
@@ -1,33 +0,0 @@
// !LANGUAGE: +DefinitelyNotNullTypeParameters
fun <T> toDefNotNull(s: T): T!! = s!!
fun <K> removeQuestionMark(x: K?): K = x!!
fun Any.foo() {}
fun <E> expectNN(e: E!!) {}
fun <F> main(x: F, y: F, z: F, w: F, m: F) {
val y1 = toDefNotNull(x) // K instead of K!!
val y2: F!! = toDefNotNull(x) // K instead of K!!
val x1 = removeQuestionMark(x) // T or T!!
val x2: F!! = removeQuestionMark(x) // T or T!!
val z1 = x!!
val z2: F!! = y!!
val w1 = if (z != null) <!DEBUG_INFO_SMARTCAST!>z<!> else return
val w2: F!! = if (w != null) <!DEBUG_INFO_SMARTCAST!>w<!> else return
y1.foo()
y2.foo()
x1.foo()
x2.foo()
z1.foo()
z2.foo()
w1.foo()
w2.foo()
expectNN(<!TYPE_MISMATCH!>m<!>)
expectNN(m!!)
}
@@ -1,7 +0,0 @@
package
public fun </*0*/ E> expectNN(/*0*/ e: E!!): kotlin.Unit
public fun </*0*/ F> main(/*0*/ x: F, /*1*/ y: F, /*2*/ z: F, /*3*/ w: F, /*4*/ m: F): kotlin.Unit
public fun </*0*/ K> removeQuestionMark(/*0*/ x: K?): K
public fun </*0*/ T> toDefNotNull(/*0*/ s: T): T!!
public fun kotlin.Any.foo(): kotlin.Unit
@@ -1,16 +0,0 @@
// SKIP_TXT
// !LANGUAGE: -DefinitelyNotNullTypeParameters
fun Any.bar() {}
fun Boolean.baz() {}
var x: Int = 0
inline fun <reified T> foo(v: Any?): T {
if (x > 0) 1 else v as T!!
if (x > 1) 2 else v as? T!!
if (x > 2) 3 else v is T<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
if (x > 3) 4 else v !is T<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
return v as T<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
}
@@ -1,16 +0,0 @@
// SKIP_TXT
// !LANGUAGE: -DefinitelyNotNullTypeParameters
fun Any.bar() {}
fun Boolean.baz() {}
var x: Int = 0
inline fun <reified T> foo(v: Any?): T {
<!DEPRECATED_SYNTAX_WITH_DEFINITELY_NOT_NULL!>if (x > 0) 1 else v as T!!<!>
<!DEPRECATED_SYNTAX_WITH_DEFINITELY_NOT_NULL!>if (x > 1) 2 else v as? T!!<!>
<!DEPRECATED_SYNTAX_WITH_DEFINITELY_NOT_NULL!>if (x > 2) 3 else v is T<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!><!>
<!DEPRECATED_SYNTAX_WITH_DEFINITELY_NOT_NULL!>if (x > 3) 4 else v !is T<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!><!>
<!DEPRECATED_SYNTAX_WITH_DEFINITELY_NOT_NULL!>return v as T<!UNNECESSARY_NOT_NULL_ASSERTION, UNREACHABLE_CODE!>!!<!><!>
}
@@ -1,16 +0,0 @@
// SKIP_TXT
// !LANGUAGE: +DefinitelyNotNullTypeParameters
fun Any.bar() {}
fun Boolean.baz() {}
var x: Int = 0
inline fun <reified T> foo(v: Any?): T {
if (x > 0) 1 else v as T!!
if (x > 1) 2 else v as? T!!
if (x > 2) 3 else v is T<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
if (x > 3) 4 else v !is T<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
return v as T<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
}
@@ -1,16 +0,0 @@
// SKIP_TXT
// !LANGUAGE: +DefinitelyNotNullTypeParameters
fun Any.bar() {}
fun Boolean.baz() {}
var x: Int = 0
inline fun <reified T> foo(v: Any?): T {
<!DEPRECATED_SYNTAX_WITH_DEFINITELY_NOT_NULL!>if (x > 0) 1 else v as T!!<!>
<!DEPRECATED_SYNTAX_WITH_DEFINITELY_NOT_NULL!>if (x > 1) 2 else v as? T!!<!>
<!DEPRECATED_SYNTAX_WITH_DEFINITELY_NOT_NULL!>if (x > 2) 3 else v is T<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!><!>
<!DEPRECATED_SYNTAX_WITH_DEFINITELY_NOT_NULL!>if (x > 3) 4 else v !is T<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!><!>
<!DEPRECATED_SYNTAX_WITH_DEFINITELY_NOT_NULL!>return v as T<!UNNECESSARY_NOT_NULL_ASSERTION, UNREACHABLE_CODE!>!!<!><!>
}
@@ -1,12 +0,0 @@
// !LANGUAGE: +DefinitelyNotNullTypeParameters
fun <T : Any> foo(x: T!!, y: List<String!!>!!) {}
fun <F> bar1(x: F?<!SYNTAX!><!SYNTAX!><!>!!<!><!SYNTAX!>)<!> <!FUNCTION_DECLARATION_WITH_NO_NAME!><!SYNTAX!><!>{}<!>
fun <F> bar2(x: F!!?) {}
fun <F> bar3(x: (F?)<!SYNTAX!><!SYNTAX!><!>!!<!><!SYNTAX!>)<!> <!FUNCTION_DECLARATION_WITH_NO_NAME!><!SYNTAX!><!>{}<!>
fun <F> bar4(x: (F!!)?) {}
fun <F> bar5(x: F!!<!SYNTAX!><!SYNTAX!><!>!<!><!SYNTAX!>)<!> <!FUNCTION_DECLARATION_WITH_NO_NAME!><!SYNTAX!><!>{}<!>
fun <F> bar6(x: F!!<!SYNTAX!><!SYNTAX!><!>!<!><!SYNTAX!>)<!> <!FUNCTION_DECLARATION_WITH_NO_NAME!><!SYNTAX!><!>{}<!>
fun <F> bar7(x: F!!?<!SYNTAX!><!SYNTAX!><!>!!<!><!SYNTAX!>)<!> <!FUNCTION_DECLARATION_WITH_NO_NAME!><!SYNTAX!><!>{}<!>
@@ -1,12 +0,0 @@
// !LANGUAGE: +DefinitelyNotNullTypeParameters
fun <T : Any> foo(x: <!DEFINITELY_NOT_NULLABLE_NOT_APPLICABLE!>T!!<!>, y: <!DEFINITELY_NOT_NULLABLE_NOT_APPLICABLE!>List<<!DEFINITELY_NOT_NULLABLE_NOT_APPLICABLE!>String!!<!>>!!<!>) {}
fun <F> bar1(x: F?<!SYNTAX!><!SYNTAX!><!>!!<!><!SYNTAX!>)<!> <!CONFLICTING_OVERLOADS, FUNCTION_DECLARATION_WITH_NO_NAME!><!SYNTAX!><!>{}<!>
fun <F> bar2(x: <!NULLABLE_ON_DEFINITELY_NOT_NULLABLE!>F!!?<!>) {}
fun <F> bar3(x: (F?)<!SYNTAX!><!SYNTAX!><!>!!<!><!SYNTAX!>)<!> <!CONFLICTING_OVERLOADS, FUNCTION_DECLARATION_WITH_NO_NAME!><!SYNTAX!><!>{}<!>
fun <F> bar4(x: <!NULLABLE_ON_DEFINITELY_NOT_NULLABLE!>(F!!)?<!>) {}
fun <F> bar5(x: F!!<!SYNTAX!><!SYNTAX!><!>!<!><!SYNTAX!>)<!> <!CONFLICTING_OVERLOADS, FUNCTION_DECLARATION_WITH_NO_NAME!><!SYNTAX!><!>{}<!>
fun <F> bar6(x: F!!<!SYNTAX!><!SYNTAX!><!>!<!><!SYNTAX!>)<!> <!CONFLICTING_OVERLOADS, FUNCTION_DECLARATION_WITH_NO_NAME!><!SYNTAX!><!>{}<!>
fun <F> bar7(x: <!NULLABLE_ON_DEFINITELY_NOT_NULLABLE!>F!!?<!><!SYNTAX!><!SYNTAX!><!>!!<!><!SYNTAX!>)<!> <!CONFLICTING_OVERLOADS, FUNCTION_DECLARATION_WITH_NO_NAME!><!SYNTAX!><!>{}<!>
@@ -1,16 +0,0 @@
package
public fun <no name provided>(): kotlin.Unit
public fun <no name provided>(): kotlin.Unit
public fun <no name provided>(): kotlin.Unit
public fun <no name provided>(): kotlin.Unit
public fun <no name provided>(): kotlin.Unit
public fun </*0*/ F> bar1(/*0*/ x: F?): kotlin.Unit
public fun </*0*/ F> bar2(/*0*/ x: F?): kotlin.Unit
public fun </*0*/ F> bar3(/*0*/ x: F?): kotlin.Unit
public fun </*0*/ F> bar4(/*0*/ x: F?): kotlin.Unit
public fun </*0*/ F> bar5(/*0*/ x: F!!): kotlin.Unit
public fun </*0*/ F> bar6(/*0*/ x: F!!): kotlin.Unit
public fun </*0*/ F> bar7(/*0*/ x: F?): kotlin.Unit
public fun </*0*/ T : kotlin.Any> foo(/*0*/ x: T, /*1*/ y: kotlin.collections.List<kotlin.String>): kotlin.Unit
@@ -1,36 +0,0 @@
// !LANGUAGE: +DefinitelyNotNullTypeParameters
interface A<T> {
fun foo(x: T): T
fun bar(x: T!!): T!!
}
interface B<T1> : A<T1> {
override fun foo(x: T1): T1
override fun bar(x: T1!!): T1!!
}
interface C<T2> : A<T2> {
override fun foo(x: T2!!): T2!!
override fun bar(x: T2): T2
}
interface D : A<String?> {
override fun foo(x: String?): String?
<!NOTHING_TO_OVERRIDE!>override<!> fun bar(x: String): String
}
interface E : A<String> {
override fun foo(x: String): String
override fun bar(x: String): String
}
interface F : A<String?> {
<!NOTHING_TO_OVERRIDE!>override<!> fun foo(x: String): String
override fun bar(x: String?): String?
}
interface G<T3 : Any> : A<T3> {
override fun foo(x: T3): T3
override fun bar(x: T3): T3
}
@@ -1,36 +0,0 @@
// !LANGUAGE: +DefinitelyNotNullTypeParameters
interface A<T> {
fun foo(x: T): T
fun bar(x: T!!): T!!
}
interface B<T1> : A<T1> {
override fun foo(x: T1): T1
override fun bar(x: T1!!): T1!!
}
interface C<T2> : A<T2> {
<!NOTHING_TO_OVERRIDE!>override<!> fun foo(x: T2!!): T2!!
<!NOTHING_TO_OVERRIDE!>override<!> fun bar(x: T2): T2
}
interface D : A<String?> {
override fun foo(x: String?): String?
override fun bar(x: String): String
}
interface E : A<String> {
override fun foo(x: String): String
override fun bar(x: String): String
}
interface F : A<String?> {
<!NOTHING_TO_OVERRIDE!>override<!> fun foo(x: String): String
<!NOTHING_TO_OVERRIDE!>override<!> fun bar(x: String?): String?
}
interface G<T3 : Any> : A<T3> {
override fun foo(x: T3): T3
override fun bar(x: T3): T3
}
@@ -1,61 +0,0 @@
package
public interface A</*0*/ T> {
public abstract fun bar(/*0*/ x: T!!): T!!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract fun foo(/*0*/ x: T): T
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface B</*0*/ T1> : A<T1> {
public abstract override /*1*/ fun bar(/*0*/ x: T1!!): T1!!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract override /*1*/ fun foo(/*0*/ x: T1): T1
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface C</*0*/ T2> : A<T2> {
public abstract fun bar(/*0*/ x: T2): T2
public abstract override /*1*/ /*fake_override*/ fun bar(/*0*/ x: T2!!): T2!!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ x: T2): T2
public abstract fun foo(/*0*/ x: T2!!): T2!!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface D : A<kotlin.String?> {
public abstract override /*1*/ fun bar(/*0*/ x: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract override /*1*/ fun foo(/*0*/ x: kotlin.String?): kotlin.String?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface E : A<kotlin.String> {
public abstract override /*1*/ fun bar(/*0*/ x: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract override /*1*/ fun foo(/*0*/ x: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface F : A<kotlin.String?> {
public abstract override /*1*/ /*fake_override*/ fun bar(/*0*/ x: kotlin.String): kotlin.String
public abstract fun bar(/*0*/ x: kotlin.String?): kotlin.String?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract fun foo(/*0*/ x: kotlin.String): kotlin.String
public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ x: kotlin.String?): kotlin.String?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface G</*0*/ T3 : kotlin.Any> : A<T3> {
public abstract override /*1*/ fun bar(/*0*/ x: T3): T3
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract override /*1*/ fun foo(/*0*/ x: T3): T3
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,42 +0,0 @@
// !LANGUAGE: +DefinitelyNotNullTypeParameters +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
// FILE: A.java
import org.jetbrains.annotations.*;
public interface A<T> {
public T foo(T x) { return x; }
@NotNull
public T bar(@NotNull T x) {}
}
// FILE: main.kt
interface B<T1> : A<T1> {
override fun foo(x: T1): T1
override fun bar(x: T1!!): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>T1!!<!>
}
interface C<T2> : A<T2> {
override fun foo(x: T2!!): T2!!
override fun bar(x: T2): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>T2<!>
}
interface D : A<String?> {
override fun foo(x: String?): String?
override fun bar(x: String): String
}
interface E : A<String> {
override fun foo(x: String): String
override fun bar(x: String): String
}
interface F : A<String?> {
<!NOTHING_TO_OVERRIDE!>override<!> fun foo(x: String): String
<!NOTHING_TO_OVERRIDE!>override<!> fun bar(x: String?): String?
}
interface G<T3 : Any> : A<T3> {
override fun foo(x: T3): T3
override fun bar(x: T3): T3
}
@@ -1,42 +0,0 @@
// !LANGUAGE: +DefinitelyNotNullTypeParameters +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
// FILE: A.java
import org.jetbrains.annotations.*;
public interface A<T> {
public T foo(T x) { return x; }
@NotNull
public T bar(@NotNull T x) {}
}
// FILE: main.kt
interface B<T1> : A<T1> {
override fun foo(x: T1): T1
override fun bar(x: T1!!): T1!!
}
interface C<T2> : A<T2> {
<!NOTHING_TO_OVERRIDE!>override<!> fun foo(x: T2!!): T2!!
<!NOTHING_TO_OVERRIDE!>override<!> fun bar(x: T2): T2
}
interface D : A<String?> {
override fun foo(x: String?): String?
override fun bar(x: String): String
}
interface E : A<String> {
override fun foo(x: String): String
override fun bar(x: String): String
}
interface F : A<String?> {
<!NOTHING_TO_OVERRIDE!>override<!> fun foo(x: String): String
<!NOTHING_TO_OVERRIDE!>override<!> fun bar(x: String?): String?
}
interface G<T3 : Any> : A<T3> {
override fun foo(x: T3): T3
override fun bar(x: T3): T3
}
@@ -1,61 +0,0 @@
package
public interface A</*0*/ T : kotlin.Any!> {
@org.jetbrains.annotations.NotNull public abstract fun bar(/*0*/ @org.jetbrains.annotations.NotNull x: T!!): T!!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract fun foo(/*0*/ x: T!): T!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface B</*0*/ T1> : A<T1> {
public abstract override /*1*/ fun bar(/*0*/ x: T1!!): T1!!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract override /*1*/ fun foo(/*0*/ x: T1): T1
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface C</*0*/ T2> : A<T2> {
public abstract fun bar(/*0*/ x: T2): T2
@org.jetbrains.annotations.NotNull public abstract override /*1*/ /*fake_override*/ fun bar(/*0*/ @org.jetbrains.annotations.NotNull x: T2!!): T2!!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ x: T2!): T2!
public abstract fun foo(/*0*/ x: T2!!): T2!!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface D : A<kotlin.String?> {
public abstract override /*1*/ fun bar(/*0*/ x: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract override /*1*/ fun foo(/*0*/ x: kotlin.String?): kotlin.String?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface E : A<kotlin.String> {
public abstract override /*1*/ fun bar(/*0*/ x: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract override /*1*/ fun foo(/*0*/ x: kotlin.String): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface F : A<kotlin.String?> {
@org.jetbrains.annotations.NotNull public abstract override /*1*/ /*fake_override*/ fun bar(/*0*/ @org.jetbrains.annotations.NotNull x: kotlin.String): kotlin.String
public abstract fun bar(/*0*/ x: kotlin.String?): kotlin.String?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract fun foo(/*0*/ x: kotlin.String): kotlin.String
public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ x: kotlin.String?): kotlin.String?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface G</*0*/ T3 : kotlin.Any> : A<T3> {
public abstract override /*1*/ fun bar(/*0*/ x: T3): T3
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract override /*1*/ fun foo(/*0*/ x: T3): T3
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,14 +0,0 @@
// !LANGUAGE: +DefinitelyNotNullTypeParameters
fun <T> foo(x: T, y: T!!): T!! = x ?: y
fun main() {
foo<String>("", "").length
foo<String>("", <!NULL_FOR_NONNULL_TYPE!>null<!>).length
foo<String?>(null, "")<!UNSAFE_CALL!>.<!>length
foo<String?>(null, null)<!UNSAFE_CALL!>.<!>length
foo("", "").length
foo("", null)<!UNSAFE_CALL!>.<!>length
foo(null, "")<!UNSAFE_CALL!>.<!>length
}
@@ -1,14 +0,0 @@
// !LANGUAGE: +DefinitelyNotNullTypeParameters
fun <T> foo(x: T, y: T!!): T!! = x ?: y
fun main() {
foo<String>("", "").length
foo<String>("", <!NULL_FOR_NONNULL_TYPE!>null<!>).length
foo<String?>(null, "").length
foo<String?>(null, <!NULL_FOR_NONNULL_TYPE!>null<!>).length
foo("", "").length
foo("", <!NULL_FOR_NONNULL_TYPE!>null<!>).length
foo(null, "").length
}
@@ -1,4 +0,0 @@
package
public fun </*0*/ T> foo(/*0*/ x: T, /*1*/ y: T!!): T!!
public fun main(): kotlin.Unit