[IC] Add tests for sealed classes (KT-45474)

This commit is contained in:
Andrey Uskov
2022-06-10 16:52:38 +03:00
committed by teamcity
parent 21e762458e
commit 318d955d64
34 changed files with 232 additions and 44 deletions
@@ -0,0 +1,3 @@
package test
open class C : Any()
@@ -0,0 +1,3 @@
package test
open class C : Base
@@ -8,6 +8,7 @@ Marked as dirty by Kotlin:
src/B.kt
src/Base.kt
src/C.kt
src/D.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
@@ -16,22 +17,13 @@ Cleaning output files:
out/production/module/test/B.class
out/production/module/test/Base.class
out/production/module/test/C.class
out/production/module/test/D.class
End of files
Compiling files:
src/A.kt
src/B.kt
src/Base.kt
src/C.kt
End of files
Marked as dirty by Kotlin:
src/D.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/test/D.class
End of files
Compiling files:
src/D.kt
End of files
Exit code: OK
@@ -1,3 +0,0 @@
package test
interface C : Base
@@ -1,5 +0,0 @@
package test
class D {
lateinit var x: Base
}
@@ -0,0 +1,3 @@
package test
interface A : Base
@@ -0,0 +1,3 @@
package test
interface B : Base
@@ -0,0 +1,3 @@
package test
sealed interface Base
@@ -0,0 +1,7 @@
package test
sealed interface Base {
fun doSmth() = "doSmth"
}
@@ -0,0 +1,12 @@
package test
//sealed interface Base
class Usage {
fun doSmth(x: Base) =
when (x) {
is A -> "A"
is B -> "B"
}
}
@@ -0,0 +1 @@
-XXLanguage:+FreedomForSealedClasses -XXLanguage:+SealedInterfaces
@@ -0,0 +1,25 @@
================ Step #1 =================
Compiling files:
src/Base.kt
End of files
Marked as dirty by Kotlin:
src/A.kt
src/B.kt
src/Base.kt
src/Usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/test/A.class
out/production/module/test/B.class
out/production/module/test/Base.class
End of files
Compiling files:
src/A.kt
src/B.kt
src/Base.kt
End of files
Exit code: OK
------------------------------------------
@@ -0,0 +1,3 @@
package test
open class A: Base
@@ -0,0 +1,9 @@
package test
actual class ExpectClass {
actual fun doSmth() = ""
}
expect class ExpectClass2 {
fun doSmth(): String
}
@@ -0,0 +1,5 @@
package test
actual class ExpectClass2 {
actual fun doSmth() = ""
}
@@ -0,0 +1,9 @@
package test
class B : Base {
}
expect class ExpectClass {
fun doSmth(): String
}
@@ -0,0 +1,3 @@
package test
sealed interface Base
@@ -0,0 +1,3 @@
package test
class C : A()
@@ -0,0 +1,3 @@
package test
class Unrelated {}
@@ -0,0 +1 @@
-XXLanguage:+FreedomForSealedClasses -XXLanguage:+SealedInterfaces -Xmulti-platform
@@ -0,0 +1,29 @@
================ Step #1 =================
Compiling files:
src/C.kt
End of files
Marked as dirty by Kotlin:
src/Actual.kt
src/B.kt
src/Base.kt
src/C.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/test/Actual.class
out/production/module/test/B.class
out/production/module/test/Base.class
out/production/module/test/C.class
End of files
Compiling files:
src/Actual.kt
src/Actual2.kt
src/Base.kt
src/A.kt
src/B.kt
src/C.kt
End of files
Exit code: OK
------------------------------------------