// FIR_COMPARISON interface A { fun foo() } interface B : A { fun bar() } interface C interface D : A fun test(a: A?) { if (a != null && a is B?) { a.bar() } if (a is B && a is C) { a.foo() } if (a is B? && a is C?) { a?.bar() } a?.foo() if (a is B? && a is C?) { a?.foo() } if (a is B && a is D) { //when it's resolved, the message should be 'Smart cast to A' a.foo } }