// !LANGUAGE: +ExpectedTypeFromCast // !DIAGNOSTICS: -UNUSED_VARIABLE -DEBUG_INFO_LEAKING_THIS // FILE: a/View.java package a; public class View { } // FILE: a/Test.java package a; public class Test { public T findViewById(int id); } // FILE: 1.kt package a class X : View() class Y : View() val xExplicit: X = Test().findViewById(0) val xCast = Test().findViewById(0) as X val xCastExplicitType = Test().findViewById(0) as X val xSafeCastExplicitType = Test().findViewById(0) as? X val yExplicit: Y = Test().findViewById(0) val yCast = Test().findViewById(0) as Y class TestChild : Test() { val xExplicit: X = findViewById(0) val xCast = findViewById(0) as X val yExplicit: Y = findViewById(0) val yCast = findViewById(0) as Y } fun test(t: Test) { val xExplicit: X = t.findViewById(0) val xCast = t.findViewById(0) as X val yExplicit: Y = t.findViewById(0) val yCast = t.findViewById(0) as Y } fun test2(t: Test?) { val xSafeCallSafeCast = t?.findViewById(0) as? X val xSafeCallSafeCastExplicitType = t?.findViewById(0) as? X val xSafeCallCast = t?.findViewById(0) as X val xSafeCallCastExplicitType = t?.findViewById(0) as X }