Intersection types are no more allowed in signatures #KT-10244 Fixed

This commit is contained in:
Mikhail Glukhikh
2015-12-22 19:46:09 +03:00
parent f56dc722d9
commit 6b8b39a7bd
8 changed files with 82 additions and 3 deletions
@@ -0,0 +1,23 @@
// See KT-10244: no intersection types in signatures
open class B
interface A
interface C
// Error!
fun <!IMPLICIT_INTERSECTION_TYPE!>foo<!>(b: B) = if (b is A && b is C) b else null
// Ok: given explicitly
fun gav(b: B): A? = if (b is A && b is C) <!DEBUG_INFO_SMARTCAST!>b<!> else null
class My(b: B) {
// Error!
val <!IMPLICIT_INTERSECTION_TYPE!>x<!> = if (b is A && b is C) b else null
// Ok: given explicitly
val y: C? = if (b is A && b is C) <!DEBUG_INFO_SMARTCAST!>b<!> else null
}
fun bar(b: B): String {
// Ok: local variable
val tmp = if (b is A && b is C) b else null
return tmp.toString()
}